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 ):