From a5baccb40ada949e8df969557a32956f1b430781 Mon Sep 17 00:00:00 2001 From: Paul Wolok Date: Tue, 20 Jan 2026 11:38:04 +0100 Subject: [PATCH] Eckrad kunktioniert --- lib/Elemente/Eckrad.py | 2 +- lib/Elemente/Gefaehllestrecke.py | 2 +- lib/plant2dxf.py | 136 +++++++++++++++++++++++-------- 3 files changed, 102 insertions(+), 38 deletions(-) diff --git a/lib/Elemente/Eckrad.py b/lib/Elemente/Eckrad.py index 6b51e62..ecb84a8 100644 --- a/lib/Elemente/Eckrad.py +++ b/lib/Elemente/Eckrad.py @@ -26,5 +26,5 @@ class Eckrad(BaseModel): x = x, y = y, hoehe = hoehe, - drehung = drehung + drehrichtung = drehrichtung ) \ No newline at end of file diff --git a/lib/Elemente/Gefaehllestrecke.py b/lib/Elemente/Gefaehllestrecke.py index 64114d1..18edac3 100644 --- a/lib/Elemente/Gefaehllestrecke.py +++ b/lib/Elemente/Gefaehllestrecke.py @@ -187,7 +187,7 @@ class Gefaellestrecke(BaseModel): if rotation_zwischen == 0.0: rotation_zwischen = -360.0 if (((-360.0<= rotation_zwischen< -270.0)and y > y_angetrieben_1) or ((-90.0< rotation< 0.0)and y > y_angetrieben_1) or - ((-270.0< rotation_zwischen< -90.0)and y < y_angetrieben) or + ((-270.0< rotation_zwischen< -90.0)and y < y_angetrieben_1) or (rotation == -90.0 and x < x_angetrieben_1) or ((rotation == -270.0)and x y0_kreisel: - mit_horizontal_verbunden = "unten_drehung_0_or_-90" - else: - mit_horizontal_verbunden = "oben_drehung_0_or_-90" - if rotation == -180.0: - if y> y0_kreisel: - mit_horizontal_verbunden = "unten_drehung_-180_or_-270" - else: - mit_horizontal_verbunden = "oben_drehung_-180_or_-270" - if rotation == -90.0: - if x> x0_kreisel: - mit_horizontal_verbunden = "unten_drehung_0_or_-90" - else: - mit_horizontal_verbunden = "oben_drehung_0_or_-90" - if rotation == -270.0: - if x> x0_kreisel: - mit_horizontal_verbunden = "unten_drehung_-180_or_-270" - else: - mit_horizontal_verbunden = "oben_drehung_-180_or_-270" + mit_horizontal_verbunden = horizontale_ausrichtung(x, y, voerder_richtung, rotation, x0_kreisel, y0_kreisel) am_kreisel,kreseil_verbunden =as_es_methoden.am_kreisel_direct_verbunden(x, y, upper_hoehe_vario, lower_hoehe_vario, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, None, None, None, None ) if am_kreisel == 1: # Erstellung der blockname für wenn die Motorstation rechts und links @@ -702,8 +723,8 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve # Falls der Förder mit beiden Kreisel verbunden ist if kreisel_verbunden == 2: # Erstellung der blockname für wenn die Motorstation rechts und links - blockname = (f"Vario_Foerderer_{winkel}_{voerder_richtung}_{laenge}_{hoehe_vario}_rechts_{drehung0}_{drehung1}_{kreisel_verbunden}_{motor_vorhanden}_{umlenk_vorhanden}_{gefaelle}_{gefahellewinkel}") - block_name_links = (f"Vario_Foerderer_{winkel}_{voerder_richtung}_{laenge}_{hoehe_vario}_links_{drehung0}_{drehung1}_{kreisel_verbunden}_{motor_vorhanden}_{umlenk_vorhanden}_{gefaelle}_{gefahellewinkel}") + blockname = (f"Vario_Foerderer_{winkel}_{voerder_richtung}_{laenge}_{hoehe_vario}_rechts_{kreisel_verbunden}_{motor_vorhanden}_{umlenk_vorhanden}_{gefaelle}_{gefahellewinkel}") + block_name_links = (f"Vario_Foerderer_{winkel}_{voerder_richtung}_{laenge}_{hoehe_vario}_links_{kreisel_verbunden}_{motor_vorhanden}_{umlenk_vorhanden}_{gefaelle}_{gefahellewinkel}") # Falls der Block bereits in dem doc ist platziere diesen einfach if blockname in doc.blocks: if merkmale.get("Motorseite")== "links": @@ -826,6 +847,31 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve if merkmale.get("Motorseite")== "rechts": msp.add_blockref(blockname,(x,y,hoehe_vario),dxfattribs={"rotation": rotation}) +def horizontale_ausrichtung(x, y, voerder_richtung, rotation, x0_kreisel, y0_kreisel): + mit_horizontal_verbunden = "None" + if voerder_richtung == "Horizontal": + if rotation == 0.0: + if y> y0_kreisel: + mit_horizontal_verbunden = "unten_drehung_0_or_-90" + else: + mit_horizontal_verbunden = "oben_drehung_0_or_-90" + if rotation == -180.0: + if y> y0_kreisel: + mit_horizontal_verbunden = "unten_drehung_-180_or_-270" + else: + mit_horizontal_verbunden = "oben_drehung_-180_or_-270" + if rotation == -90.0: + if x> x0_kreisel: + mit_horizontal_verbunden = "unten_drehung_0_or_-90" + else: + mit_horizontal_verbunden = "oben_drehung_0_or_-90" + if rotation == -270.0: + if x> x0_kreisel: + mit_horizontal_verbunden = "unten_drehung_-180_or_-270" + else: + mit_horizontal_verbunden = "oben_drehung_-180_or_-270" + return mit_horizontal_verbunden + def handle_ils_2_0_kurve_angetrieben(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein): """Erstellt eine Angetriebene Kurve (Förderer Kurve) in der neuen Dxf""" voerder_kurve = Angetriebene_Kurve.Angetriebene_Kurve.from_merkmale(teileid,x,y,merkmale) @@ -935,7 +981,7 @@ def get_nachbar_information(csv_path:Path) -> dict: kreisel =[] strecken_nachbarn = [] angetriebene_kurve= [] - anweisungen = 0 + eckrad_dic= [] """Gib für jede gefällestrecke zurück welche Drehrichtung die benachbarten Kreisel haben """ with csv_path.open(newline="", encoding="utf-8") as fh: reader = csv.DictReader(fh, delimiter=';') @@ -987,11 +1033,19 @@ def get_nachbar_information(csv_path:Path) -> dict: tefkurve = kurve_angetrieben.antrieb kurve_winkel = kurve_angetrieben.winkel angetriebene_kurve.append({"Id": Id,"H0": h0,"H1":h1,"kurvenrichtung":kurvenrichtung,"Tefkurve": tefkurve,"Kurvenwinkel": kurve_winkel,"X_angetrieben":x,"Y_angetrieben":y}) - + if bezeichner =="ILS 2.0 Eckrad": + Id = row["TeileId"].strip() + planquadrat = row["Planquadrat"] + x, y = extract_coords(planquadrat) + merkmale = parse_merkmale(row.get("Merkmale", "")) + eckrad_att = Eckrad.Eckrad.from_merkmale(Id,x,y,merkmale) + + eckrad_dic.append({"Id": Id,"H0": eckrad_att.hoehe,"Eckrad_x": x,"Eckrad_y": y}) for gerade in geraden: anweisungen = 0 voerder_anweisung = 0 geraden_anweisung = 0 + eckrad_anweisung = 0 eintrag = {"Id": gerade["Id"]} for foerderer in angetriebene_kurve: if foerderer["Id"] in gerade["NachbarIds"]: @@ -1012,7 +1066,17 @@ def get_nachbar_information(csv_path:Path) -> dict: eintrag["Kurvenrichtung_1"] = foerderer.get("kurvenrichtung") eintrag["Tefkurve_1"] = foerderer.get("Tefkurve") eintrag["Kurvenwinkel_1"] = foerderer.get("Kurvenwinkel") - + for eckrad in eckrad_dic: + if eckrad["Id"] in gerade["NachbarIds"]: + if eckrad_anweisung == 0: + eintrag["Eckrad_x"] = eckrad.get("Eckrad_x") + eintrag["Eckrad_y"] = eckrad.get("Eckrad_y") + eintrag["Eckrad_höhe"] = eckrad.get("H0") + eckrad_anweisung = 1 + elif eckrad_anweisung == 1: + eintrag["Eckrad_x_1"] = eckrad.get("Eckrad_x") + eintrag["Eckrad_y_1"] = eckrad.get("Eckrad_y") + eintrag["Eckrad_höhe_1"] = eckrad.get("H0") for kreis in kreisel: if kreis["Id"] in gerade["NachbarIds"]: if anweisungen == 0: