From 72f21f715af25b5a494c6cf7435c1aad69c073fe Mon Sep 17 00:00:00 2001
From: Paul Wolok
Date: Wed, 10 Dec 2025 09:54:37 +0100
Subject: [PATCH] =?UTF-8?q?Refactoring=20und=20korrektur=20der=20Vario=20F?=
=?UTF-8?q?=C3=B6rder=20=20Vario=20linie=20wenn=20der=20ab=203=20grad=20va?=
=?UTF-8?q?rio=20keine=20Motor/Umlenk=20station=20hat?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/Elemente/VarioFoerderer.py | 119 +++++++++++++++++++++++++--
lib/plant2dxf.py | 142 ++++++---------------------------
2 files changed, 138 insertions(+), 123 deletions(-)
diff --git a/lib/Elemente/VarioFoerderer.py b/lib/Elemente/VarioFoerderer.py
index a2ed50f..9dd1657 100644
--- a/lib/Elemente/VarioFoerderer.py
+++ b/lib/Elemente/VarioFoerderer.py
@@ -60,7 +60,115 @@ class VarioFoerderer(BaseModel):
anzahl_separatoren = int(merkmale.get("Anzahl der Separatoren"))
)
-
+ def get_offset_of_Vario_line(doc, lib_doc, voerder_richtung, winkel, upper_hoehe_vario, lower_hoehe_vario, gefaellestrecke_vario):
+ winkel_VP_offset_vorne = None
+ winkel_VP_offset_hinten = None
+ if (gefaellestrecke_vario.get("Winkel") != None or gefaellestrecke_vario.get("Kurvenrichtung") != None) and ((winkel == 3 and voerder_richtung == "Ab")or voerder_richtung == "Horizontal"):
+ # Überprüfung wo es verbunden ist und mit welchen fördere vorne ist ende der Fahrrichtung
+ if gefaellestrecke_vario.get("h0") != None:
+ if float(gefaellestrecke_vario.get("h0")) == lower_hoehe_vario:
+ if (gefaellestrecke_vario.get("Foerderrichtung") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung") == "Horizontal"):
+ # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_vorne_plusbogen = int(gefaellestrecke_vario.get("Winkel")) +3
+ winkel_vorne = int(gefaellestrecke_vario.get("Winkel"))
+ blockname = (f"Vario_Bogen_auf_{winkel_vorne_plusbogen}°")
+ att_vorne =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_1"]))
+ VP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_1"]))
+ # Ausrechnen des Offsets
+ winkel_VP_offset_hinten = (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.cos(math.radians(3)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.sin(math.radians(3)), VP_1_nachbar_vorne[1],- (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.sin(math.radians(3)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.cos(math.radians(3))
+
+ elif gefaellestrecke_vario.get("Foerderrichtung") == "Ab":
+ # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_vorne_minusbogen = int(gefaellestrecke_vario.get("Winkel")) -3
+ winkel_vorne = int(gefaellestrecke_vario.get("Winkel"))
+
+ blockname = (f"Vario_Bogen_ab_{winkel_vorne_minusbogen}°")
+ att_vorne =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_0"]))
+ VP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_0"]))
+ # Ausrechnung des Offsets
+ winkel_VP_offset_hinten = (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.cos(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.sin(math.radians(3)), VP_0_nachbar_vorne[1],- (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.sin(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.cos(math.radians(3))
+
+ elif float(gefaellestrecke_vario.get("h1")) == upper_hoehe_vario:
+ if (gefaellestrecke_vario.get("Foerderrichtung") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung") == "Horizontal"):
+ # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_hinten_plusbogen = int(gefaellestrecke_vario.get("Winkel")) +3
+ winkel_hinten = int(gefaellestrecke_vario.get("Winkel"))
+
+ blockname = (f"Vario_Bogen_ab_{winkel_hinten_plusbogen}°")
+ att_hinten =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_1"]))
+ VP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_1"]))
+ # Ausrechnung des Offsets
+ winkel_VP_offset_vorne = (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.cos(math.radians(-winkel_hinten)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.sin(math.radians(-winkel_hinten)), VP_0_nachbar_hinten[1],- (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.sin(math.radians(-winkel_hinten)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.cos(math.radians(-winkel_hinten))
+
+ else:
+ # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_hinten_minusbogen = int(gefaellestrecke_vario.get("Winkel")) -3
+ winkel_hinten = int(gefaellestrecke_vario.get("Winkel"))
+
+ blockname = (f"Vario_Bogen_auf_{winkel_hinten_minusbogen}°")
+ att_hinten =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_1"]))
+ VP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_1"]))
+ # Ausrechnung des Offsets
+ winkel_VP_offset_vorne = (SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.cos(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.sin(math.radians(winkel_hinten)), VP_1_nachbar_hinten[1],- (SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.sin(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.cos(math.radians(winkel_hinten))
+
+ # Das gleiche falls der 3 grad Förderer mit zwei Förderer Verbunden ist
+ if (gefaellestrecke_vario.get("Winkel_2") != None or gefaellestrecke_vario.get("Kurvenrichtung_2") != None) and ((winkel == 3 and voerder_richtung == "Ab")or voerder_richtung == "Horizontal"):
+ # Überprüfung wo es verbunden ist und mit welchen fördere vorne ist ende der Fahrrichtung
+ if gefaellestrecke_vario.get("h0_2") != None:
+ if float(gefaellestrecke_vario.get("h0_2")) == lower_hoehe_vario:
+ if (gefaellestrecke_vario.get("Foerderrichtung_2") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung_2") == "Horizontal"):
+ # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_vorne_plusbogen = int(gefaellestrecke_vario.get("Winkel_2")) +3
+ winkel_vorne = int(gefaellestrecke_vario.get("Winkel_2"))
+ blockname = (f"Vario_Bogen_auf_{winkel_vorne_plusbogen}°")
+ att_vorne =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_1"]))
+ VP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_1"]))
+ # Ausrechnen des Offsets
+ winkel_VP_offset_hinten = (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.cos(math.radians(3)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.sin(math.radians(3)), VP_1_nachbar_vorne[1],- (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.sin(math.radians(3)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.cos(math.radians(3))
+
+ elif gefaellestrecke_vario.get("Foerderrichtung_2") == "Ab":
+ # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_vorne_minusbogen = int(gefaellestrecke_vario.get("Winkel_2")) -3
+ winkel_vorne = int(gefaellestrecke_vario.get("Winkel_2"))
+
+ blockname = (f"Vario_Bogen_ab_{winkel_vorne_minusbogen}°")
+ att_vorne =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_0"]))
+ VP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_0"]))
+ # Ausrechnung des Offsets
+ winkel_VP_offset_hinten = (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.cos(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.sin(math.radians(3)), VP_0_nachbar_vorne[1],- (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.sin(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.cos(math.radians(3))
+
+ elif float(gefaellestrecke_vario.get("h1_2")) == upper_hoehe_vario:
+ if (gefaellestrecke_vario.get("Foerderrichtung_2") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung_2") == "Horizontal"):
+ # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_hinten_plusbogen = int(gefaellestrecke_vario.get("Winkel_2")) +3
+ winkel_hinten = int(gefaellestrecke_vario.get("Winkel_2"))
+
+ blockname = (f"Vario_Bogen_ab_{winkel_hinten_plusbogen}°")
+ att_hinten =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_1"]))
+ VP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_1"]))
+ # Ausrechnung des Offsets
+ winkel_VP_offset_vorne = (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.cos(math.radians(-winkel_hinten)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.sin(math.radians(-winkel_hinten)), VP_0_nachbar_hinten[1],- (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.sin(math.radians(-winkel_hinten)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.cos(math.radians(-winkel_hinten))
+
+ else:
+ # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
+ winkel_hinten_minusbogen = int(gefaellestrecke_vario.get("Winkel_2")) -3
+ winkel_hinten = int(gefaellestrecke_vario.get("Winkel_2"))
+
+ blockname = (f"Vario_Bogen_auf_{winkel_hinten_minusbogen}°")
+ att_hinten =plant2dxf.import_block(blockname,lib_doc,doc)
+ SP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_1"]))
+ VP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_1"]))
+ # Ausrechnung des Offsets
+ winkel_VP_offset_vorne = (SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.cos(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.sin(math.radians(winkel_hinten)), VP_1_nachbar_hinten[1],- (SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.sin(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.cos(math.radians(winkel_hinten))
+
+ return winkel_VP_offset_vorne,winkel_VP_offset_hinten
def vario_erstellung(foerderer, doc, lib_doc, config, block, block_name_links, start, ende, voerder_richtung, winkel_VP_offset_vorne, winkel_VP_offset_hinten ):
# Entnehmen der Motor und Umlenk station um die Gefähle auzurechnen und ob man diese tatsächlich einfügen muss
winkel_motor = float(config.get("Ils 2.0 core winkel","winkel_motor"))
@@ -301,20 +409,19 @@ class VarioFoerderer(BaseModel):
layer_umlenk, color_umlenk = plant2dxf.get_insert_color_layer(lib_doc,block_Vario_Umlenkstation_500mm)
block_Vario_Motorstation_500mm = plant2dxf.dreh_block( block_Vario_Motorstation_500mm, doc,lib_doc,math.radians(winkel_motor))
block_Vario_Umlenkstation_500mm = plant2dxf.dreh_block( block_Vario_Umlenkstation_500mm , doc,lib_doc,math.radians(winkel_umlenk))
- if umlenk_vorhanden == True:
+ if motor_vorhanden == True:
block.add_blockref(block_Vario_Umlenkstation_500mm,(start[0] -x,start[1] -y - umlenk_offset_x/2, start[2] - hoehe_vario -umlenk_offset_z/2 ),dxfattribs={"rotation": 270,"layer": layer_umlenk,"color": color_umlenk})
start_Umlenkstation_VP = start[0] - vario_abstand, start[1] -500 *math.cos(math.radians(-winkel_umlenk))+ math.sin(math.radians(-winkel_umlenk))* -45,start[2] + math.sin(math.radians(-winkel_umlenk))*500+ math.cos(math.radians(-winkel_umlenk))*-45
start = (start[0] ,start[1] - umlenk_offset_x,start[2] -umlenk_offset_z)
elif winkel == 3:
- start_Umlenkstation_VP = start[0] - vario_abstand, start[1]+ winkel_VP_offset_vorne[0],start[2] -winkel_VP_offset_hinten[2]
- if motor_vorhanden == True:
+ start_Umlenkstation_VP = start[0] - vario_abstand, start[1]+ winkel_VP_offset_vorne[0],start[2] -winkel_VP_offset_vorne[2]
+ if umlenk_vorhanden == True:
block.add_blockref(block_Vario_Motorstation_500mm, (ende[0]-x , ende[1] + motor_offset_x/2 -y ,ende[2] - hoehe_vario + motor_offset_z/2),dxfattribs={"rotation": 270,"layer": layer_motor,"color": color_motor})
ende_Motor_VP = ende[0] - vario_abstand, ende[1] +500 *math.cos(math.radians(-winkel_motor))+ math.sin(math.radians(-winkel_motor))* -45,ende[2] - math.sin(math.radians(-winkel_motor))*500+ math.cos(math.radians(-winkel_motor))*-45
ende = ende[0] , ende[1] + motor_offset_x,ende[2] +motor_offset_z
elif winkel == 3:
- ende_Motor_VP = ende[0] - vario_abstand, ende[1]+ winkel_VP_offset_hinten[0] ,ende[2] - winkel_VP_offset_vorne[2]
-
+ ende_Motor_VP = ende[0] - vario_abstand, ende[1]- winkel_VP_offset_vorne[0] ,ende[2] - winkel_VP_offset_hinten[2]
if winkel != 3:
winkel_core = int(config.get("Ils 2.0 core winkel","winkel_boegen"))
winkel_minus = winkel - winkel_core
diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py
index 9405b10..2c51110 100644
--- a/lib/plant2dxf.py
+++ b/lib/plant2dxf.py
@@ -162,8 +162,7 @@ def import_block(block_name: str, from_doc, to_doc, winkel = None) -> None:
return att_def
def dreh_block(block_name: str, to_doc,lib_doc, winkel) :
- """Nimmt ein schon importierten Block und erstellt einen neuen der an der y_axis gedreht wird
- hauptsächlich für vario Bogen aktuell verwendet
+ """Nimmt ein schon importierten Block und erstellt einen neuen der an der y_axis oder x_axis gedreht wird
"""
dreh_block_name = block_name +f"_{math.degrees(winkel)}"
layer, color = get_insert_color_layer(lib_doc,block_name)
@@ -184,7 +183,7 @@ def dreh_block(block_name: str, to_doc,lib_doc, winkel) :
return dreh_block_name
def handle_ils_2_0_kreisel(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,strecken_nachbarn,config,config_allgemein):
- # Erstelle Kreisel-Objekt aus merkmale
+ """Erstellt ein Kreisel in der neuen Dxf"""
kreisel = Kreisel.Kreisel.from_merkmale(teileid, x, y, merkmale)
block_scanner = "SCAN"
block_separatoren = "S-LP"
@@ -230,6 +229,7 @@ def handle_ils_2_0_kreisel(msp, teileid, merkmale, x, y, doc, lib_doc, verbose,
def handle_ils_2_0_eckrad(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
+ """Erstellt ein Eckrad in der neuen Dxf"""
import_block("AN8",lib_doc,doc)
import_block("Richtungspfeil",lib_doc,doc)
eckrad_rechts = "eckrad_UZS"
@@ -253,8 +253,8 @@ def handle_ils_2_0_eckrad(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, s
msp.add("AN8",x,y,hight)
def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
+ """Erstellt eine Gefällestrecke in der neuen Dxf"""
#Vorbereitung der attributen
-
gefaelle_objekt = Gefaehllestrecke.Gefaellestrecke.from_merkmale(teileid,x,y,merkmale)
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
@@ -610,6 +610,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation,"layer": gefaelle_layer})
def anzahl_seperatoren_oder_scan(msp, x, y, doc, lib_doc, klassen_objekt, hoehe, rotation):
+ """Importiert alle seperatoren und/oder scanner für das nötige objekt"""
separatoren = klassen_objekt.anzahl_separatoren
scanner = klassen_objekt.anzahl_scanner
if rotation == 0 or rotation == -180:
@@ -655,6 +656,7 @@ def anzahl_seperatoren_oder_scan(msp, x, y, doc, lib_doc, klassen_objekt, hoehe,
def add_attributes_to_block(block, attributes):
+
"""
Fügt einem bestehenden ezdxf-Block Attribut-Definitionen hinzu.
@@ -673,6 +675,7 @@ def add_attributes_to_block(block, attributes):
a.is_invisible = True
def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
+ """Erstellt ein Vario Förderer in der neuen Dxf"""
foerderer = VarioFoerderer.VarioFoerderer.from_merkmale(teileid,x,y,merkmale)
# für spätere Namens benenung der Vario forderer
motor_vorhanden = foerderer.hat_motor
@@ -719,111 +722,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
break
laenge = foerderer.laenge
# Ausrechnung der nötigen Offset falls der Vario Förderer ab mit drei grad mit einem anderen Verbunden ist
- if (gefaellestrecke_vario.get("Winkel") != None or gefaellestrecke_vario.get("Kurvenrichtung") != None) and ((winkel == 3 and voerder_richtung == "Ab")or voerder_richtung == "Horizontal"):
- # Überprüfung wo es verbunden ist und mit welchen fördere vorne ist ende der Fahrrichtung
- if gefaellestrecke_vario.get("h0") != None:
- if float(gefaellestrecke_vario.get("h0")) == lower_hoehe_vario:
- if (gefaellestrecke_vario.get("Foerderrichtung") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung") == "Horizontal"):
- # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
- winkel_vorne_plusbogen = int(gefaellestrecke_vario.get("Winkel")) +3
- winkel_vorne = int(gefaellestrecke_vario.get("Winkel"))
- blockname = (f"Vario_Bogen_ab_{winkel_vorne_plusbogen}°")
- att_vorne =import_block(blockname,lib_doc,doc)
- SP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_1"]))
- VP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_1"]))
- # Ausrechnen des Offsets
- winkel_VP_offset_vorne = (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.cos(math.radians(-winkel_vorne)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.sin(math.radians(-winkel_vorne)), VP_1_nachbar_vorne[1],- (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.sin(math.radians(-winkel_vorne)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.cos(math.radians(-winkel_vorne))
-
- elif gefaellestrecke_vario.get("Foerderrichtung") == "Ab":
- # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
- winkel_vorne_minusbogen = int(gefaellestrecke_vario.get("Winkel")) -3
- winkel_vorne = int(gefaellestrecke_vario.get("Winkel"))
-
- blockname = (f"Vario_Bogen_ab_{winkel_vorne_minusbogen}°")
- att_vorne =import_block(blockname,lib_doc,doc)
- SP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_0"]))
- VP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_0"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_vorne = (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.cos(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.sin(math.radians(3)), VP_0_nachbar_vorne[1],- (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.sin(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.cos(math.radians(3))
-
- elif float(gefaellestrecke_vario.get("h1")) == upper_hoehe_vario:
- if (gefaellestrecke_vario.get("Foerderrichtung") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung") == "Horizontal"):
- # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
-
- winkel_hinten_plusbogen = int(gefaellestrecke_vario.get("Winkel")) +3
- winkel_hinten = int(gefaellestrecke_vario.get("Winkel"))
-
- blockname = (f"Vario_Bogen_auf_{winkel_hinten_plusbogen}°")
- att_hinten =import_block(blockname,lib_doc,doc)
- SP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_0"]))
- VP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_0"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_hinten = (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.cos(math.radians(3)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.sin(math.radians(3)), VP_0_nachbar_hinten[1],- (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.sin(math.radians(3)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.cos(math.radians(3))
-
- else:
- # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
- winkel_hinten_minusbogen = int(gefaellestrecke_vario.get("Winkel")) -3
- winkel_hinten = int(gefaellestrecke_vario.get("Winkel"))
-
- blockname = (f"Vario_Bogen_auf_{winkel_hinten_minusbogen}°")
- att_hinten =import_block(blockname,lib_doc,doc)
- SP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_1"]))
- VP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_1"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_hinten = (SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.cos(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.sin(math.radians(winkel_hinten)), VP_1_nachbar_hinten[1],- (SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.sin(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.cos(math.radians(winkel_hinten))
-
- # Das gleiche falls der 3 grad Förderer mit zwei Förderer Verbunden ist
- if (gefaellestrecke_vario.get("Winkel_2") != None or gefaellestrecke_vario.get("Kurvenrichtung")!= None):
- # Überprüfung wo es verbunden ist und mit welchen fördere vorne ist ende der Fahrrichtung
- if gefaellestrecke_vario.get("h0_2") != None:
- if float(gefaellestrecke_vario.get("h0_2")) == lower_hoehe_vario:
- if (gefaellestrecke_vario.get("Foerderrichtung_2") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung_2") == "Horizontal"):
- # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
-
- winkel_vorne_plusbogen = int(gefaellestrecke_vario.get("Winkel_2")) +3
- winkel_vorne = int(gefaellestrecke_vario.get("Winkel_2"))
-
- blockname = (f"Vario_Bogen_ab_{winkel_vorne_plusbogen}°")
- att_vorne =import_block(blockname,lib_doc,doc)
- SP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_1"]))
- VP_1_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_1"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_vorne = (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.cos(math.radians(-winkel_vorne)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.sin(math.radians(-winkel_vorne)), VP_1_nachbar_vorne[1],- (SP_1_nachbar_vorne[0] - VP_1_nachbar_vorne[0]) * math.sin(math.radians(-winkel_vorne)) + (SP_1_nachbar_vorne[2] - VP_1_nachbar_vorne[2])*math.cos(math.radians(-winkel_vorne))
-
- else:
- # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
-
- winkel_vorne_minusbogen = int(gefaellestrecke_vario.get("Winkel_2")) -3
- winkel_vorne = int(gefaellestrecke_vario.get("Winkel_2"))
-
- blockname = (f"Vario_Bogen_ab_{winkel_vorne_minusbogen}°")
- att_vorne =import_block(blockname,lib_doc,doc)
- SP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_SP_0"]))
- VP_0_nachbar_vorne = list(float(att)for att in re.split(r"[;,]", att_vorne["DELTA_VP_0"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_vorne = (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.cos(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.sin(math.radians(3)), VP_0_nachbar_vorne[1],- (SP_0_nachbar_vorne[0] - VP_0_nachbar_vorne[0]) * math.sin(math.radians(3)) + (SP_0_nachbar_vorne[2] - VP_0_nachbar_vorne[2])*math.cos(math.radians(3))
-
- elif float(gefaellestrecke_vario.get("h1_2")) == upper_hoehe_vario:
- if (gefaellestrecke_vario.get("Foerderrichtung_2") == "Auf" or gefaellestrecke_vario.get("Foerderrichtung_2") == "Horizontal"):
- # Nehmen des winkels und diesen plus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
-
- winkel_hinten_plusbogen = int(gefaellestrecke_vario.get("Winkel_2")) +3
- blockname = (f"Vario_Bogen_auf_{winkel_hinten_plusbogen}°")
- att_hinten =import_block(blockname,lib_doc,doc)
- SP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_0"]))
- VP_0_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_0"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_hinten = (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.cos(math.radians(3)) + (SP_0_nachbar_hinten[2] - VP_0_nachbar_hinten[2])*math.sin(math.radians(3)), VP_0_nachbar_hinten[1],- (SP_0_nachbar_hinten[0] - VP_0_nachbar_hinten[0]) * math.sin(math.radians(3)) + (SP_0_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.cos(math.radians(3))
- else:
- # Nehmen des winkels und diesen minus 3 nehmen, um den Bogen zu imporieren für heraufinden der Delta werte
- winkel_hinten_minusbogen = int(gefaellestrecke_vario.get("Winkel")) -3
- winkel_hinten = int(gefaellestrecke_vario.get("Winkel_2"))
- blockname = (f"Vario_Bogen_auf_{winkel_hinten_minusbogen}°")
- att_hinten =import_block(blockname,lib_doc,doc)
- SP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_SP_1"]))
- VP_1_nachbar_hinten = list(float(att)for att in re.split(r"[;,]", att_hinten["DELTA_VP_1"]))
- # Ausrechnung des Offsets
- winkel_VP_offset_hinten = ((SP_1_nachbar_hinten[0] - VP_1_nachbar_hinten[0]) * math.cos(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.sin(math.radians(winkel_hinten))), VP_1_nachbar_hinten[1],- (SP_1_nachbar_hinten[0] - VP_1_nachbar_vorne[0]) * math.sin(math.radians(winkel_hinten)) + (SP_1_nachbar_hinten[2] - VP_1_nachbar_hinten[2])*math.cos(math.radians(winkel_hinten))
+ winkel_VP_offset_vorne, winkel_VP_offset_hinten = VarioFoerderer.VarioFoerderer.get_offset_of_Vario_line(doc, lib_doc, voerder_richtung, winkel, upper_hoehe_vario, lower_hoehe_vario, gefaellestrecke_vario)
# Für spätere berechnung schauen ob der erste Kreis in der Liste höher ist
if upper_hoehe_vario == gefaellestrecke_vario.get("Hoehe0"):
@@ -1216,6 +1115,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
msp.add_blockref(blockname,(x,y,hoehe_vario),dxfattribs={"rotation": rotation})
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)
kurvenwinkel = voerder_kurve.winkel
h_zwischen = voerder_kurve.hight_zwischen
@@ -1229,6 +1129,7 @@ def handle_ils_2_0_kurve_angetrieben(msp, teileid, merkmale, x, y, doc, lib_doc,
def handle_ils_2_0_kurve(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
+ """Erstellt eine Kurve (Gefälle Kurve) in der neuen Dxf"""
rotation= float(merkmale.get("Drehung"))
h0 = float(merkmale.get("Höhe Anfang")) * 1000
h1 = float(merkmale.get("Höhe Ende")) * 1000
@@ -1240,6 +1141,7 @@ def handle_ils_2_0_kurve(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, sy
msp.add_blockref("AN8",(x,y,hz),dxfattribs={"rotation": rotation})
def handle_bt___beladung(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
+ """Erstellt ein BT Element in der neuen Dxf"""
bt_element = Bt_element.Bt_element.from_merkmale(teileid,x,y,merkmale)
rotation = bt_element.drehung
hight = bt_element.hoehe
@@ -1248,6 +1150,7 @@ def handle_bt___beladung(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, sy
msp.add_blockref(blockname,(x,y,hight),dxfattribs={"rotation": rotation})
def handle_bt___entladung(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
+ """Erstellt ein BT Element in der neuen Dxf"""
bt_element = Bt_element.Bt_element.from_merkmale(teileid,x,y,merkmale)
rotation = bt_element.drehung
hight = bt_element.hoehe
@@ -1291,6 +1194,7 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,
def get_insert_color_layer(lib_doc, blockname):
+ """Gibt den Layer und die Color für den Jeweiligen block in der Libary datei zurück"""
msp_lib = lib_doc.modelspace()
color = 0
layer = 0
@@ -1326,6 +1230,7 @@ def get_libfile_cfg(teileart, cfg_path):
return None
def get_nachbar_information(csv_path:Path) -> dict:
+ """Gibt die Art und nötige Elemente den Nachbardateien zurück"""
geraden = []
kreisel =[]
strecken_nachbarn = []
@@ -1368,15 +1273,20 @@ def get_nachbar_information(csv_path:Path) -> dict:
h0 = foerderer_objekt.h0
h1 = foerderer_objekt.h1
foerderrichtung = foerderer_objekt.foerderer_richtung
- geraden.append({"Id": Id,"NachbarIds":NachbarIds, "Winkel":winkel, "h0": h0,"h1": h1,"Foerderrichtung":foerderrichtung })
+ geraden.append({"Id": Id,"NachbarIds":NachbarIds, "Winkel":winkel, "h0": h0,"h1": h1,"Foerderrichtung":foerderrichtung
+ })
if bezeichner =="ILS 2.0 Kurve angetrieben":
Id = row["TeileId"].strip()
+ planquadrat = row["Planquadrat"]
+ x, y = extract_coords(planquadrat)
merkmale = parse_merkmale(row.get("Merkmale", ""))
- h0 = merkmale.get("Höhe Anfang")
- h1 = merkmale.get("Höhe Ende")
- kurvenrichtung = merkmale.get("Kurvenrichtung")
- tefkurve = merkmale.get("AntriebNebenStrecke")
- angetriebene_kurve.append({"Id": Id,"H0": h0,"H1":h1,"kurvenrichtung":kurvenrichtung,"Tefkurve": tefkurve})
+ kurve_angetrieben = Angetriebene_Kurve.Angetriebene_Kurve.from_merkmale(Id,x,y,merkmale)
+ h0 = kurve_angetrieben.hoehe0
+ h1 = kurve_angetrieben.hoehe1
+ kurvenrichtung = kurve_angetrieben.kurvenrichtung
+ tefkurve = kurve_angetrieben.antrieb
+ kurve_winkel = kurve_angetrieben.winkel
+ angetriebene_kurve.append({"Id": Id,"H0": h0,"H1":h1,"kurvenrichtung":kurvenrichtung,"Tefkurve": tefkurve,"Kurve_winkel": kurve_winkel})
for gerade in geraden:
anweisungen = 0
voerder_anweisung = 0
@@ -1435,8 +1345,6 @@ def get_nachbar_information(csv_path:Path) -> dict:
return strecken_nachbarn
-
-
# --------------------------------------------------------- Hauptfunktion
def main(csv_path: Path, lib_path: Path, cfg_path: Path, allgemein_cfg_path: Path,
output_path: Path, output_path_jason: Path, verbose=False, logger=None ):