Anpasung des Offset berechnung für antrieb Kurven

This commit is contained in:
2025-12-15 09:13:10 +01:00
parent fabed828db
commit a3163e12fe
2 changed files with 53 additions and 19 deletions
+44 -7
View File
@@ -60,9 +60,14 @@ 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):
def get_offset_of_Vario_line(doc, lib_doc, foerderer, gefaellestrecke_vario):
winkel_VP_offset_vorne = None
winkel_VP_offset_hinten = None
voerder_richtung = foerderer.foerderer_richtung
winkel = int(foerderer.winkel)
rotation = foerderer.drehung
upper_hoehe_vario= foerderer.h1
lower_hoehe_vario = foerderer.h0
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 :
@@ -121,10 +126,27 @@ class VarioFoerderer(BaseModel):
VP_0_nachbar = list(float(att)for att in re.split(r"[;,]", att_kurve["DELTA_VP_0"]))
SP_1_nachbar = list(float(att)for att in re.split(r"[;,]", att_kurve["DELTA_SP_1"]))
VP_1_nachbar= list(float(att)for att in re.split(r"[;,]", att_kurve["DELTA_VP_1"]))
if float(gefaellestrecke_vario.get("vario_hoehe_1")) == lower_hoehe_vario:
winkel_VP_offset_hinten = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
if voerder_richtung == "Ab":
if float(gefaellestrecke_vario.get("vario_hoehe_1")) == lower_hoehe_vario:
winkel_VP_offset_hinten = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
else:
winkel_VP_offset_vorne = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
else:
winkel_VP_offset_vorne = (SP_0_nachbar[0] -VP_0_nachbar[0] ),0,(SP_0_nachbar[2] - VP_0_nachbar[2] )
x_angetrieben = gefaellestrecke_vario.get("X_angetrieben")
y_angetrieben = gefaellestrecke_vario.get("Y_angetrieben")
x = foerderer.x
y = foerderer.y
rotation_zwischen = rotation
if rotation_zwischen == 0.0:
rotation_zwischen = -360.0
if (((-360.0<= rotation_zwischen< -270.0)and y > y_angetrieben) or ((-90.0< rotation< 0.0)and y > y_angetrieben) or
((-270.0< rotation_zwischen< -90.0)and y < y_angetrieben) or
(rotation == -90.0 and x < x_angetrieben) or ((rotation == -270.0)and x<x_angetrieben)):
winkel_VP_offset_hinten = winkel_VP_offset_hinten = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
else:
winkel_VP_offset_vorne = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
# 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_1") != None) and ((winkel == 3 and voerder_richtung == "Ab")or voerder_richtung == "Horizontal"):
@@ -185,10 +207,25 @@ class VarioFoerderer(BaseModel):
VP_0_nachbar = list(float(att)for att in re.split(r"[;,]", att_kurve["DELTA_VP_0"]))
SP_1_nachbar = list(float(att)for att in re.split(r"[;,]", att_kurve["DELTA_SP_1"]))
VP_1_nachbar= list(float(att)for att in re.split(r"[;,]", att_kurve["DELTA_VP_1"]))
if float(gefaellestrecke_vario.get("vario_hoehe_1_1")) == lower_hoehe_vario:
winkel_VP_offset_hinten = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
if voerder_richtung == "Ab":
if float(gefaellestrecke_vario.get("vario_hoehe_1")) == lower_hoehe_vario:
winkel_VP_offset_hinten = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
else:
winkel_VP_offset_vorne = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
else:
winkel_VP_offset_vorne = (SP_0_nachbar[0] -VP_0_nachbar[0] ),0,(SP_0_nachbar[2] - VP_0_nachbar[2] )
x_angetrieben = gefaellestrecke_vario.get("X_angetrieben")
y_angetrieben = gefaellestrecke_vario.get("Y_angetrieben")
x = foerderer.x
y = foerderer.y
rotation_zwischen = rotation
if rotation_zwischen == 0.0:
rotation_zwischen = -360.0
if (((-360.0<= rotation_zwischen< -270.0)and y > y_angetrieben) or ((-90.0< rotation< 0.0)and y > y_angetrieben) or
((-270.0< rotation_zwischen< -90.0)and y < y_angetrieben) or
(rotation == -90.0 and x < x_angetrieben) or ((rotation == -270.0)and x<x_angetrieben)):
winkel_VP_offset_hinten = winkel_VP_offset_hinten = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
else:
winkel_VP_offset_vorne = (SP_1_nachbar[0] -VP_1_nachbar[0] ),0,( SP_1_nachbar[2]- VP_1_nachbar[2])
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 ):