Merge branch 'main' of http://gitea.schoenenberger.de/mistangl/plant2dxf
This commit is contained in:
+692
-54
@@ -283,6 +283,12 @@ def handle_standard(msp, blocknames, teileid, x, y, lib_doc, doc, verbose):
|
|||||||
|
|
||||||
def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config):
|
def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config):
|
||||||
#Vorbereitung der attributen
|
#Vorbereitung der attributen
|
||||||
|
if "6-SP" not in doc.layers:
|
||||||
|
doc.layers.add(name="6-SP", color=3)
|
||||||
|
verbunden_am_einen = False
|
||||||
|
|
||||||
|
am_kreisel = 0
|
||||||
|
richtung2 ="DEFAULT"
|
||||||
unterschiedlich = False
|
unterschiedlich = False
|
||||||
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
|
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
|
||||||
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
|
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
|
||||||
@@ -293,6 +299,194 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
if teileid == nachbarn.get("Id"):
|
if teileid == nachbarn.get("Id"):
|
||||||
gefaellestrecke_nachbarn = nachbarn
|
gefaellestrecke_nachbarn = nachbarn
|
||||||
break
|
break
|
||||||
|
if "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" not in gefaellestrecke_nachbarn:
|
||||||
|
drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
|
||||||
|
x0_kreisel = float(gefaellestrecke_nachbarn.get("x0"))
|
||||||
|
y0_kreisel = float(gefaellestrecke_nachbarn.get("y0"))
|
||||||
|
hoehe0 = float(gefaellestrecke_nachbarn.get("Hoehe0"))
|
||||||
|
richtung0 = float(gefaellestrecke_nachbarn.get("rotation0"))
|
||||||
|
richtung_rad0= math.radians(richtung0)
|
||||||
|
abstand0 = float(gefaellestrecke_nachbarn.get("abstand0")) * 1000
|
||||||
|
laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
|
||||||
|
try:
|
||||||
|
laenge = float(laenge_m) * 1000 # Meter → mm
|
||||||
|
except ValueError:
|
||||||
|
laenge = 10000
|
||||||
|
halbabstand0 = abstand0 / 2
|
||||||
|
dx0 = halbabstand0 * math.cos(richtung_rad0)
|
||||||
|
dy0 = halbabstand0 * math.sin(richtung_rad0)
|
||||||
|
pos0_0_floor= (math.floor(x0_kreisel + dx0),math.floor( y0_kreisel + dy0),hoehe0)
|
||||||
|
pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0), hoehe0)
|
||||||
|
pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0),hoehe0)
|
||||||
|
pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0), hoehe0)
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
winkel = math.radians(float(merkmale.get("Drehung")))
|
||||||
|
dx = halbe_laenge *math.sin(winkel * -1)
|
||||||
|
dy = halbe_laenge * math.cos(winkel)
|
||||||
|
|
||||||
|
|
||||||
|
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||||
|
hoehe2 = upper_hoehe_gefaehlle
|
||||||
|
upper_hoehe_gefaehlle = lower_hoehe_gefaehlle
|
||||||
|
lower_hoehe_gefaehlle = hoehe2
|
||||||
|
|
||||||
|
|
||||||
|
if upper_hoehe_gefaehlle == hoehe0:
|
||||||
|
hight = "higher"
|
||||||
|
if richtung0 == 90.0 or richtung0 ==270:
|
||||||
|
richtung0= "Vertikal"
|
||||||
|
if x0_kreisel < x:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
gefaelle = "links"
|
||||||
|
else:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
gefaelle = "rechts"
|
||||||
|
else:
|
||||||
|
richtung0 = "Horinzontal"
|
||||||
|
if y0_kreisel < y:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
gefaelle = "links"
|
||||||
|
gefaelle = "unten"
|
||||||
|
else:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
gefaelle = "links"
|
||||||
|
gefaelle = "oben"
|
||||||
|
else:
|
||||||
|
hight = "lower"
|
||||||
|
if richtung0 == 90.0 or richtung0 ==270:
|
||||||
|
richtung0= "Vertikal"
|
||||||
|
if x0_kreisel < x:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
gefaelle = "rechts"
|
||||||
|
else:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
gefaelle = "links"
|
||||||
|
else:
|
||||||
|
richtung0 = "Horinzontal"
|
||||||
|
if y0_kreisel < y:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
|
gefaelle = "links"
|
||||||
|
gefaelle = "oben"
|
||||||
|
else:
|
||||||
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
|
||||||
|
ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
|
||||||
|
gefaelle = "links"
|
||||||
|
gefaelle = "unten"
|
||||||
|
abstand_fuer_kreis_start_x_floor = start_floor[0] +RADIUS, start_floor[1]
|
||||||
|
abstand_gegen_kreis_start_x_floor = start_floor[0] -RADIUS, start_floor[1]
|
||||||
|
abstand_fuer_kreis_start_y_floor = start_floor[0], start_floor[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_start_y_floor = start_floor[0], start_floor[1] - RADIUS
|
||||||
|
abstand_fuer_kreis_ende_x_floor= ende_floor[0] + RADIUS, ende_floor[1]
|
||||||
|
abstand_gegen_kreis_ende_x_floor= ende_floor[0] - RADIUS, ende_floor[1]
|
||||||
|
abstand_fuer_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] - RADIUS
|
||||||
|
|
||||||
|
abstand_fuer_kreis_start_x_round= start_round[0] +RADIUS, start_round[1]
|
||||||
|
abstand_gegen_kreis_start_x_round = start_round[0] -RADIUS, start_round[1]
|
||||||
|
abstand_fuer_kreis_start_y_round = start_round[0], start_round[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_start_y_round = start_round[0], start_round[1] - RADIUS
|
||||||
|
abstand_fuer_kreis_ende_x_round= ende_round[0] + RADIUS, ende_round[1]
|
||||||
|
abstand_gegen_kreis_ende_x_round= ende_round[0] - RADIUS, ende_round[1]
|
||||||
|
abstand_fuer_kreis_ende_y_round = ende_round[0] , ende_round[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_ende_y_round = ende_round[0] , ende_round[1] - RADIUS
|
||||||
|
|
||||||
|
|
||||||
|
if( (abstand_fuer_kreis_start_x_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_start_x_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_start_x_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_start_x_floor == pos0_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_x_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_x_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_x_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_x_floor == pos0_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_y_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos0_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_x_round == pos0_0_round )or
|
||||||
|
( abstand_fuer_kreis_start_x_round == pos0_1_round) or
|
||||||
|
( abstand_gegen_kreis_start_x_round == pos0_0_round) or
|
||||||
|
( abstand_gegen_kreis_start_x_round == pos0_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_x_round == pos0_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_x_round== pos0_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_x_round == pos0_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_x_round == pos0_1_round) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos0_0_round)or
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos0_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_y_round == pos0_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_y_round == pos0_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos0_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos0_1_round)
|
||||||
|
):
|
||||||
|
kreisel_verbunden = kreisel_verbunden +1
|
||||||
|
# setzung auf kreisel 1 für spätere ausrechnung der geraden form
|
||||||
|
am_kreisel = 1
|
||||||
|
start = x +dx, y + dy,start_floor[2]
|
||||||
|
ende = x -dx, y - dy,ende_floor[2]
|
||||||
|
line =msp.add_line(start,ende)
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
verbunden_am_einen = True
|
||||||
|
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{drehung0}_{gefaelle}_{verbunden_am_einen}_{hight}"
|
||||||
|
if gefaelle == "oben":
|
||||||
|
rotation = 0
|
||||||
|
elif gefaelle == "unten" :
|
||||||
|
rotation = 180
|
||||||
|
elif gefaelle == "links" :
|
||||||
|
rotation = 90
|
||||||
|
elif gefaelle == "rechts" :
|
||||||
|
rotation = 270
|
||||||
|
erstellung_gefaelle_block_verbunenden_am_einen(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge, hight, blockname)
|
||||||
|
blockref_layer = get_layer(doc, lib_doc, blockname)
|
||||||
|
bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation, "layer": blockref_layer})
|
||||||
|
a =bref.add_attrib(
|
||||||
|
tag= "NAME",
|
||||||
|
text= merkmale.get("bezeichner"),
|
||||||
|
insert = (x,y)
|
||||||
|
)
|
||||||
|
a.is_invisible = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
elif "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" in gefaellestrecke_nachbarn:
|
||||||
drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
|
drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
|
||||||
drehung1 = gefaellestrecke_nachbarn.get("Drehung1")
|
drehung1 = gefaellestrecke_nachbarn.get("Drehung1")
|
||||||
hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
|
hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
|
||||||
@@ -303,68 +497,156 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
y1_kreisel = float(gefaellestrecke_nachbarn.get("y1"))
|
y1_kreisel = float(gefaellestrecke_nachbarn.get("y1"))
|
||||||
richtung0 = float(gefaellestrecke_nachbarn.get("rotation0"))
|
richtung0 = float(gefaellestrecke_nachbarn.get("rotation0"))
|
||||||
richtung1 = float(gefaellestrecke_nachbarn.get("rotation1"))
|
richtung1 = float(gefaellestrecke_nachbarn.get("rotation1"))
|
||||||
|
richtung2 ="DEFAULT"
|
||||||
richtung_rad0= math.radians(richtung0)
|
richtung_rad0= math.radians(richtung0)
|
||||||
richtung_rad1 = math.radians(richtung1)
|
richtung_rad1 = math.radians(richtung1)
|
||||||
abstand0 = float(gefaellestrecke_nachbarn.get("abstand0"))
|
abstand0 = float(gefaellestrecke_nachbarn.get("abstand0")) * 1000
|
||||||
abstand1 = float(gefaellestrecke_nachbarn.get("abstand1"))
|
abstand1 = float(gefaellestrecke_nachbarn.get("abstand1")) * 1000
|
||||||
kreisel_verbunden = 0
|
kreisel_verbunden = 0
|
||||||
laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
|
laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
|
||||||
try:
|
try:
|
||||||
laenge = float(laenge_m) * 1000 # Meter → mm
|
laenge = float(laenge_m) * 1000 # Meter → mm
|
||||||
except ValueError:
|
except ValueError:
|
||||||
laenge = 10000 # F
|
laenge = 10000
|
||||||
|
|
||||||
|
|
||||||
#ausrechnung position kreisel
|
#ausrechnung position kreisel
|
||||||
halbabstand0 = abstand0 / 2
|
halbabstand0 = abstand0 / 2
|
||||||
dx0 = halbabstand0 * math.cos(richtung_rad0)
|
dx0 = halbabstand0 * math.cos(richtung_rad0)
|
||||||
dy0 = halbabstand0 * math.sin(richtung_rad0)
|
dy0 = halbabstand0 * math.sin(richtung_rad0)
|
||||||
pos0_0 = (round(x0_kreisel - dx0),round( y0_kreisel - dy0),hoehe0)
|
pos0_0_floor= (math.floor(x0_kreisel + dx0),math.floor( y0_kreisel + dy0))
|
||||||
pos0_1 = (round(x0_kreisel+ dx0),round( y0_kreisel+ dy0), hoehe0)
|
pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0))
|
||||||
|
pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0))
|
||||||
|
pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0))
|
||||||
|
|
||||||
halbabstand1 = abstand1 / 2
|
halbabstand1 = abstand1 / 2
|
||||||
dx1 = halbabstand1 * math.cos(richtung_rad1)
|
dx1 = halbabstand1 * math.cos(richtung_rad1 )
|
||||||
dy1 = halbabstand1 * math.sin(richtung_rad1)
|
dy1 = halbabstand1 * math.sin(richtung_rad1)
|
||||||
pos1_0 = (round(x1_kreisel - dx1), round(y1_kreisel - dy1), hoehe1)
|
pos1_0_floor = (math.floor(x1_kreisel + dx1), math.floor(y1_kreisel + dy1))
|
||||||
pos1_1 = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1)
|
pos1_1_floor = (math.floor(x1_kreisel - dx1), math.floor(y1_kreisel - dy1))
|
||||||
|
pos1_0_round = (round(x1_kreisel + dx1), round(y1_kreisel + dy1))
|
||||||
|
pos1_1_round = (round(x1_kreisel - dx1), round(y1_kreisel - dy1))
|
||||||
winkel = math.radians(float(merkmale.get("Drehung")))
|
winkel = math.radians(float(merkmale.get("Drehung")))
|
||||||
|
# berechnung der geraden einmal abgerunden und einmal gerunden zur negirung des offsets
|
||||||
halbe_laenge = laenge / 2
|
halbe_laenge = laenge / 2
|
||||||
dx = halbe_laenge *math.sin(winkel * -1)
|
dx = halbe_laenge *math.sin(winkel * -1)
|
||||||
dy = halbe_laenge * math.cos(winkel)
|
dy = halbe_laenge * math.cos(winkel)
|
||||||
start = (x +dx , y + dy ,upper_hoehe_gefaehlle)
|
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||||
ende = (x -dx, y - dy ,lower_hoehe_gefaehlle)
|
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
abstand_fuer_kreis_start = round(start[0] +RADIUS),round( start[1] + RADIUS)
|
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||||
abstand_gegen_kreis_start = round(start[0] - RADIUS), round(start[1] - RADIUS)
|
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||||
abstand_fuer_kreis_ende = round(ende[0] + RADIUS), round(ende[1] + RADIUS)
|
# verschiebund der endpunkte der gerade in richtung von dem potentiellen Kreisel für den vergleich wieder mit floor und rundung
|
||||||
abstand_gegen_kreis_ende = round(ende[0] - RADIUS), round(ende[1] - RADIUS)
|
abstand_fuer_kreis_start_x_floor = start_floor[0] +RADIUS, start_floor[1]
|
||||||
|
abstand_gegen_kreis_start_x_floor = start_floor[0] -RADIUS, start_floor[1]
|
||||||
|
abstand_fuer_kreis_start_y_floor = start_floor[0], start_floor[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_start_y_floor = start_floor[0], start_floor[1] - RADIUS
|
||||||
|
abstand_fuer_kreis_ende_x_floor= ende_floor[0] + RADIUS, ende_floor[1]
|
||||||
|
abstand_gegen_kreis_ende_x_floor= ende_floor[0] - RADIUS, ende_floor[1]
|
||||||
|
abstand_fuer_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] - RADIUS
|
||||||
|
|
||||||
|
abstand_fuer_kreis_start_x_round= start_round[0] +RADIUS, start_round[1]
|
||||||
|
abstand_gegen_kreis_start_x_round = start_round[0] -RADIUS, start_round[1]
|
||||||
|
abstand_fuer_kreis_start_y_round = start_round[0], start_round[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_start_y_round = start_round[0], start_round[1] - RADIUS
|
||||||
|
abstand_fuer_kreis_ende_x_round= ende_round[0] + RADIUS, ende_round[1]
|
||||||
|
abstand_gegen_kreis_ende_x_round= ende_round[0] - RADIUS, ende_round[1]
|
||||||
|
abstand_fuer_kreis_ende_y_round = ende_round[0] , ende_round[1] + RADIUS
|
||||||
|
abstand_gegen_kreis_ende_y_round = ende_round[0] , ende_round[1] - RADIUS
|
||||||
|
|
||||||
|
|
||||||
if( abstand_fuer_kreis_start[0] == pos0_0[0] or abstand_fuer_kreis_start[0] == pos0_1[0] or
|
# vergleich mit einem kreisel von zwei
|
||||||
abstand_fuer_kreis_start[1] == pos0_0[1] or abstand_fuer_kreis_start[1] == pos0_1[1] or
|
if( (abstand_fuer_kreis_start_x_floor == pos0_0_floor )or
|
||||||
abstand_gegen_kreis_ende[0] == pos0_0[0] or abstand_gegen_kreis_ende[0] == pos0_1[0] or
|
( abstand_fuer_kreis_start_x_floor == pos0_1_floor) or
|
||||||
abstand_gegen_kreis_ende[1] == pos0_0[1] or abstand_gegen_kreis_ende[1] == pos0_1[1]
|
( abstand_gegen_kreis_start_x_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_start_x_floor == pos0_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_x_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_x_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_x_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_x_floor == pos0_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_y_floor == pos0_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos0_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_x_round == pos0_0_round )or
|
||||||
|
( abstand_fuer_kreis_start_x_round == pos0_1_round) or
|
||||||
|
( abstand_gegen_kreis_start_x_round == pos0_0_round) or
|
||||||
|
( abstand_gegen_kreis_start_x_round == pos0_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_x_round == pos0_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_x_round== pos0_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_x_round == pos0_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_x_round == pos0_1_round) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos0_0_round)or
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos0_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_y_round == pos0_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_y_round == pos0_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos0_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos0_1_round)
|
||||||
):
|
):
|
||||||
kreisel_verbunden = kreisel_verbunden +1
|
kreisel_verbunden = kreisel_verbunden +1
|
||||||
|
# setzung auf kreisel 1 für spätere ausrechnung der geraden form
|
||||||
|
am_kreisel = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ( abstand_gegen_kreis_start[0] == pos1_0[0] or abstand_gegen_kreis_start[0] == pos1_1[0] or
|
if( (abstand_fuer_kreis_start_x_floor == pos1_0_floor )or
|
||||||
abstand_gegen_kreis_start[1] == pos1_0[1] or abstand_gegen_kreis_start[1] == pos1_1[1]or
|
( abstand_fuer_kreis_start_x_floor == pos1_1_floor) or
|
||||||
abstand_fuer_kreis_ende[0] == pos1_0[0] or abstand_fuer_kreis_ende[0] == pos1_1[0] or
|
( abstand_gegen_kreis_start_x_floor == pos1_0_floor) or
|
||||||
abstand_fuer_kreis_ende[1] == pos1_0[1] or abstand_fuer_kreis_ende[1] == pos1_1[1]
|
( abstand_gegen_kreis_start_x_floor == pos1_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_x_floor == pos1_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_x_floor == pos1_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_x_floor == pos1_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_x_floor == pos1_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_floor == pos1_0_floor )or
|
||||||
|
( abstand_fuer_kreis_start_y_floor == pos1_1_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos1_0_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos1_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_y_floor == pos1_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_y_floor == pos1_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos1_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos1_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_x_round == pos1_0_round )or
|
||||||
|
( abstand_fuer_kreis_start_x_round == pos1_1_round) or
|
||||||
|
( abstand_gegen_kreis_start_x_round == pos1_0_round) or
|
||||||
|
( abstand_gegen_kreis_start_x_round == pos1_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_x_round == pos1_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_x_round== pos1_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_x_round == pos1_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_x_round == pos1_1_round) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos1_0_round)or
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos1_1_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos1_0_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos1_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_y_round == pos1_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_y_round == pos1_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos1_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos1_1_round)
|
||||||
):
|
):
|
||||||
kreisel_verbunden = kreisel_verbunden +1
|
kreisel_verbunden = kreisel_verbunden +1
|
||||||
|
am_kreisel = 2
|
||||||
|
|
||||||
|
# falls gefälle strecke mit zwei kreiseln verbunden zeichne eine einfache linie (später braucht man hier auch eine logik sobald man die richtigen es und as elemente hat)
|
||||||
if kreisel_verbunden == 2:
|
if kreisel_verbunden == 2:
|
||||||
msp.add_line(start,ende)
|
start = x +dx, y + dy,upper_hoehe_gefaehlle
|
||||||
|
ende = x -dx, y - dy,lower_hoehe_gefaehlle
|
||||||
|
line = msp.add_line(start,ende)
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
#umbezeichnung von den geraden zu strings ob es Vertikal oder Horizontal ist
|
||||||
if richtung0 == 90.0 or richtung0 ==270:
|
if richtung0 == 90.0 or richtung0 ==270:
|
||||||
richtung0= "Vertikal"
|
richtung0= "Vertikal"
|
||||||
else:
|
else:
|
||||||
@@ -376,18 +658,57 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# setzung von richtung2 auf vertikal oder horizontal je nach dem welche orientierung der kreisel hat mit dem man am kreisel verbunden ist
|
||||||
|
if (richtung0 != richtung1 and kreisel_verbunden ==1):
|
||||||
|
if(
|
||||||
|
(abstand_fuer_kreis_start_y_floor== pos0_0_floor)or
|
||||||
|
(abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||||
|
(abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||||
|
(abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor)or
|
||||||
|
(abstand_fuer_kreis_ende_y_floor== pos0_1_floor) or
|
||||||
|
(abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||||
|
(abstand_gegen_kreis_ende_y_floor== pos0_1_floor) or
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos0_0_round)or
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||||
|
(abstand_gegen_kreis_start_y_round== pos0_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_y_round == pos0_0_round)or
|
||||||
|
(abstand_fuer_kreis_ende_y_round== pos0_1_round) or
|
||||||
|
(abstand_gegen_kreis_ende_y_round== pos0_0_round) or
|
||||||
|
(abstand_gegen_kreis_ende_y_round == pos0_1_round) or
|
||||||
|
|
||||||
if (richtung0 != richtung1):
|
|
||||||
if x-RADIUS == x0_kreisel or x+RADIUS == x0_kreisel or x-RADIUS == x1_kreisel or x+ RADIUS == x1_kreisel:
|
|
||||||
richtung0= "Horinzontal"
|
(abstand_fuer_kreis_start_y_floor == pos1_0_floor )or
|
||||||
|
( abstand_fuer_kreis_start_y_floor == pos1_1_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos1_0_floor) or
|
||||||
|
( abstand_gegen_kreis_start_y_floor == pos1_1_floor) or
|
||||||
|
(abstand_fuer_kreis_ende_y_floor == pos1_0_floor )or
|
||||||
|
( abstand_fuer_kreis_ende_y_floor== pos1_1_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos1_0_floor) or
|
||||||
|
( abstand_gegen_kreis_ende_y_floor == pos1_1_floor) or
|
||||||
|
|
||||||
|
(abstand_fuer_kreis_start_y_round == pos1_0_round)or
|
||||||
|
( abstand_fuer_kreis_start_y_round == pos1_1_round) or
|
||||||
|
( abstand_gegen_kreis_start_y_round == pos1_0_round) or
|
||||||
|
( abstand_gegen_kreis_start_y_round== pos1_1_round) or
|
||||||
|
(abstand_fuer_kreis_ende_y_round == pos1_0_round)or
|
||||||
|
( abstand_fuer_kreis_ende_y_round == pos1_1_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos1_0_round) or
|
||||||
|
( abstand_gegen_kreis_ende_y_round == pos1_1_round)
|
||||||
|
):
|
||||||
|
richtung2= "Vertikal"
|
||||||
else:
|
else:
|
||||||
richtung1 = "Vertikal"
|
richtung2 = "Horinzontal"
|
||||||
unterschiedlich = True
|
unterschiedlich = True
|
||||||
#Berechnung des Gefälles
|
#Berechnung des Gefälles
|
||||||
|
|
||||||
if hoehe0 > hoehe1:
|
if hoehe0 > hoehe1:
|
||||||
hight_position = "higher"
|
hight_position = "higher"
|
||||||
else:
|
else:
|
||||||
hight_position = "lower"
|
hight_position = "lower"
|
||||||
|
if richtung2 == "DEFAULT":
|
||||||
if richtung0 == "Vertikal":
|
if richtung0 == "Vertikal":
|
||||||
if x0_kreisel < x1_kreisel:
|
if x0_kreisel < x1_kreisel:
|
||||||
position = hight_position + "_links"
|
position = hight_position + "_links"
|
||||||
@@ -409,10 +730,8 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
gefaelle = "oben"
|
gefaelle = "oben"
|
||||||
else:
|
else:
|
||||||
gefaelle = "unten"
|
gefaelle = "unten"
|
||||||
|
# vertausch der drehung und der höhe für die namens gebung des blockes
|
||||||
#Wechsel das die Drehung des obersten oder des Linkens Kreisels immer als erstes steht für die Bennenung des Blockes und dem entsprchend
|
if (position == "higher_rechts" or position == "lower_rechts" or position=="higher_lower" or position== "lower_lower") and drehung0 != drehung1 and am_kreisel == 0:
|
||||||
#wird auch getauscht in welcher hohen position es ist
|
|
||||||
if (position == "higher_rechts" or position == "lower_rechts" or position=="higher_lower" or position== "lower_lower") and drehung0 != drehung1:
|
|
||||||
drehung_2 = drehung0
|
drehung_2 = drehung0
|
||||||
drehung0 = drehung1
|
drehung0 = drehung1
|
||||||
drehung1= drehung_2
|
drehung1= drehung_2
|
||||||
@@ -421,8 +740,53 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
else:
|
else:
|
||||||
hight_position = "higher"
|
hight_position = "higher"
|
||||||
|
|
||||||
#
|
# austausch der werte damit immer davon ausgehen dass der 1 kreisel in unserer Liste am Kreisel verbuden ist
|
||||||
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}"
|
if kreisel_verbunden == 1 and am_kreisel ==2:
|
||||||
|
am_kreisel == 1
|
||||||
|
|
||||||
|
drehung_2 = drehung0
|
||||||
|
drehung0 = drehung1
|
||||||
|
drehung1= drehung_2
|
||||||
|
if hight_position == "higher":
|
||||||
|
hight_position = "lower"
|
||||||
|
else:
|
||||||
|
hight_position = "higher"
|
||||||
|
|
||||||
|
else:
|
||||||
|
if richtung2 == "Vertikal":
|
||||||
|
if x0_kreisel < x1_kreisel:
|
||||||
|
position = hight_position + "_links"
|
||||||
|
else:
|
||||||
|
position = hight_position + "_rechts"
|
||||||
|
else:
|
||||||
|
if y0_kreisel > y1_kreisel:
|
||||||
|
position = hight_position + "_higher"
|
||||||
|
else:
|
||||||
|
position = hight_position + "_lower"
|
||||||
|
|
||||||
|
if richtung2 == "Vertikal":
|
||||||
|
if position == "lower_rechts" or position == "higher_links":
|
||||||
|
gefaelle = "links"
|
||||||
|
else:
|
||||||
|
gefaelle = "rechts"
|
||||||
|
elif richtung2 == "Horinzontal":
|
||||||
|
if position == "lower_lower" or position == "higher_higher":
|
||||||
|
gefaelle = "oben"
|
||||||
|
else:
|
||||||
|
gefaelle = "unten"
|
||||||
|
# austausch der werte damit immer davon ausgehen dass der 1 kreisel in unserer Liste am Kreisel verbuden ist
|
||||||
|
if am_kreisel == 2:
|
||||||
|
|
||||||
|
am_kreisel = 1
|
||||||
|
drehung_2 = drehung0
|
||||||
|
drehung0 = drehung1
|
||||||
|
drehung1= drehung_2
|
||||||
|
if hight_position == "higher":
|
||||||
|
hight_position = "lower"
|
||||||
|
else:
|
||||||
|
hight_position = "higher"
|
||||||
|
|
||||||
|
|
||||||
if gefaelle == "oben":
|
if gefaelle == "oben":
|
||||||
rotation = 0
|
rotation = 0
|
||||||
elif gefaelle == "unten" :
|
elif gefaelle == "unten" :
|
||||||
@@ -431,29 +795,295 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
rotation = 90
|
rotation = 90
|
||||||
elif gefaelle == "rechts" :
|
elif gefaelle == "rechts" :
|
||||||
rotation = 270
|
rotation = 270
|
||||||
gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, drehung1, laenge, hight_position, blockname)
|
|
||||||
|
|
||||||
|
|
||||||
|
#geben der richtung2 eines wertes außer default wenn beide kreisel die gleiche richung haben
|
||||||
|
if (kreisel_verbunden == 1 and richtung2 =="DEFAULT"):
|
||||||
|
richtung2 = richtung0
|
||||||
|
|
||||||
bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
|
if richtung2 == "DEFAULT":
|
||||||
bref.add_attrib(
|
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{verbunden_am_einen}"
|
||||||
|
else:
|
||||||
|
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{unterschiedlich}_{richtung2}_{verbunden_am_einen}"
|
||||||
|
gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2,drehung0, drehung1, laenge, hight_position,blockname)
|
||||||
|
blockref_layer = get_layer(doc, lib_doc, blockname)
|
||||||
|
|
||||||
|
|
||||||
|
bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation, "layer": blockref_layer })
|
||||||
|
a = bref.add_attrib(
|
||||||
tag= "NAME",
|
tag= "NAME",
|
||||||
text= merkmale.get("bezeichner"),
|
text= merkmale.get("bezeichner"),
|
||||||
insert = (x,y)
|
insert = (x,y)
|
||||||
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
a.is_invisible = True
|
||||||
|
#falls eine gefällestrecke nicht mit einem kreisel verbunden ist
|
||||||
|
else:
|
||||||
|
laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
|
||||||
|
try:
|
||||||
|
laenge = float(laenge_m) * 1000 # Meter → mm
|
||||||
|
except ValueError:
|
||||||
|
laenge = 10000
|
||||||
|
|
||||||
|
winkel = math.radians(float(merkmale.get("Drehung")))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
dx = halbe_laenge *math.sin(winkel * -1)
|
||||||
|
dy = halbe_laenge * math.cos(winkel)
|
||||||
|
start = x +dx, y + dy,upper_hoehe_gefaehlle
|
||||||
|
ende = x -dx, y - dy,lower_hoehe_gefaehlle
|
||||||
|
line = msp.add_line(start,ende)
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, drehung1, laenge, hight_position, blockname):
|
def erstellung_gefaelle_block_verbunenden_am_einen(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge, hight, blockname):
|
||||||
if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" :
|
if blockname not in doc.blocks and hight == "higher" and drehung0 == "GUZS":
|
||||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
halbe_laenge = laenge / 2
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
dy = halbe_laenge * math.cos(0)
|
dy = halbe_laenge * math.cos(0)
|
||||||
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_as = "200000241_AS-Element_90_rechts"
|
||||||
|
import_block(block_as,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle))
|
||||||
|
elif blockname not in doc.blocks and hight == "lower" and drehung0 == "GUZS":
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
start = (x , y + dy,upper_hoehe_gefaehlle)
|
||||||
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_es = "200000146_ES-Element_90_rechts"
|
||||||
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
|
||||||
|
elif blockname not in doc.blocks and hight == "higher" and drehung0 == "UZS":
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_as = "200000217_AS-Element_90_links"
|
||||||
|
import_block(block_as,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
elif blockname not in doc.blocks and hight == "lower" and drehung0 == "UZS":
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
|
||||||
|
block_es = "400102632_ES-Element_90_links"
|
||||||
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
|
|
||||||
|
def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2, drehung0, drehung1, laenge, hight_position, blockname):
|
||||||
|
#erstellung des blockes falls die gefaelle strecke mit einem kreisel verbunden ist, mehrere variation von selben weil diese nötig sind sobald man die richtigen inserts bekommen
|
||||||
|
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||||
|
middle_hoehe = upper_hoehe_gefaehlle
|
||||||
|
upper_hoehe_gefaehlle = lower_hoehe_gefaehlle
|
||||||
|
lower_hoehe_gefaehlle = middle_hoehe
|
||||||
|
|
||||||
|
if richtung2!= "DEFAULT":
|
||||||
|
if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher" :
|
||||||
|
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_es = "200000146_ES-Element_90_rechts"
|
||||||
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
|
||||||
|
elif blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS":
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_as = "200000241_AS-Element_90_rechts"
|
||||||
|
import_block(block_as,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle))
|
||||||
|
elif blockname not in doc.blocks and ((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")):
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
|
||||||
|
block_es = "400102632_ES-Element_90_links"
|
||||||
|
import_block(block_es,lib_doc,doc)
|
||||||
|
block.add_blockref(block_es,(ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle), dxfattribs={"rotation": 180})
|
||||||
|
elif blockname not in doc.blocks and (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower"):
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_as = "200000241_AS-Element_90_rechts"
|
||||||
|
|
||||||
|
import_block(block_as,lib_doc,doc)
|
||||||
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle))
|
||||||
|
elif blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS" and hight_position == "higher":
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
|
||||||
|
block_es = "400102632_ES-Element_90_links"
|
||||||
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
|
elif blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS":
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_as = "200000217_AS-Element_90_links"
|
||||||
|
import_block(block_as,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
|
|
||||||
|
elif blockname not in doc.blocks and ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")):
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
|
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
|
||||||
|
block_es = "200000146_ES-Element_90_rechts"
|
||||||
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle))
|
||||||
|
elif blockname not in doc.blocks and (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower"):
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
|
copy= line.copy()
|
||||||
|
|
||||||
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
|
block.add_entity(copy)
|
||||||
|
block_as = "200000217_AS-Element_90_links"
|
||||||
|
import_block(block_as,lib_doc,doc)
|
||||||
|
|
||||||
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
#erstellung von den normalen gefällestrecken
|
||||||
|
else:
|
||||||
|
if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" :
|
||||||
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
copy= line.copy()
|
copy= line.copy()
|
||||||
|
|
||||||
copy.translate(-x,-y,-hoehe_gefaehlle)
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
@@ -465,7 +1095,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
|
|||||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle))
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle))
|
||||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
|
||||||
|
|
||||||
if blockname not in doc.blocks and ((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")):
|
elif blockname not in doc.blocks and ((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")):
|
||||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
halbe_laenge = laenge / 2
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
@@ -473,6 +1103,8 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
|
|||||||
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
copy= line.copy()
|
copy= line.copy()
|
||||||
|
|
||||||
copy.translate(-x,-y,-hoehe_gefaehlle)
|
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||||
@@ -481,18 +1113,21 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
|
|||||||
import_block(block_as,lib_doc,doc)
|
import_block(block_as,lib_doc,doc)
|
||||||
block_es = "400102632_ES-Element_90_links"
|
block_es = "400102632_ES-Element_90_links"
|
||||||
import_block(block_es,lib_doc,doc)
|
import_block(block_es,lib_doc,doc)
|
||||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]))
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle))
|
||||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset-y,ende[2]),dxfattribs={"rotation": 180})
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset-y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
|
|
||||||
if blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS":
|
elif blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS":
|
||||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
halbe_laenge = laenge / 2
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
dy = halbe_laenge * math.cos(0)
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
copy= line.copy()
|
copy= line.copy()
|
||||||
|
|
||||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
@@ -502,19 +1137,22 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
|
|||||||
block_es = "400102632_ES-Element_90_links"
|
block_es = "400102632_ES-Element_90_links"
|
||||||
import_block(block_es,lib_doc,doc)
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180})
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2]),dxfattribs={"rotation": 180})
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle) ,dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
|
|
||||||
if blockname not in doc.blocks and ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")or (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")):
|
elif blockname not in doc.blocks and ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")or (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")):
|
||||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||||
halbe_laenge = laenge / 2
|
halbe_laenge = laenge / 2
|
||||||
|
|
||||||
dy = halbe_laenge * math.cos(0)
|
dy = halbe_laenge * math.cos(0)
|
||||||
|
|
||||||
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
|
||||||
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
|
||||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||||
|
line.dxf.layer = "6-SP"
|
||||||
|
|
||||||
copy= line.copy()
|
copy= line.copy()
|
||||||
|
|
||||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||||
@@ -524,12 +1162,9 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
|
|||||||
block_es = "200000146_ES-Element_90_rechts"
|
block_es = "200000146_ES-Element_90_rechts"
|
||||||
import_block(block_es,lib_doc,doc)
|
import_block(block_es,lib_doc,doc)
|
||||||
|
|
||||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180})
|
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||||
|
|
||||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2]))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle))
|
||||||
|
|
||||||
def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config):
|
def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config):
|
||||||
"""
|
"""
|
||||||
@@ -596,7 +1231,10 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,
|
|||||||
|
|
||||||
|
|
||||||
def get_layer(doc, lib_doc, blockname):
|
def get_layer(doc, lib_doc, blockname):
|
||||||
|
if blockname in lib_doc.blocks:
|
||||||
src = lib_doc.blocks[blockname]
|
src = lib_doc.blocks[blockname]
|
||||||
|
else:
|
||||||
|
src = doc.blocks[blockname]
|
||||||
try:
|
try:
|
||||||
used_layer_names = {e.dxf.layer for e in src if hasattr(e.dxf, "layer")}
|
used_layer_names = {e.dxf.layer for e in src if hasattr(e.dxf, "layer")}
|
||||||
for layer_name in used_layer_names:
|
for layer_name in used_layer_names:
|
||||||
|
|||||||
Reference in New Issue
Block a user