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: