Man kann nun zwei Kreisel am kreisel mit der Gefällestrecke verbinden (aber nur zwei Kreisel noch nicht ein Kreisel und eine Strecke)
This commit is contained in:
+85
-6
@@ -283,6 +283,7 @@ 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
|
||||||
|
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"))
|
||||||
upper_hoehe_gefaehlle= float(merkmale.get("Höhe oben")) *1000
|
upper_hoehe_gefaehlle= float(merkmale.get("Höhe oben")) *1000
|
||||||
@@ -302,19 +303,92 @@ 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"))
|
||||||
|
richtung_rad0= math.radians(richtung0)
|
||||||
|
richtung_rad1 = math.radians(richtung1)
|
||||||
|
abstand0 = float(gefaellestrecke_nachbarn.get("abstand0"))
|
||||||
|
abstand1 = float(gefaellestrecke_nachbarn.get("abstand1"))
|
||||||
|
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 # Fallback 10 m
|
laenge = 10000 # F
|
||||||
|
|
||||||
|
|
||||||
|
#ausrechnung position kreisel
|
||||||
|
halbabstand0 = abstand0 / 2
|
||||||
|
dx0 = halbabstand0 * math.cos(richtung_rad0)
|
||||||
|
dy0 = halbabstand0 * math.sin(richtung_rad0)
|
||||||
|
pos0_0 = (round(x0_kreisel - dx0),round( y0_kreisel - dy0),hoehe0)
|
||||||
|
pos0_1 = (round(x0_kreisel+ dx0),round( y0_kreisel+ dy0), hoehe0)
|
||||||
|
|
||||||
|
halbabstand1 = abstand1 / 2
|
||||||
|
dx1 = halbabstand1 * math.cos(richtung_rad1)
|
||||||
|
dy1 = halbabstand1 * math.sin(richtung_rad1)
|
||||||
|
pos1_0 = (round(x1_kreisel - dx1), round(y1_kreisel - dy1), hoehe1)
|
||||||
|
pos1_1 = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1)
|
||||||
|
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)
|
||||||
|
abstand_fuer_kreis_start = round(start[0] +RADIUS),round( start[1] + RADIUS)
|
||||||
|
abstand_gegen_kreis_start = round(start[0] - RADIUS), round(start[1] - RADIUS)
|
||||||
|
abstand_fuer_kreis_ende = round(ende[0] + RADIUS), round(ende[1] + RADIUS)
|
||||||
|
abstand_gegen_kreis_ende = round(ende[0] - RADIUS), round(ende[1] - RADIUS)
|
||||||
|
|
||||||
|
|
||||||
|
if( abstand_fuer_kreis_start[0] == pos0_0[0] or abstand_fuer_kreis_start[0] == pos0_1[0] or
|
||||||
|
abstand_fuer_kreis_start[1] == pos0_0[1] or abstand_fuer_kreis_start[1] == pos0_1[1] or
|
||||||
|
abstand_gegen_kreis_ende[0] == pos0_0[0] or abstand_gegen_kreis_ende[0] == pos0_1[0] or
|
||||||
|
abstand_gegen_kreis_ende[1] == pos0_0[1] or abstand_gegen_kreis_ende[1] == pos0_1[1]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
):
|
||||||
|
kreisel_verbunden = kreisel_verbunden +1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ( abstand_gegen_kreis_start[0] == pos1_0[0] or abstand_gegen_kreis_start[0] == pos1_1[0] or
|
||||||
|
abstand_gegen_kreis_start[1] == pos1_0[1] or abstand_gegen_kreis_start[1] == pos1_1[1]or
|
||||||
|
abstand_fuer_kreis_ende[0] == pos1_0[0] or abstand_fuer_kreis_ende[0] == pos1_1[0] or
|
||||||
|
abstand_fuer_kreis_ende[1] == pos1_0[1] or abstand_fuer_kreis_ende[1] == pos1_1[1]
|
||||||
|
):
|
||||||
|
kreisel_verbunden = kreisel_verbunden +1
|
||||||
|
|
||||||
|
if kreisel_verbunden == 2:
|
||||||
|
msp.add_line(start,ende)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if richtung0 == 90.0 or richtung0 ==270:
|
||||||
|
richtung0= "Vertikal"
|
||||||
|
else:
|
||||||
|
richtung0 = "Horinzontal"
|
||||||
|
if richtung1 == 90.0 or richtung1 ==270:
|
||||||
|
richtung1= "Vertikal"
|
||||||
|
else:
|
||||||
|
richtung1 = "Horinzontal"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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"
|
||||||
|
else:
|
||||||
|
richtung1 = "Vertikal"
|
||||||
|
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 richtung0 == 90.0 or richtung0 == 270.0:
|
if richtung0 == "Vertikal":
|
||||||
if x0_kreisel < x1_kreisel:
|
if x0_kreisel < x1_kreisel:
|
||||||
position = hight_position + "_links"
|
position = hight_position + "_links"
|
||||||
else:
|
else:
|
||||||
@@ -325,12 +399,12 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
|||||||
else:
|
else:
|
||||||
position = hight_position + "_lower"
|
position = hight_position + "_lower"
|
||||||
|
|
||||||
if richtung0 == 90.0 or richtung0 == 270.0:
|
if richtung0 == "Vertikal":
|
||||||
if position == "lower_rechts" or position == "higher_links":
|
if position == "lower_rechts" or position == "higher_links":
|
||||||
gefaelle = "links"
|
gefaelle = "links"
|
||||||
else:
|
else:
|
||||||
gefaelle = "rechts"
|
gefaelle = "rechts"
|
||||||
elif richtung0 == 0.0 or richtung0 == 180.0:
|
elif richtung0 == "Horinzontal":
|
||||||
if position == "lower_lower" or position == "higher_higher":
|
if position == "lower_lower" or position == "higher_higher":
|
||||||
gefaelle = "oben"
|
gefaelle = "oben"
|
||||||
else:
|
else:
|
||||||
@@ -598,7 +672,10 @@ def get_rotations_of_gefaellestrecke(csv_path:Path) -> dict:
|
|||||||
drehung = merkmale.get("Drehrichtung")
|
drehung = merkmale.get("Drehrichtung")
|
||||||
rotation = merkmale.get("Drehung")
|
rotation = merkmale.get("Drehung")
|
||||||
hight = float(merkmale.get("Höhe in m")) *1000
|
hight = float(merkmale.get("Höhe in m")) *1000
|
||||||
kreisel.append({"Id":Id, "drehung":drehung, "höhe":hight,"x": x, "y": y, "rotation": rotation})
|
abstand_m = merkmale.get(
|
||||||
|
"Abstand (Kreiselachse A - Kreiselachse) in Meter", "20"
|
||||||
|
).replace(",", ".")
|
||||||
|
kreisel.append({"Id":Id, "drehung":drehung, "höhe":hight,"x": x, "y": y, "rotation": rotation,"abstand":abstand_m})
|
||||||
|
|
||||||
|
|
||||||
for gefaelle in gefaehlleStrecken:
|
for gefaelle in gefaehlleStrecken:
|
||||||
@@ -612,6 +689,7 @@ def get_rotations_of_gefaellestrecke(csv_path:Path) -> dict:
|
|||||||
eintrag["x0"] = kreis.get("x")
|
eintrag["x0"] = kreis.get("x")
|
||||||
eintrag["y0"] = kreis.get("y")
|
eintrag["y0"] = kreis.get("y")
|
||||||
eintrag["rotation0"] = kreis.get("rotation")
|
eintrag["rotation0"] = kreis.get("rotation")
|
||||||
|
eintrag["abstand0"] = kreis.get("abstand")
|
||||||
anweisungen = 1
|
anweisungen = 1
|
||||||
elif anweisungen == 1:
|
elif anweisungen == 1:
|
||||||
eintrag["Drehung1"] = kreis.get("drehung")
|
eintrag["Drehung1"] = kreis.get("drehung")
|
||||||
@@ -619,6 +697,7 @@ def get_rotations_of_gefaellestrecke(csv_path:Path) -> dict:
|
|||||||
eintrag["x1"] = kreis.get("x")
|
eintrag["x1"] = kreis.get("x")
|
||||||
eintrag["y1"] = kreis.get("y")
|
eintrag["y1"] = kreis.get("y")
|
||||||
eintrag["rotation1"] = kreis.get("rotation")
|
eintrag["rotation1"] = kreis.get("rotation")
|
||||||
|
eintrag["abstand1"] = kreis.get("abstand")
|
||||||
break
|
break
|
||||||
gefaellestrecken_nachbarn.append(eintrag)
|
gefaellestrecken_nachbarn.append(eintrag)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user