weiteres refactoring
This commit is contained in:
+2
-1
@@ -13,7 +13,8 @@ libfile = omniflo_lib.dxf
|
||||
|
||||
[BT]
|
||||
libfile = ils_lib.dxf
|
||||
|
||||
[TEF]
|
||||
libfile = omniflo_lib.dxf
|
||||
[dxf2lib]
|
||||
# Text-Positionierung und Formatierung
|
||||
# Vertikaler Abstand des Texts über dem Block (in DXF-Einheiten)
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
import math
|
||||
import plant2dxf
|
||||
from ezdxf.math import Matrix44
|
||||
|
||||
|
||||
class Gefaellestrecke(BaseModel):
|
||||
teileid: str
|
||||
x: float = Field(description="X-Koordinate des Foerder-Zentrums")
|
||||
y: float = Field(description="Y-Koordinate des Foerder-Zentrums")
|
||||
laenge:float = Field(description = "Länge des Förderers")
|
||||
h0: float = Field(description="Höhe Unten in Merkmale")
|
||||
h1: float = Field(description="Höhe Oben in Merkmale")
|
||||
drehung: float = Field(default=0.0, description="Drehung an z achse")
|
||||
anzahl_scanner: int = Field(default=0, description="Anzahl der Scanner")
|
||||
anzahl_separatoren: int = Field(default=0, description="Anzahl der Separatoren")
|
||||
|
||||
@property
|
||||
def hight_zwischen(self):
|
||||
return ((self.h0 + self.h1) /2)
|
||||
|
||||
@classmethod
|
||||
def from_merkmale(cls, teileid: str, x: float, y: float, merkmale: dict) -> 'Gefaellestrecke':
|
||||
|
||||
h0 = float(merkmale.get("Höhe unten")) * 1000
|
||||
h1 = float(merkmale.get("Höhe oben")) * 1000
|
||||
laenge = float(merkmale.get("Länge in Meter")) * 1000
|
||||
return cls(
|
||||
teileid = teileid,
|
||||
laenge = laenge,
|
||||
x = x,
|
||||
y = y,
|
||||
h0 = h0,
|
||||
h1 =h1,
|
||||
drehung = float(merkmale.get("Drehung")),
|
||||
anzahl_scanner = int(merkmale.get("Anzahl der Scanner")),
|
||||
anzahl_separatoren = int(merkmale.get("Anzahl der Separatoren"))
|
||||
)
|
||||
def hat_motor_umlenk_station (doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, gefaellestrecke_nachbarn):
|
||||
hat_motor_0 = None
|
||||
hat_motor_1 = None
|
||||
hat_umlenk_0 = None
|
||||
hat_umlenk_1 = None
|
||||
tefkurve_0 = None
|
||||
tefkurve_1 = None
|
||||
if "Kurvenrichtung" in gefaellestrecke_nachbarn:
|
||||
vario_hoehe_0 = float(gefaellestrecke_nachbarn.get("vario_hoehe_0")) * 1000
|
||||
vario_hoehe_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_1")) * 1000
|
||||
kurvenrichtung = gefaellestrecke_nachbarn.get("Kurvenrichtung")
|
||||
tefkurve_0 = gefaellestrecke_nachbarn.get("Tefkurve")
|
||||
if (kurvenrichtung == "links" and tefkurve_0 == "Aussen") or kurvenrichtung == "rechts" and tefkurve_0 == "Innen":
|
||||
tefkurve_0 = "links"
|
||||
else:
|
||||
tefkurve_0 = "rechts"
|
||||
block_Vario_Umlenkstation_500mm ="Vario_Umlenkstation_500mm"
|
||||
block_Vario_Motorstation_500mm = "Vario_Motorstation_500mm"
|
||||
blockname_motor_links = block_Vario_Motorstation_500mm +"links"
|
||||
blockname_umlenk_links = block_Vario_Umlenkstation_500mm + "links"
|
||||
plant2dxf.import_block(block_Vario_Umlenkstation_500mm,lib_doc,doc)
|
||||
plant2dxf.import_block(block_Vario_Motorstation_500mm,lib_doc,doc)
|
||||
block_Vario_Umlenkstation_500mm =plant2dxf.dreh_block(block_Vario_Umlenkstation_500mm,doc,math.radians(3))
|
||||
block_Vario_Motorstation_500mm =plant2dxf.dreh_block(block_Vario_Motorstation_500mm,doc,math.radians(3))
|
||||
if blockname_motor_links not in doc.blocks:
|
||||
matrix = Matrix44.scale(1,-1,1)
|
||||
block_motor_links = doc.blocks.new(name=blockname_motor_links,base_point=(0,0,0))
|
||||
block_umlenk_links = doc.blocks.new(name=blockname_umlenk_links,base_point=(0,0,0))
|
||||
block_motor_rechts = doc.blocks[block_Vario_Motorstation_500mm]
|
||||
block_umlenk_rechts = doc.blocks[block_Vario_Umlenkstation_500mm]
|
||||
for e in block_motor_rechts:
|
||||
copy = e.copy()
|
||||
copy.transform(matrix)
|
||||
block_motor_links.add_entity(copy)
|
||||
|
||||
for e in block_umlenk_rechts:
|
||||
copy = e.copy()
|
||||
copy.transform(matrix)
|
||||
block_umlenk_links.add_entity(copy)
|
||||
|
||||
if upper_hoehe_gefaehlle > lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0 == upper_hoehe_gefaehlle or vario_hoehe_1 == upper_hoehe_gefaehlle:
|
||||
hat_motor_0 = True
|
||||
else:
|
||||
hat_umlenk_0 = True
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0 == lower_hoehe_gefaehlle or vario_hoehe_1 == lower_hoehe_gefaehlle:
|
||||
hat_motor_0 = True
|
||||
else:
|
||||
hat_umlenk_0 = True
|
||||
if "Kurvenrichtung_1" in gefaellestrecke_nachbarn:
|
||||
vario_hoehe_0_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_0_1")) * 1000
|
||||
vario_hoehe_1_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_1_1")) * 1000
|
||||
kurvenrichtung_1 = gefaellestrecke_nachbarn.get("Kurvenrichtung_1")
|
||||
tefkurve_1 = gefaellestrecke_nachbarn.get("Tefkurve_1")
|
||||
if (kurvenrichtung_1 == "links" and tefkurve_1 == "Aussen") or kurvenrichtung_1 == "rechts" and tefkurve_1 == "Innen":
|
||||
tefkurve_0 = "links"
|
||||
else:
|
||||
tefkurve_0 = "rechts"
|
||||
if upper_hoehe_gefaehlle > lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0_1 == upper_hoehe_gefaehlle or vario_hoehe_1_1 == upper_hoehe_gefaehlle:
|
||||
hat_motor_1 = True
|
||||
else:
|
||||
hat_umlenk_1 = True
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0_1 == lower_hoehe_gefaehlle or vario_hoehe_1_1 == lower_hoehe_gefaehlle:
|
||||
hat_motor_1 = True
|
||||
else:
|
||||
hat_umlenk_1 = True
|
||||
return hat_motor_0,hat_umlenk_0,hat_motor_1,hat_umlenk_1, tefkurve_0, tefkurve_1
|
||||
@@ -0,0 +1,438 @@
|
||||
from ezdxf.entities import Line
|
||||
import math
|
||||
import plant2dxf
|
||||
|
||||
RADIUS = 400
|
||||
def erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge,blockname,config, hight = None, block_vario = None, vario_richtung = None, verbungden_höher = None,gefaelle_block=None,start = None,ende = None,mit_horizontal_verbunden = None):
|
||||
halbe_laenge = laenge / 2
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
|
||||
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
|
||||
winkel_as = float(config.get("Ils 2.0 core winkel", "winkel_as"))
|
||||
winkel_es = float(config.get("Ils 2.0 core winkel", "winkel_es"))
|
||||
asoffset_y = asoffset * math.cos(math.radians(winkel_as))
|
||||
asoffset_z = asoffset * math.sin(math.radians(winkel_as))
|
||||
esoffset_y = esoffset * math.cos(math.radians(winkel_es))
|
||||
esoffset_z = esoffset * math.sin(math.radians(winkel_es))
|
||||
block_as = None
|
||||
block_es = None
|
||||
if (( hight == "higher" and drehung0 == "GUZS" )or (vario_richtung == "Auf"and verbungden_höher == False and drehung0 == "GUZS")or
|
||||
(vario_richtung == "Ab" and verbungden_höher == True and drehung0 == "GUZS")or (vario_richtung == "Horizontal" and drehung0 == "GUZS" and (mit_horizontal_verbunden == "unten_drehung_0_or_-90" or mit_horizontal_verbunden == "oben_drehung_-180_or_-270"))):
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif ((hight == "lower" and drehung0 == "GUZS") or (vario_richtung == "Auf"and verbungden_höher == True and drehung0 == "GUZS") or
|
||||
(vario_richtung == "Ab" and verbungden_höher == False and drehung0 == "GUZS")or (vario_richtung == "Horizontal" and drehung0 == "GUZS" and (mit_horizontal_verbunden == "oben_drehung_0_or_-90" or mit_horizontal_verbunden == "unten_drehung_-180_or_-270"))):
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((hight == "higher" and drehung0 == "UZS")or (vario_richtung == "Auf"and verbungden_höher == False and drehung0 == "UZS") or
|
||||
(vario_richtung == "Ab" and verbungden_höher == True and drehung0 == "UZS")or (vario_richtung == "Horizontal" and drehung0 == "UZS" and (mit_horizontal_verbunden == "unten_drehung_0_or_-90" or mit_horizontal_verbunden == "oben_drehung_-180_or_-270"))):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif (( hight == "lower" and drehung0 == "UZS") or (vario_richtung == "Auf" and verbungden_höher == True and drehung0 == "UZS") or
|
||||
(vario_richtung == "Ab" and verbungden_höher == False and drehung0 == "UZS")or (vario_richtung == "Horizontal" and drehung0 == "UZS" and (mit_horizontal_verbunden == "oben_drehung_0_or_-90" or mit_horizontal_verbunden == "unten_drehung_-180_or_-270"))):
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
if block_as != None:
|
||||
block_as = plant2dxf.dreh_block(block_as,doc,math.radians(winkel_as))
|
||||
if vario_richtung == "Auf" or vario_richtung =="Horizontal":
|
||||
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||
ende = (x , y - dy + asoffset_y ,lower_hoehe_gefaehlle - asoffset_z)
|
||||
block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset_y -y,ende[2] -hoehe_gefaehlle + asoffset_z),dxfattribs={"rotation": 180})
|
||||
return start, ende
|
||||
elif vario_richtung == "Ab":
|
||||
start = (x , y + dy - asoffset_y,upper_hoehe_gefaehlle - asoffset_z)
|
||||
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||
block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] -hoehe_gefaehlle + asoffset_z))
|
||||
return start,ende
|
||||
|
||||
if laenge > asoffset:
|
||||
start[1] = start[1] - asoffset_y
|
||||
start[2] = start[2] - asoffset_z
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
copy= line.copy()
|
||||
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||
gefaelle_block.add_entity(copy)
|
||||
gefaelle_block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] -hoehe_gefaehlle + asoffset_z))
|
||||
return False
|
||||
else:
|
||||
msp.add_blockref(block_as,(x,y,upper_hoehe_gefaehlle))
|
||||
return True
|
||||
elif block_es != None:
|
||||
block_es = plant2dxf.dreh_block(block_es,doc,math.radians(winkel_es))
|
||||
if vario_richtung == "Auf" or vario_richtung =="Horizontal":
|
||||
start = (x , y + dy-esoffset_y ,upper_hoehe_gefaehlle + esoffset_z)
|
||||
ende = (x , y - dy,lower_hoehe_gefaehlle)
|
||||
block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset_y -y,start[2] - hoehe_gefaehlle - esoffset_z),dxfattribs={"rotation": 180})
|
||||
return start, ende
|
||||
elif vario_richtung == "Ab":
|
||||
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - hoehe_gefaehlle -esoffset_z))
|
||||
return start,ende
|
||||
|
||||
if laenge > esoffset:
|
||||
ende[1] = ende[1] + esoffset_y
|
||||
ende[2] = ende[2] + esoffset_z
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
copy= line.copy()
|
||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||
gefaelle_block.add_entity(copy)
|
||||
gefaelle_block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - hoehe_gefaehlle -esoffset_z))
|
||||
return False
|
||||
else:
|
||||
msp.add_blockref(block_es,(x,y,lower_hoehe_gefaehlle))
|
||||
return True
|
||||
|
||||
def gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2, drehung0, drehung1, laenge, hight_position, blockname,config, block_vario = None,voerder_richtung = None, am_kreisel = None, erster_kreisel_höher = None,y1=None,z1 =None):
|
||||
#erstellung des blockes falls die gefaelle strecke mit einem kreisel verbunden ist, mehrere variation von selben weil diese nötig sind sobald man die richtigen inserts bekommen
|
||||
|
||||
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
|
||||
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
|
||||
winkel_as = float(config.get("Ils 2.0 core winkel", "winkel_as"))
|
||||
winkel_es = float(config.get("Ils 2.0 core winkel", "winkel_es"))
|
||||
asoffset_y = asoffset * math.cos(math.radians(winkel_as))
|
||||
asoffset_z = asoffset * math.sin(math.radians(winkel_as))
|
||||
esoffset_y = esoffset * math.cos(math.radians(winkel_es))
|
||||
esoffset_z = esoffset * math.sin(math.radians(winkel_es))
|
||||
block_as = None
|
||||
block_es = None
|
||||
halbe_laenge = laenge / 2
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
middle_hoehe = upper_hoehe_gefaehlle
|
||||
upper_hoehe_gefaehlle = lower_hoehe_gefaehlle
|
||||
lower_hoehe_gefaehlle = middle_hoehe
|
||||
|
||||
if richtung2!= "DEFAULT" or am_kreisel != None:
|
||||
if ((drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher") or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel== 2 and erster_kreisel_höher == True)) and drehung0 == "GUZS" and drehung1== "GUZS") or
|
||||
(voerder_richtung == "Ab"and ((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel== 2 and erster_kreisel_höher == False)) and drehung0 == "GUZS" and drehung1== "GUZS")):
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "GUZS" and drehung1 == "GUZS") or
|
||||
(am_kreisel != None and drehung0 == "GUZS" and drehung1 == "GUZS")):
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif (( drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel == 2 and erster_kreisel_höher == True))and (drehung0 == "UZS" and drehung1 == "GUZS")) or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == True) or (am_kreisel ==2 and erster_kreisel_höher ==False))and (drehung0 == "GUZS" and drehung1 == "UZS"))):
|
||||
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel == 2 and erster_kreisel_höher == False))and (drehung0 == "UZS" and drehung1 == "GUZS")) or
|
||||
(voerder_richtung == "Ab"and ((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel == 2 and erster_kreisel_höher == True))and (drehung0 == "GUZS" and drehung1 == "UZS"))):
|
||||
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "UZS" and drehung1 == "UZS" and hight_position == "higher")or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel== 2 and erster_kreisel_höher == True)) and drehung0 == "UZS" and drehung1== "UZS")or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel== 2 and erster_kreisel_höher == False)) and drehung0 == "UZS" and drehung1== "UZS")):
|
||||
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif (((drehung0 == "UZS" and drehung1 == "UZS")or
|
||||
(am_kreisel!= None and drehung0 == "UZS" and drehung1 == "UZS"))):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif (((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher"))or
|
||||
(voerder_richtung == "Auf"and ((am_kreisel == 1 and erster_kreisel_höher == False) or (am_kreisel ==2 and erster_kreisel_höher ==True))and (drehung0 == "GUZS" and drehung1 == "UZS")) or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel == 2 and erster_kreisel_höher == False))and (drehung0 == "UZS" and drehung1 == "GUZS"))):
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")or
|
||||
(voerder_richtung == "Auf"and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel == 2 and erster_kreisel_höher == False))and (drehung0 == "GUZS" and drehung1 == "UZS")) or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel == 2 and erster_kreisel_höher == True))and (drehung0 == "UZS" and drehung1 == "GUZS"))):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
|
||||
if block_es != None:
|
||||
block_es = plant2dxf.dreh_block(block_es,doc,math.radians(winkel_es))
|
||||
if voerder_richtung == "Auf":
|
||||
start = (x , y+ dy - esoffset_y,upper_hoehe_gefaehlle + esoffset_z)
|
||||
ende = (x , y1 ,z1)
|
||||
block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset_y-y ,start[2] - esoffset_z-hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||
return start,ende
|
||||
elif(voerder_richtung == "Ab"):
|
||||
start = (x , y1 ,z1)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y-y ,ende[2] - esoffset_z -hoehe_gefaehlle))
|
||||
return start, ende
|
||||
elif am_kreisel == None and blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||
start = (x , y + dy,upper_hoehe_gefaehlle)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
copy= line.copy()
|
||||
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||
block.add_entity(copy)
|
||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset_y -y ,ende[2] -hoehe_gefaehlle ))
|
||||
if block_as != None:
|
||||
block_as = plant2dxf.dreh_block(block_as,doc,math.radians(winkel_as))
|
||||
if voerder_richtung == "Auf":
|
||||
start = (x , y1,z1)
|
||||
ende = (x , y - dy + asoffset_y ,lower_hoehe_gefaehlle)
|
||||
block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset_y -y,ende[2] - esoffset_z - hoehe_gefaehlle ),dxfattribs={"rotation": 180})
|
||||
return start, ende
|
||||
elif voerder_richtung == "Ab":
|
||||
start = (x , y +dy - asoffset_y,upper_hoehe_gefaehlle - asoffset_z)
|
||||
ende = (x , y1 ,z1)
|
||||
block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle))
|
||||
return start,ende
|
||||
elif am_kreisel == None and blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||
start = (x , y +dy - asoffset_y,upper_hoehe_gefaehlle- asoffset_z)
|
||||
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
|
||||
copy= line.copy()
|
||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||
|
||||
block.add_entity(copy)
|
||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle))
|
||||
else:
|
||||
if (( drehung0 == "GUZS" and drehung1 == "GUZS") or (voerder_richtung != None and drehung0 == "GUZS" and drehung1 == "GUZS")):
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif (((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")) or
|
||||
(voerder_richtung == "Auf" and drehung0 == "UZS"and drehung1 == "GUZS") or
|
||||
(voerder_richtung == "Ab" and drehung0 == "GUZS" and drehung1 == "UZS")) :
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif (( drehung0 == "UZS" and drehung1 == "UZS") or (voerder_richtung != None and drehung0 == "UZS" and drehung1 == "UZS")):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")or (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")))or
|
||||
(voerder_richtung == "Auf" and drehung0 == "GUZS" and drehung1 == "UZS") or
|
||||
(voerder_richtung == "Ab" and drehung0 == "UZS"and drehung1 == "GUZS")) :
|
||||
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
plant2dxf.import_block(block_as,lib_doc,doc)
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
plant2dxf.import_block(block_es,lib_doc,doc)
|
||||
block_as = plant2dxf.dreh_block(block_as,doc,math.radians(winkel_as))
|
||||
block_es = plant2dxf.dreh_block(block_es,doc,math.radians(winkel_es))
|
||||
halbe_laenge = laenge / 2
|
||||
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
if hight_position != None and blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||
start = (x , y + dy - asoffset_y,upper_hoehe_gefaehlle- asoffset_z)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
|
||||
copy= line.copy()
|
||||
|
||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||
block.add_entity(copy)
|
||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle ))
|
||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - esoffset_z - hoehe_gefaehlle ))
|
||||
return
|
||||
if voerder_richtung == "Auf":
|
||||
start = (x , y + dy - esoffset_y,upper_hoehe_gefaehlle + esoffset_z)
|
||||
ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle -asoffset_z)
|
||||
|
||||
block_vario.add_blockref(block_es,(start[0]-x ,start[1]+esoffset_y -y,start[2] - esoffset_z - hoehe_gefaehlle ),dxfattribs={"rotation": 180})
|
||||
block_vario.add_blockref(block_as, (ende[0]-x ,ende[1]-asoffset_y -y,ende[2] + asoffset_z - hoehe_gefaehlle ),dxfattribs={"rotation": 180})
|
||||
return start,ende
|
||||
elif voerder_richtung == "Ab":
|
||||
start = (x , y + dy - asoffset_y,upper_hoehe_gefaehlle - asoffset_z)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
|
||||
block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle ))
|
||||
block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - esoffset_z - hoehe_gefaehlle))
|
||||
return start,ende
|
||||
|
||||
|
||||
def am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1,kreisel_verbunden= None, richtung0 = None, richtung1 = None, richtung2 = None):
|
||||
if kreisel_verbunden == None:
|
||||
kreisel_verbunden = 0
|
||||
unterschiedlich = False
|
||||
am_kreisel = 0
|
||||
halbabstand0 = abstand0 / 2
|
||||
dx0 = halbabstand0 * math.cos(richtung_rad0)
|
||||
dy0 = halbabstand0 * math.sin(richtung_rad0)
|
||||
pos0_0_floor= (math.floor(x0_kreisel + dx0),math.floor( y0_kreisel + dy0))
|
||||
pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0))
|
||||
pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0))
|
||||
pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0))
|
||||
if (x1_kreisel != None):
|
||||
halbabstand1 = abstand1 / 2
|
||||
dx1 = halbabstand1 * math.cos(richtung_rad1 )
|
||||
dy1 = halbabstand1 * math.sin(richtung_rad1)
|
||||
pos1_0_floor = (math.floor(x1_kreisel + dx1), math.floor(y1_kreisel + dy1))
|
||||
pos1_1_floor = (math.floor(x1_kreisel - dx1), math.floor(y1_kreisel - dy1))
|
||||
pos1_0_round = (round(x1_kreisel + dx1), round(y1_kreisel + dy1))
|
||||
pos1_1_round = (round(x1_kreisel - dx1), round(y1_kreisel - dy1))
|
||||
|
||||
# berechnung der geraden einmal abgerunden und einmal gerunden zur negirung des offsets
|
||||
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||
# verschiebund der endpunkte der gerade in richtung von dem potentiellen Kreisel für den vergleich wieder mit floor und rundung
|
||||
abstand_fuer_kreis_start_x_floor = start_floor[0] +RADIUS, start_floor[1]
|
||||
abstand_gegen_kreis_start_x_floor = start_floor[0] -RADIUS, start_floor[1]
|
||||
abstand_fuer_kreis_start_y_floor = start_floor[0], start_floor[1] + RADIUS
|
||||
abstand_gegen_kreis_start_y_floor = start_floor[0], start_floor[1] - RADIUS
|
||||
abstand_fuer_kreis_ende_x_floor= ende_floor[0] + RADIUS, ende_floor[1]
|
||||
abstand_gegen_kreis_ende_x_floor= ende_floor[0] - RADIUS, ende_floor[1]
|
||||
abstand_fuer_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] + RADIUS
|
||||
abstand_gegen_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] - RADIUS
|
||||
|
||||
abstand_fuer_kreis_start_x_round= start_round[0] +RADIUS, start_round[1]
|
||||
abstand_gegen_kreis_start_x_round = start_round[0] -RADIUS, start_round[1]
|
||||
abstand_fuer_kreis_start_y_round = start_round[0], start_round[1] + RADIUS
|
||||
abstand_gegen_kreis_start_y_round = start_round[0], start_round[1] - RADIUS
|
||||
abstand_fuer_kreis_ende_x_round= ende_round[0] + RADIUS, ende_round[1]
|
||||
abstand_gegen_kreis_ende_x_round= ende_round[0] - RADIUS, ende_round[1]
|
||||
abstand_fuer_kreis_ende_y_round = ende_round[0] , ende_round[1] + RADIUS
|
||||
abstand_gegen_kreis_ende_y_round = ende_round[0] , ende_round[1] - RADIUS
|
||||
if(richtung0 != None and richtung0 != None):
|
||||
if (richtung0 != richtung1 and kreisel_verbunden ==1):
|
||||
if(
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_1_round) or
|
||||
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_0_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_0_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_1_floor) or
|
||||
|
||||
(abstand_fuer_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_1_round)
|
||||
):
|
||||
richtung2= "Vertikal"
|
||||
unterschiedlich = True
|
||||
|
||||
else:
|
||||
richtung2 = "Horinzontal"
|
||||
unterschiedlich = True
|
||||
return richtung2, unterschiedlich
|
||||
return richtung2, unterschiedlich
|
||||
|
||||
# vergleich mit einem kreisel von zwei
|
||||
if( (abstand_fuer_kreis_start_x_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_start_x_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_start_x_round == pos0_0_round ) or
|
||||
(abstand_fuer_kreis_start_x_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_1_round)
|
||||
):
|
||||
kreisel_verbunden = kreisel_verbunden +1
|
||||
# setzung auf kreisel 1 für spätere ausrechnung der geraden form
|
||||
am_kreisel = 1
|
||||
if (x1_kreisel == None):
|
||||
return am_kreisel,kreisel_verbunden
|
||||
|
||||
if( (abstand_fuer_kreis_start_x_floor == pos1_0_floor )or
|
||||
(abstand_fuer_kreis_start_x_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos1_0_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_0_floor ) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_0_floor ) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_start_x_round == pos1_0_round ) or
|
||||
(abstand_fuer_kreis_start_x_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_1_round)
|
||||
):
|
||||
kreisel_verbunden = kreisel_verbunden +1
|
||||
am_kreisel = 2
|
||||
return am_kreisel,kreisel_verbunden
|
||||
@@ -48,7 +48,6 @@ def create_block_library(input_dir, output_file, config, logger=None):
|
||||
if not filename.lower().endswith(".dxf"):
|
||||
continue
|
||||
|
||||
|
||||
filepath = os.path.join(input_dir, filename)
|
||||
name = os.path.splitext(filename)[0]
|
||||
|
||||
|
||||
+63
-658
@@ -21,8 +21,33 @@ import math
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
from typing import Optional
|
||||
from utils import check_environment_var, setup_logger
|
||||
from Elemente import Kreisel, VarioFoerderer
|
||||
# global_zaehler = 0
|
||||
from Elemente import Kreisel, VarioFoerderer,Gefaehllestrecke
|
||||
import as_es_methoden
|
||||
|
||||
class Bt_element(BaseModel):
|
||||
teileid: str
|
||||
drehung: Optional [float] = Field(default=0.0,description="Rotation des Elements")
|
||||
hoehe: Optional [float] = Field(default=0.0,description="Hoehe des Elements")
|
||||
|
||||
@classmethod
|
||||
def from_merkmale(cls, teileid: str, x: float, y: float, merkmale: dict) -> 'Bt_element':
|
||||
try:
|
||||
hoehe = float(merkmale.get("Höhe in Meter"))
|
||||
except Exception as e:
|
||||
hoehe = 0.0
|
||||
try:
|
||||
drehung = float(merkmale.get("Drehung"))
|
||||
except Exception as e:
|
||||
drehung = 0.0
|
||||
|
||||
return cls(
|
||||
teileid = teileid,
|
||||
x = x,
|
||||
y = y,
|
||||
hoehe = hoehe,
|
||||
drehung = drehung
|
||||
|
||||
)
|
||||
# --------------------------------------------------------- CFG-Leser für shapes.cfg
|
||||
def get_shape_cfg(teileart, cfg_path, logger=None):
|
||||
parser = configparser.ConfigParser()
|
||||
@@ -68,43 +93,6 @@ def get_shape_cfg(teileart, cfg_path, logger=None):
|
||||
ATTR_TAG = "TeileId" # Attributtag im Block
|
||||
RADIUS = 400 # Radius der Kreiselkreise (mm)
|
||||
|
||||
# --------------------------------------------------------- Pydantic Modelle
|
||||
|
||||
class Gefaellestrecke(BaseModel):
|
||||
teileid: str
|
||||
x: float = Field(description="X-Koordinate des Foerder-Zentrums")
|
||||
y: float = Field(description="Y-Koordinate des Foerder-Zentrums")
|
||||
laenge:float = Field(description = "Länge des Förderers")
|
||||
h0: float = Field(description="Höhe Unten in Merkmale")
|
||||
h1: float = Field(description="Höhe Oben in Merkmale")
|
||||
drehung: float = Field(default=0.0, description="Drehung an z achse")
|
||||
anzahl_scanner: int = Field(default=0, description="Anzahl der Scanner")
|
||||
anzahl_separatoren: int = Field(default=0, description="Anzahl der Separatoren")
|
||||
|
||||
@property
|
||||
def hight_zwischen(self):
|
||||
return ((self.h0 + self.h1) /2)
|
||||
|
||||
@classmethod
|
||||
def from_merkmale(cls, teileid: str, x: float, y: float, merkmale: dict) -> 'VarioFoerderer':
|
||||
|
||||
h0 = float(merkmale.get("Höhe unten")) * 1000
|
||||
h1 = float(merkmale.get("Höhe oben")) * 1000
|
||||
laenge = float(merkmale.get("Länge in Meter")) * 1000
|
||||
return cls(
|
||||
teileid = teileid,
|
||||
laenge = laenge,
|
||||
x = x,
|
||||
y = y,
|
||||
h0 = h0,
|
||||
h1 =h1,
|
||||
drehung = float(merkmale.get("Drehung")),
|
||||
anzahl_scanner = int(merkmale.get("Anzahl der Scanner")),
|
||||
anzahl_separatoren = int(merkmale.get("Anzahl der Separatoren"))
|
||||
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------------------------------- Hilfsfunktionen
|
||||
def extract_coords(planquadrat: str) -> tuple[float, float]:
|
||||
"""Extrahiert X/Y Koordinaten aus PlanquadratString."""
|
||||
@@ -216,35 +204,6 @@ def dreh_block(block_name: str, to_doc, winkel) :
|
||||
block.add_entity(copy)
|
||||
return dreh_block_name
|
||||
|
||||
def berechne_hoehe(csv_path, logger=None):
|
||||
y_werte = []
|
||||
try:
|
||||
with csv_path.open(newline="", encoding="utf-8") as fh:
|
||||
reader = csv.DictReader(fh, delimiter=';')
|
||||
for row in reader:
|
||||
planquadrat = row.get("Planquadrat", "")
|
||||
try:
|
||||
_, y = extract_coords(planquadrat)
|
||||
y_werte.append(y)
|
||||
except Exception as e:
|
||||
if logger:
|
||||
logger.warning(f"Fehler beim Extrahieren der Koordinate aus '{planquadrat}': {e}")
|
||||
except Exception as e:
|
||||
if logger:
|
||||
logger.error(f"Fehler beim Lesen der CSV-Datei {csv_path}: {e}")
|
||||
else:
|
||||
print(f"Fehler beim Lesen der CSV-Datei {csv_path}: {e}")
|
||||
return 0
|
||||
if not y_werte:
|
||||
msg = "Keine Y-Koordinaten in der CSV gefunden!"
|
||||
if logger:
|
||||
logger.error(msg)
|
||||
else:
|
||||
print(msg)
|
||||
raise ValueError(msg)
|
||||
return max(y_werte)
|
||||
|
||||
|
||||
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
|
||||
kreisel = Kreisel.Kreisel.from_merkmale(teileid, x, y, merkmale)
|
||||
@@ -326,7 +285,7 @@ def handle_ils_2_0_eckrad(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, s
|
||||
def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
|
||||
#Vorbereitung der attributen
|
||||
|
||||
gefaelle_objekt = Gefaellestrecke.from_merkmale(teileid,x,y,merkmale)
|
||||
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"))
|
||||
upper_hoehe_gefaehlle= gefaelle_objekt.h1
|
||||
@@ -343,17 +302,10 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
if "6-SP" not in doc.layers:
|
||||
doc.layers.add(name="6-SP", color=7)
|
||||
verbunden_am_einen = False
|
||||
tefkurve_0 = None
|
||||
tefkurve_1 = None
|
||||
hat_motor_0 = False
|
||||
hat_umlenk_0 =False
|
||||
hat_motor_1 = False
|
||||
hat_umlenk_1 =False
|
||||
|
||||
richtung2 ="DEFAULT"
|
||||
unterschiedlich = False
|
||||
|
||||
|
||||
|
||||
separatoren = gefaelle_objekt.anzahl_separatoren
|
||||
scanner = gefaelle_objekt.anzahl_scanner
|
||||
if rotation == 0 or rotation == -180:
|
||||
@@ -414,48 +366,10 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
lower_hoehe_gefaehlle = hoehe2
|
||||
rotation = rotation -180
|
||||
|
||||
if "Kurvenrichtung" in gefaellestrecke_nachbarn:
|
||||
vario_hoehe_0 = float(gefaellestrecke_nachbarn.get("vario_hoehe_0")) * 1000
|
||||
vario_hoehe_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_1")) * 1000
|
||||
kurvenrichtung = gefaellestrecke_nachbarn.get("Kurvenrichtung")
|
||||
tefkurve_0 = gefaellestrecke_nachbarn.get("Tefkurve")
|
||||
block_Vario_Umlenkstation_500mm ="Vario_Umlenkstation_500mm"
|
||||
block_Vario_Motorstation_500mm = "Vario_Motorstation_500mm"
|
||||
import_block(block_Vario_Umlenkstation_500mm,lib_doc,doc)
|
||||
import_block(block_Vario_Motorstation_500mm,lib_doc,doc)
|
||||
block_Vario_Umlenkstation_500mm =dreh_block(block_Vario_Umlenkstation_500mm,doc,math.radians(3))
|
||||
block_Vario_Motorstation_500mm =dreh_block(block_Vario_Motorstation_500mm,doc,math.radians(3))
|
||||
blockname_motor_links = block_Vario_Motorstation_500mm +"links"
|
||||
blockname_umlenk_links = block_Vario_Umlenkstation_500mm + "links"
|
||||
if blockname_motor_links not in doc.blocks:
|
||||
matrix = Matrix44(1,-1,1)
|
||||
block_motor_links = doc.blocks.new(name=blockname_motor_links,base_point=(0,0,0))
|
||||
block_umlenk_links = doc.blocks.new(name=blockname_umlenk_links,base_point=(0,0,0))
|
||||
block_motor_rechts = doc.blocks[block_Vario_Motorstation_500mm]
|
||||
block_umlenk_rechts = doc.blocks[block_Vario_Umlenkstation_500mm]
|
||||
for e in block_motor_rechts:
|
||||
copy = e.copy()
|
||||
copy.transform(matrix)
|
||||
block_motor_links.add_entity(copy)
|
||||
hat_motor_0, hat_umlenk_0, hat_motor_1, hat_umlenk_1, tefkurve_0, tefkurve_1 = Gefaehllestrecke.Gefaellestrecke.hat_motor_umlenk_station (doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, gefaellestrecke_nachbarn)
|
||||
|
||||
for e in block_umlenk_rechts:
|
||||
copy = e.copy()
|
||||
copy.transform(matrix)
|
||||
block_umlenk_links.add_entity(copy)
|
||||
|
||||
if upper_hoehe_gefaehlle > lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0 == upper_hoehe_gefaehlle or vario_hoehe_1 == upper_hoehe_gefaehlle:
|
||||
hat_motor_0 = True
|
||||
|
||||
else:
|
||||
hat_umlenk_0 = True
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0 == lower_hoehe_gefaehlle or vario_hoehe_1 == lower_hoehe_gefaehlle:
|
||||
hat_motor_0 = True
|
||||
else:
|
||||
hat_umlenk_0 = True
|
||||
verbunden_am_einen = True
|
||||
am_kreisel, kreisel_verbunden =am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, None, None, None, None)
|
||||
am_kreisel, kreisel_verbunden =as_es_methoden.am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, None, None, None, None)
|
||||
if am_kreisel == 1:
|
||||
if hat_motor_0 == False and hat_umlenk_0 == False:
|
||||
dx = halbe_laenge *math.sin(winkel * -1)
|
||||
@@ -538,7 +452,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
ende[2] = ende[2] + 500* math.sin(math.radians(3))
|
||||
|
||||
|
||||
only_es_or_as = erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge, blockname,config,hight,None,None,None,block,start,ende)
|
||||
only_es_or_as = as_es_methoden.erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge, blockname,config,hight,None,None,None,block,start,ende)
|
||||
|
||||
if only_es_or_as == False:
|
||||
bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
|
||||
@@ -570,7 +484,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
rotation = float(merkmale.get("Drehung"))
|
||||
|
||||
#ausrechnung position kreisel
|
||||
am_kreisel, kreisel_verbunden= am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1)
|
||||
am_kreisel, kreisel_verbunden= as_es_methoden.am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1)
|
||||
# falls gefälle strecke mit zwei kreiseln verbunden zeichne eine einfache linie (später braucht man hier auch eine logik sobald man die richtigen es und as elemente hat)
|
||||
if kreisel_verbunden == 2:
|
||||
start = x +dx, y + dy,upper_hoehe_gefaehlle
|
||||
@@ -588,7 +502,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
richtung1= "Vertikal"
|
||||
else:
|
||||
richtung1 = "Horinzontal"
|
||||
richtung2,unterschiedlich = am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1,kreisel_verbunden, richtung0 , richtung1 , richtung2 )
|
||||
richtung2,unterschiedlich = as_es_methoden.am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1,kreisel_verbunden, richtung0 , richtung1 , richtung2 )
|
||||
#Berechnung des Gefälles
|
||||
if hoehe0 > hoehe1:
|
||||
hight_position = "higher"
|
||||
@@ -686,7 +600,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{verbunden_am_einen}"
|
||||
else:
|
||||
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{unterschiedlich}_{richtung2}_{verbunden_am_einen}"
|
||||
gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2,drehung0, drehung1, laenge, hight_position,blockname,config)
|
||||
as_es_methoden.gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2,drehung0, drehung1, laenge, hight_position,blockname,config)
|
||||
blockref_layer = get_layer(doc, lib_doc, blockname)
|
||||
|
||||
bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation, "layer": blockref_layer })
|
||||
@@ -705,60 +619,11 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
lower_hoehe_gefaehlle = hoehe2
|
||||
rotation = rotation -180
|
||||
|
||||
|
||||
if "Kurvenrichtung" in gefaellestrecke_nachbarn:
|
||||
vario_hoehe_0 = float(gefaellestrecke_nachbarn.get("vario_hoehe_0")) * 1000
|
||||
vario_hoehe_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_1")) * 1000
|
||||
kurvenrichtung = gefaellestrecke_nachbarn.get("Kurvenrichtung")
|
||||
tefkurve_0 = gefaellestrecke_nachbarn.get("Tefkurve")
|
||||
block_Vario_Umlenkstation_500mm ="Vario_Umlenkstation_500mm"
|
||||
block_Vario_Motorstation_500mm = "Vario_Motorstation_500mm"
|
||||
import_block(block_Vario_Umlenkstation_500mm,lib_doc,doc)
|
||||
import_block(block_Vario_Motorstation_500mm,lib_doc,doc)
|
||||
block_Vario_Umlenkstation_500mm =dreh_block(block_Vario_Umlenkstation_500mm,doc,math.radians(3))
|
||||
block_Vario_Motorstation_500mm =dreh_block(block_Vario_Motorstation_500mm,doc,math.radians(3))
|
||||
blockname_motor_links = block_Vario_Motorstation_500mm +"links"
|
||||
blockname_umlenk_links = block_Vario_Umlenkstation_500mm + "links"
|
||||
if blockname_motor_links not in doc.blocks:
|
||||
matrix = Matrix44.scale(1,-1,1)
|
||||
block_motor_links = doc.blocks.new(name=blockname_motor_links,base_point=(0,0,0))
|
||||
block_umlenk_links = doc.blocks.new(name=blockname_umlenk_links,base_point=(0,0,0))
|
||||
block_motor_rechts = doc.blocks[block_Vario_Motorstation_500mm]
|
||||
block_umlenk_rechts = doc.blocks[block_Vario_Umlenkstation_500mm]
|
||||
for e in block_motor_rechts:
|
||||
copy = e.copy()
|
||||
copy.transform(matrix)
|
||||
block_motor_links.add_entity(copy)
|
||||
|
||||
for e in block_umlenk_rechts:
|
||||
copy = e.copy()
|
||||
copy.transform(matrix)
|
||||
block_umlenk_links.add_entity(copy)
|
||||
|
||||
if upper_hoehe_gefaehlle > lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0 == upper_hoehe_gefaehlle or vario_hoehe_1 == upper_hoehe_gefaehlle:
|
||||
hat_motor_0 = True
|
||||
else:
|
||||
hat_umlenk_0 = True
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0 == lower_hoehe_gefaehlle or vario_hoehe_1 == lower_hoehe_gefaehlle:
|
||||
hat_motor_0 = True
|
||||
else:
|
||||
hat_umlenk_0 = True
|
||||
if "Kurvenrichtung_1" in gefaellestrecke_nachbarn:
|
||||
vario_hoehe_0_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_0_1")) * 1000
|
||||
vario_hoehe_1_1 = float(gefaellestrecke_nachbarn.get("vario_hoehe_1_1")) * 1000
|
||||
tefkurve_1 = gefaellestrecke_nachbarn.get("Tefkurve_1")
|
||||
if upper_hoehe_gefaehlle > lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0_1 == upper_hoehe_gefaehlle or vario_hoehe_1_1 == upper_hoehe_gefaehlle:
|
||||
hat_motor_1 = True
|
||||
else:
|
||||
hat_umlenk_1 = True
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
if vario_hoehe_0_1 == lower_hoehe_gefaehlle or vario_hoehe_1_1 == lower_hoehe_gefaehlle:
|
||||
hat_motor_1 = True
|
||||
else:
|
||||
hat_umlenk_1 = True
|
||||
block_Vario_Umlenkstation_500mm ="Vario_Umlenkstation_500mm"
|
||||
block_Vario_Motorstation_500mm = "Vario_Motorstation_500mm"
|
||||
blockname_motor_links = block_Vario_Motorstation_500mm +"links"
|
||||
blockname_umlenk_links = block_Vario_Umlenkstation_500mm + "links"
|
||||
hat_motor_0, hat_umlenk_0, hat_motor_1, hat_umlenk_1, tefkurve_0, tefkurve_1 = Gefaehllestrecke.Gefaellestrecke.hat_motor_umlenk_station(doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, gefaellestrecke_nachbarn)
|
||||
blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{hat_motor_0}_{hat_umlenk_0}_{tefkurve_0}_{hat_motor_1}_{hat_umlenk_1}_{tefkurve_1}"
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
start = [x , y + dy ,upper_hoehe_gefaehlle]
|
||||
@@ -770,7 +635,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
ende = x -dx, y - dy,lower_hoehe_gefaehlle
|
||||
line = msp.add_line(start,ende)
|
||||
line.dxf.layer = "6-SP"
|
||||
elif (hat_motor_0 == True and hat_umlenk_0 == False) and tefkurve_1 == None:
|
||||
elif (hat_motor_0 == True and hat_umlenk_0 == None) and tefkurve_1 == None:
|
||||
if blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname,base_point = (0,0,0))
|
||||
if (hat_motor_0 == True and tefkurve_0 == "rechts") or (hat_motor_1 == True and tefkurve_1 == "rechts"):
|
||||
@@ -783,7 +648,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
line.translate(-x,-y,-hoehe_gefaehlle)
|
||||
block.add_entity(line)
|
||||
msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
|
||||
elif hat_motor_0 == False and hat_umlenk_0 == True and tefkurve_1 == None:
|
||||
elif hat_motor_0 == None and hat_umlenk_0 == True and tefkurve_1 == None:
|
||||
if blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname,base_point = (0,0,0))
|
||||
if (hat_umlenk_0 == True and tefkurve_0 == "rechts") or (hat_umlenk_1 == True and tefkurve_1 == "rechts"):
|
||||
@@ -812,6 +677,8 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
|
||||
line.translate(-x,-y,-hoehe_gefaehlle)
|
||||
block.add_entity(line)
|
||||
msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
|
||||
|
||||
|
||||
|
||||
def add_attributes_to_block(block, attributes):
|
||||
"""
|
||||
@@ -1065,7 +932,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
|
||||
mit_horizontal_verbunden = "unten_drehung_-180_or_-270"
|
||||
else:
|
||||
mit_horizontal_verbunden = "oben_drehung_-180_or_-270"
|
||||
am_kreisel,kreseil_verbunden =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 )
|
||||
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
|
||||
blockname = (f"Vario_Foerderer_{winkel}_{voerder_richtung}_{laenge}_{hoehe_vario}_rechts_{ein_kreisel_höher}_{drehung0}_True_{motor_vorhanden}_{umlenk_vorhanden}_{gefaelle}_{gefahellewinkel}_{mit_horizontal_verbunden}")
|
||||
@@ -1172,7 +1039,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
|
||||
# Schauen welches as oder es element man wo verbinden muss und bereits in den block tuen, der None wert ist ein Wert der für die Gefällestrecke notwendig ist
|
||||
# Entnehmen von start und end Werte für spätere vario erstellung
|
||||
|
||||
start, ende =erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper_hoehe_vario, lower_hoehe_vario, hoehe_vario, drehung0, laenge, blockname,config,None ,block_vario, voerder_richtung, ein_kreisel_höher,None,None,None,mit_horizontal_verbunden)
|
||||
start, ende = as_es_methoden.erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper_hoehe_vario, lower_hoehe_vario, hoehe_vario, drehung0, laenge, blockname,config,None ,block_vario, voerder_richtung, ein_kreisel_höher,None,None,None,mit_horizontal_verbunden)
|
||||
# Erstellung des Varios selber
|
||||
VarioFoerderer.VarioFoerderer.vario_erstellung(foerderer, doc, lib_doc, config, block_vario,block_name_links, start, ende,voerder_richtung ,winkel_VP_offset_vorne,winkel_VP_offset_hinten)
|
||||
# reintuen des förderes in den Modelspace
|
||||
@@ -1211,7 +1078,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
|
||||
drehung1 = drehung2
|
||||
|
||||
# Schauen ob der Förderer direkt am Kreisel verbunden ist
|
||||
am_kreisel,kreisel_verbunden =am_kreisel_direct_verbunden(x, y, upper_hoehe_vario, lower_hoehe_vario, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1)
|
||||
am_kreisel,kreisel_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, x1_kreisel, y1_kreisel, richtung_rad1, abstand1)
|
||||
# Falls der Förder mit beiden Kreisel verbunden ist
|
||||
if kreisel_verbunden == 2:
|
||||
# Erstellung der blockname für wenn die Motorstation rechts und links
|
||||
@@ -1344,7 +1211,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
|
||||
|
||||
# Schauen welche es oder as element man braucht man braucht und diese in den block einfügen
|
||||
# Entnehmen von start und end Werte für spätere vario erstellung
|
||||
start, ende =gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_vario, lower_hoehe_vario, hoehe_vario,richtung2, drehung0, drehung1, laenge, None, blockname,config,block_vario,voerder_richtung, am_kreisel,erster_kreisel_höher,y1,z1)
|
||||
start, ende = as_es_methoden.gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_vario, lower_hoehe_vario, hoehe_vario,richtung2, drehung0, drehung1, laenge, None, blockname,config,block_vario,voerder_richtung, am_kreisel,erster_kreisel_höher,y1,z1)
|
||||
# Erstellung der Vario gefälle selber
|
||||
VarioFoerderer.VarioFoerderer.vario_erstellung(foerderer, doc, lib_doc, config, block_vario,block_name_links, start, ende,voerder_richtung ,winkel_VP_offset_vorne,winkel_VP_offset_hinten)
|
||||
# Reintuen des endblockes in den Modelspace
|
||||
@@ -1373,7 +1240,7 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
|
||||
# Schauen welche es oder as element man braucht man braucht und diese in den block einfügen
|
||||
# Entnehmen von start und end Werte für spätere vario erstellung
|
||||
|
||||
start, ende =gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_vario, lower_hoehe_vario, hoehe_vario,richtung2, drehung0, drehung1, laenge, None, blockname,config,block_vario,voerder_richtung)
|
||||
start, ende = as_es_methoden.gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_vario, lower_hoehe_vario, hoehe_vario,richtung2, drehung0, drehung1, laenge, None, blockname,config,block_vario,voerder_richtung)
|
||||
# Erstellung des Vario selber
|
||||
VarioFoerderer.VarioFoerderer.vario_erstellung(foerderer, doc, lib_doc, config, block_vario,block_name_links, start, ende,voerder_richtung,winkel_VP_offset_vorne,winkel_VP_offset_hinten )
|
||||
# Reintuen des endblockes in den Modelspace
|
||||
@@ -1444,38 +1311,20 @@ 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):
|
||||
rotation = None
|
||||
hight = None
|
||||
if "Drehung" in merkmale:
|
||||
rotation= float(merkmale.get("Drehung"))
|
||||
if "Höhe in M" in merkmale:
|
||||
hight = float(merkmale.get("Höhe in M")) * 1000
|
||||
import_block("AN8",lib_doc,doc)
|
||||
if hight == None and rotation == None:
|
||||
msp.add_blockref("AN8",(x,y))
|
||||
elif hight != None and rotation == None:
|
||||
msp.add_blockref("AN8",(x,y,hight))
|
||||
elif hight == None and rotation != None:
|
||||
msp.add_blockref("AN8",(x,y),dxfattribute={"rotation": rotation})
|
||||
else:
|
||||
msp.add_blockref("AN8",(x,y,hight),dxfattribute={"rotation": rotation})
|
||||
bt_element = Bt_element.from_merkmale(teileid,x,y,merkmale)
|
||||
rotation = bt_element.drehung
|
||||
hight = bt_element.hoehe
|
||||
blockname = "AN8"
|
||||
import_block(blockname,lib_doc,doc)
|
||||
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):
|
||||
rotation = None
|
||||
hight = None
|
||||
if "Drehung" in merkmale:
|
||||
rotation= float(merkmale.get("Drehung"))
|
||||
if "Höhe in M" in merkmale:
|
||||
hight = float(merkmale.get("Höhe in M")) * 1000
|
||||
import_block("AN8",lib_doc,doc)
|
||||
if hight == None and rotation == None:
|
||||
msp.add_blockref("AN8",(x,y))
|
||||
elif hight != None and rotation == None:
|
||||
msp.add_blockref("AN8",(x,y,hight))
|
||||
elif hight == None and rotation != None:
|
||||
msp.add_blockref("AN8",(x,y),dxfattribute={"rotation": rotation})
|
||||
else:
|
||||
msp.add_blockref("AN8",(x,y,hight),dxfattribute={"rotation": rotation})
|
||||
bt_element = Bt_element.from_merkmale(teileid,x,y,merkmale)
|
||||
rotation = bt_element.drehung
|
||||
hight = bt_element.hoehe
|
||||
blockname = "AN8"
|
||||
import_block(blockname,lib_doc,doc)
|
||||
msp.add_blockref(blockname,(x,y,hight),dxfattribs={"rotation": rotation})
|
||||
|
||||
|
||||
def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
|
||||
@@ -1566,439 +1415,7 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,
|
||||
drehung = merkmale.get("Drehung")
|
||||
bref = msp.add_blockref(blockname, (x, y,float(merkmale.get("Höhe"))), dxfattribs={"rotation": drehung})
|
||||
# Layer, auf dem der Insert liegt
|
||||
def erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge,blockname,config, hight = None, block_vario = None, vario_richtung = None, verbungden_höher = None,gefaelle_block=None,start = None,ende = None,mit_horizontal_verbunden = None):
|
||||
halbe_laenge = laenge / 2
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
|
||||
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
|
||||
winkel_as = float(config.get("Ils 2.0 core winkel", "winkel_as"))
|
||||
winkel_es = float(config.get("Ils 2.0 core winkel", "winkel_es"))
|
||||
asoffset_y = asoffset * math.cos(math.radians(winkel_as))
|
||||
asoffset_z = asoffset * math.sin(math.radians(winkel_as))
|
||||
esoffset_y = esoffset * math.cos(math.radians(winkel_es))
|
||||
esoffset_z = esoffset * math.sin(math.radians(winkel_es))
|
||||
block_as = None
|
||||
block_es = None
|
||||
if (( hight == "higher" and drehung0 == "GUZS" )or (vario_richtung == "Auf"and verbungden_höher == False and drehung0 == "GUZS")or
|
||||
(vario_richtung == "Ab" and verbungden_höher == True and drehung0 == "GUZS")or (vario_richtung == "Horizontal" and drehung0 == "GUZS" and (mit_horizontal_verbunden == "unten_drehung_0_or_-90" or mit_horizontal_verbunden == "oben_drehung_-180_or_-270"))):
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif ((hight == "lower" and drehung0 == "GUZS") or (vario_richtung == "Auf"and verbungden_höher == True and drehung0 == "GUZS") or
|
||||
(vario_richtung == "Ab" and verbungden_höher == False and drehung0 == "GUZS")or (vario_richtung == "Horizontal" and drehung0 == "GUZS" and (mit_horizontal_verbunden == "oben_drehung_0_or_-90" or mit_horizontal_verbunden == "unten_drehung_-180_or_-270"))):
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((hight == "higher" and drehung0 == "UZS")or (vario_richtung == "Auf"and verbungden_höher == False and drehung0 == "UZS") or
|
||||
(vario_richtung == "Ab" and verbungden_höher == True and drehung0 == "UZS")or (vario_richtung == "Horizontal" and drehung0 == "UZS" and (mit_horizontal_verbunden == "unten_drehung_0_or_-90" or mit_horizontal_verbunden == "oben_drehung_-180_or_-270"))):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif (( hight == "lower" and drehung0 == "UZS") or (vario_richtung == "Auf" and verbungden_höher == True and drehung0 == "UZS") or
|
||||
(vario_richtung == "Ab" and verbungden_höher == False and drehung0 == "UZS")or (vario_richtung == "Horizontal" and drehung0 == "UZS" and (mit_horizontal_verbunden == "oben_drehung_0_or_-90" or mit_horizontal_verbunden == "unten_drehung_-180_or_-270"))):
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
if block_as != None:
|
||||
block_as = dreh_block(block_as,doc,math.radians(winkel_as))
|
||||
if vario_richtung == "Auf" or vario_richtung =="Horizontal":
|
||||
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||
ende = (x , y - dy + asoffset_y ,lower_hoehe_gefaehlle - asoffset_z)
|
||||
block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset_y -y,ende[2] -hoehe_gefaehlle + asoffset_z),dxfattribs={"rotation": 180})
|
||||
return start, ende
|
||||
elif vario_richtung == "Ab":
|
||||
start = (x , y + dy - asoffset_y,upper_hoehe_gefaehlle - asoffset_z)
|
||||
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||
block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] -hoehe_gefaehlle + asoffset_z))
|
||||
return start,ende
|
||||
|
||||
if laenge > asoffset:
|
||||
start[1] = start[1] - asoffset_y
|
||||
start[2] = start[2] - asoffset_z
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
copy= line.copy()
|
||||
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||
gefaelle_block.add_entity(copy)
|
||||
gefaelle_block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] -hoehe_gefaehlle + asoffset_z))
|
||||
return False
|
||||
else:
|
||||
msp.add_blockref(block_as,(x,y,upper_hoehe_gefaehlle))
|
||||
return True
|
||||
elif block_es != None:
|
||||
block_es = dreh_block(block_es,doc,math.radians(winkel_es))
|
||||
if vario_richtung == "Auf" or vario_richtung =="Horizontal":
|
||||
start = (x , y + dy-esoffset_y ,upper_hoehe_gefaehlle + esoffset_z)
|
||||
ende = (x , y - dy,lower_hoehe_gefaehlle)
|
||||
block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset_y -y,start[2] - hoehe_gefaehlle - esoffset_z),dxfattribs={"rotation": 180})
|
||||
return start, ende
|
||||
elif vario_richtung == "Ab":
|
||||
start = (x , y + dy ,upper_hoehe_gefaehlle)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - hoehe_gefaehlle -esoffset_z))
|
||||
return start,ende
|
||||
|
||||
if laenge > esoffset:
|
||||
ende[1] = ende[1] + esoffset_y
|
||||
ende[2] = ende[2] + esoffset_z
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
copy= line.copy()
|
||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||
gefaelle_block.add_entity(copy)
|
||||
gefaelle_block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - hoehe_gefaehlle -esoffset_z))
|
||||
return False
|
||||
else:
|
||||
msp.add_blockref(block_es,(x,y,lower_hoehe_gefaehlle))
|
||||
return True
|
||||
|
||||
def gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2, drehung0, drehung1, laenge, hight_position, blockname,config, block_vario = None,voerder_richtung = None, am_kreisel = None, erster_kreisel_höher = None,y1=None,z1 =None):
|
||||
#erstellung des blockes falls die gefaelle strecke mit einem kreisel verbunden ist, mehrere variation von selben weil diese nötig sind sobald man die richtigen inserts bekommen
|
||||
|
||||
asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset"))
|
||||
esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset"))
|
||||
winkel_as = float(config.get("Ils 2.0 core winkel", "winkel_as"))
|
||||
winkel_es = float(config.get("Ils 2.0 core winkel", "winkel_es"))
|
||||
asoffset_y = asoffset * math.cos(math.radians(winkel_as))
|
||||
asoffset_z = asoffset * math.sin(math.radians(winkel_as))
|
||||
esoffset_y = esoffset * math.cos(math.radians(winkel_es))
|
||||
esoffset_z = esoffset * math.sin(math.radians(winkel_es))
|
||||
block_as = None
|
||||
block_es = None
|
||||
halbe_laenge = laenge / 2
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
|
||||
middle_hoehe = upper_hoehe_gefaehlle
|
||||
upper_hoehe_gefaehlle = lower_hoehe_gefaehlle
|
||||
lower_hoehe_gefaehlle = middle_hoehe
|
||||
|
||||
if richtung2!= "DEFAULT" or am_kreisel != None:
|
||||
if ((drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher") or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel== 2 and erster_kreisel_höher == True)) and drehung0 == "GUZS" and drehung1== "GUZS") or
|
||||
(voerder_richtung == "Ab"and ((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel== 2 and erster_kreisel_höher == False)) and drehung0 == "GUZS" and drehung1== "GUZS")):
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "GUZS" and drehung1 == "GUZS") or
|
||||
(am_kreisel != None and drehung0 == "GUZS" and drehung1 == "GUZS")):
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif (( drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel == 2 and erster_kreisel_höher == True))and (drehung0 == "UZS" and drehung1 == "GUZS")) or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == True) or (am_kreisel ==2 and erster_kreisel_höher ==False))and (drehung0 == "GUZS" and drehung1 == "UZS"))):
|
||||
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel == 2 and erster_kreisel_höher == False))and (drehung0 == "UZS" and drehung1 == "GUZS")) or
|
||||
(voerder_richtung == "Ab"and ((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel == 2 and erster_kreisel_höher == True))and (drehung0 == "GUZS" and drehung1 == "UZS"))):
|
||||
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "UZS" and drehung1 == "UZS" and hight_position == "higher")or
|
||||
(voerder_richtung == "Auf" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel== 2 and erster_kreisel_höher == True)) and drehung0 == "UZS" and drehung1== "UZS")or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel== 2 and erster_kreisel_höher == False)) and drehung0 == "UZS" and drehung1== "UZS")):
|
||||
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif (((drehung0 == "UZS" and drehung1 == "UZS")or
|
||||
(am_kreisel!= None and drehung0 == "UZS" and drehung1 == "UZS"))):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
|
||||
elif (((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher"))or
|
||||
(voerder_richtung == "Auf"and ((am_kreisel == 1 and erster_kreisel_höher == False) or (am_kreisel ==2 and erster_kreisel_höher ==True))and (drehung0 == "GUZS" and drehung1 == "UZS")) or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel == 2 and erster_kreisel_höher == False))and (drehung0 == "UZS" and drehung1 == "GUZS"))):
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")or
|
||||
(voerder_richtung == "Auf"and((am_kreisel == 1 and erster_kreisel_höher == True)or (am_kreisel == 2 and erster_kreisel_höher == False))and (drehung0 == "GUZS" and drehung1 == "UZS")) or
|
||||
(voerder_richtung == "Ab" and((am_kreisel == 1 and erster_kreisel_höher == False)or (am_kreisel == 2 and erster_kreisel_höher == True))and (drehung0 == "UZS" and drehung1 == "GUZS"))):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
|
||||
if block_es != None:
|
||||
block_es = dreh_block(block_es,doc,math.radians(winkel_es))
|
||||
if voerder_richtung == "Auf":
|
||||
start = (x , y+ dy - esoffset_y,upper_hoehe_gefaehlle + esoffset_z)
|
||||
ende = (x , y1 ,z1)
|
||||
block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset_y-y ,start[2] - esoffset_z-hoehe_gefaehlle),dxfattribs={"rotation": 180})
|
||||
return start,ende
|
||||
elif(voerder_richtung == "Ab"):
|
||||
start = (x , y1 ,z1)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y-y ,ende[2] - esoffset_z -hoehe_gefaehlle))
|
||||
return start, ende
|
||||
elif am_kreisel == None and blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||
start = (x , y + dy,upper_hoehe_gefaehlle)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
copy= line.copy()
|
||||
copy.translate(-x,-y,-hoehe_gefaehlle)
|
||||
block.add_entity(copy)
|
||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset_y -y ,ende[2] -hoehe_gefaehlle ))
|
||||
if block_as != None:
|
||||
block_as = dreh_block(block_as,doc,math.radians(winkel_as))
|
||||
if voerder_richtung == "Auf":
|
||||
start = (x , y1,z1)
|
||||
ende = (x , y - dy + asoffset_y ,lower_hoehe_gefaehlle)
|
||||
block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset_y -y,ende[2] - esoffset_z - hoehe_gefaehlle ),dxfattribs={"rotation": 180})
|
||||
return start, ende
|
||||
elif voerder_richtung == "Ab":
|
||||
start = (x , y +dy - asoffset_y,upper_hoehe_gefaehlle - asoffset_z)
|
||||
ende = (x , y1 ,z1)
|
||||
block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle))
|
||||
return start,ende
|
||||
elif am_kreisel == None and blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||
start = (x , y +dy - asoffset_y,upper_hoehe_gefaehlle- asoffset_z)
|
||||
ende = (x , y - dy ,lower_hoehe_gefaehlle)
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
|
||||
copy= line.copy()
|
||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||
|
||||
block.add_entity(copy)
|
||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle))
|
||||
else:
|
||||
if (( drehung0 == "GUZS" and drehung1 == "GUZS") or (voerder_richtung != None and drehung0 == "GUZS" and drehung1 == "GUZS")):
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif (((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")) or
|
||||
(voerder_richtung == "Auf" and drehung0 == "UZS"and drehung1 == "GUZS") or
|
||||
(voerder_richtung == "Ab" and drehung0 == "GUZS" and drehung1 == "UZS")) :
|
||||
block_as = "200000241_AS-Element_90_rechts"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif (( drehung0 == "UZS" and drehung1 == "UZS") or (voerder_richtung != None and drehung0 == "UZS" and drehung1 == "UZS")):
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
block_es = "400102632_ES-Element_90_links"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
|
||||
elif ((((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")or (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")))or
|
||||
(voerder_richtung == "Auf" and drehung0 == "GUZS" and drehung1 == "UZS") or
|
||||
(voerder_richtung == "Ab" and drehung0 == "UZS"and drehung1 == "GUZS")) :
|
||||
|
||||
block_as = "200000217_AS-Element_90_links"
|
||||
import_block(block_as,lib_doc,doc)
|
||||
block_es = "200000146_ES-Element_90_rechts"
|
||||
import_block(block_es,lib_doc,doc)
|
||||
block_as = dreh_block(block_as,doc,math.radians(winkel_as))
|
||||
block_es = dreh_block(block_es,doc,math.radians(winkel_es))
|
||||
halbe_laenge = laenge / 2
|
||||
|
||||
dy = halbe_laenge * math.cos(0)
|
||||
if hight_position != None and blockname not in doc.blocks:
|
||||
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
|
||||
start = (x , y + dy - asoffset_y,upper_hoehe_gefaehlle- asoffset_z)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
line = Line.new(dxfattribs={"start": start, "end": ende})
|
||||
line.dxf.layer = "6-SP"
|
||||
|
||||
copy= line.copy()
|
||||
|
||||
copy.translate(-x ,-y,-hoehe_gefaehlle)
|
||||
block.add_entity(copy)
|
||||
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle ))
|
||||
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - esoffset_z - hoehe_gefaehlle ))
|
||||
return
|
||||
if voerder_richtung == "Auf":
|
||||
start = (x , y + dy - esoffset_y,upper_hoehe_gefaehlle + esoffset_z)
|
||||
ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle -asoffset_z)
|
||||
|
||||
block_vario.add_blockref(block_es,(start[0]-x ,start[1]+esoffset_y -y,start[2] - esoffset_z - hoehe_gefaehlle ),dxfattribs={"rotation": 180})
|
||||
block_vario.add_blockref(block_as, (ende[0]-x ,ende[1]-asoffset_y -y,ende[2] + asoffset_z - hoehe_gefaehlle ),dxfattribs={"rotation": 180})
|
||||
return start,ende
|
||||
elif voerder_richtung == "Ab":
|
||||
start = (x , y + dy - asoffset_y,upper_hoehe_gefaehlle - asoffset_z)
|
||||
ende = (x , y - dy + esoffset_y,lower_hoehe_gefaehlle + esoffset_z)
|
||||
|
||||
block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle ))
|
||||
block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y -y,ende[2] - esoffset_z - hoehe_gefaehlle))
|
||||
return start,ende
|
||||
|
||||
|
||||
def am_kreisel_direct_verbunden(x, y, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, x0_kreisel, y0_kreisel, richtung_rad0, abstand0, dx, dy, x1_kreisel, y1_kreisel, richtung_rad1, abstand1,kreisel_verbunden= None, richtung0 = None, richtung1 = None, richtung2 = None):
|
||||
if kreisel_verbunden == None:
|
||||
kreisel_verbunden = 0
|
||||
unterschiedlich = False
|
||||
am_kreisel = 0
|
||||
halbabstand0 = abstand0 / 2
|
||||
dx0 = halbabstand0 * math.cos(richtung_rad0)
|
||||
dy0 = halbabstand0 * math.sin(richtung_rad0)
|
||||
pos0_0_floor= (math.floor(x0_kreisel + dx0),math.floor( y0_kreisel + dy0))
|
||||
pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0))
|
||||
pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0))
|
||||
pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0))
|
||||
if (x1_kreisel != None):
|
||||
halbabstand1 = abstand1 / 2
|
||||
dx1 = halbabstand1 * math.cos(richtung_rad1 )
|
||||
dy1 = halbabstand1 * math.sin(richtung_rad1)
|
||||
pos1_0_floor = (math.floor(x1_kreisel + dx1), math.floor(y1_kreisel + dy1))
|
||||
pos1_1_floor = (math.floor(x1_kreisel - dx1), math.floor(y1_kreisel - dy1))
|
||||
pos1_0_round = (round(x1_kreisel + dx1), round(y1_kreisel + dy1))
|
||||
pos1_1_round = (round(x1_kreisel - dx1), round(y1_kreisel - dy1))
|
||||
|
||||
# berechnung der geraden einmal abgerunden und einmal gerunden zur negirung des offsets
|
||||
start_floor = (math.floor(x +dx ), math.floor(y + dy ),upper_hoehe_gefaehlle)
|
||||
ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,lower_hoehe_gefaehlle)
|
||||
start_round = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle)
|
||||
ende_round= (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle)
|
||||
# verschiebund der endpunkte der gerade in richtung von dem potentiellen Kreisel für den vergleich wieder mit floor und rundung
|
||||
abstand_fuer_kreis_start_x_floor = start_floor[0] +RADIUS, start_floor[1]
|
||||
abstand_gegen_kreis_start_x_floor = start_floor[0] -RADIUS, start_floor[1]
|
||||
abstand_fuer_kreis_start_y_floor = start_floor[0], start_floor[1] + RADIUS
|
||||
abstand_gegen_kreis_start_y_floor = start_floor[0], start_floor[1] - RADIUS
|
||||
abstand_fuer_kreis_ende_x_floor= ende_floor[0] + RADIUS, ende_floor[1]
|
||||
abstand_gegen_kreis_ende_x_floor= ende_floor[0] - RADIUS, ende_floor[1]
|
||||
abstand_fuer_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] + RADIUS
|
||||
abstand_gegen_kreis_ende_y_floor = ende_floor[0] , ende_floor[1] - RADIUS
|
||||
|
||||
abstand_fuer_kreis_start_x_round= start_round[0] +RADIUS, start_round[1]
|
||||
abstand_gegen_kreis_start_x_round = start_round[0] -RADIUS, start_round[1]
|
||||
abstand_fuer_kreis_start_y_round = start_round[0], start_round[1] + RADIUS
|
||||
abstand_gegen_kreis_start_y_round = start_round[0], start_round[1] - RADIUS
|
||||
abstand_fuer_kreis_ende_x_round= ende_round[0] + RADIUS, ende_round[1]
|
||||
abstand_gegen_kreis_ende_x_round= ende_round[0] - RADIUS, ende_round[1]
|
||||
abstand_fuer_kreis_ende_y_round = ende_round[0] , ende_round[1] + RADIUS
|
||||
abstand_gegen_kreis_ende_y_round = ende_round[0] , ende_round[1] - RADIUS
|
||||
if(richtung0 != None and richtung0 != None):
|
||||
if (richtung0 != richtung1 and kreisel_verbunden ==1):
|
||||
if(
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_1_round) or
|
||||
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_0_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_0_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_1_floor) or
|
||||
|
||||
(abstand_fuer_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_1_round)
|
||||
):
|
||||
richtung2= "Vertikal"
|
||||
unterschiedlich = True
|
||||
|
||||
else:
|
||||
richtung2 = "Horinzontal"
|
||||
unterschiedlich = True
|
||||
return richtung2, unterschiedlich
|
||||
return richtung2, unterschiedlich
|
||||
|
||||
# vergleich mit einem kreisel von zwei
|
||||
if( (abstand_fuer_kreis_start_x_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_start_x_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos0_1_floor) or
|
||||
(abstand_fuer_kreis_start_x_round == pos0_0_round ) or
|
||||
(abstand_fuer_kreis_start_x_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos0_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos0_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos0_1_round)
|
||||
):
|
||||
kreisel_verbunden = kreisel_verbunden +1
|
||||
# setzung auf kreisel 1 für spätere ausrechnung der geraden form
|
||||
am_kreisel = 1
|
||||
if (x1_kreisel == None):
|
||||
return am_kreisel,kreisel_verbunden
|
||||
|
||||
if( (abstand_fuer_kreis_start_x_floor == pos1_0_floor )or
|
||||
(abstand_fuer_kreis_start_x_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_start_x_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos1_0_floor) or
|
||||
(abstand_fuer_kreis_ende_x_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_ende_x_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_0_floor ) or
|
||||
(abstand_fuer_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_start_y_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_0_floor ) or
|
||||
(abstand_fuer_kreis_ende_y_floor == pos1_1_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_0_floor) or
|
||||
(abstand_gegen_kreis_ende_y_floor == pos1_1_floor) or
|
||||
(abstand_fuer_kreis_start_x_round == pos1_0_round ) or
|
||||
(abstand_fuer_kreis_start_x_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_start_x_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_ende_x_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_ende_x_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_start_y_round == pos1_1_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_fuer_kreis_ende_y_round == pos1_1_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_0_round) or
|
||||
(abstand_gegen_kreis_ende_y_round == pos1_1_round)
|
||||
):
|
||||
kreisel_verbunden = kreisel_verbunden +1
|
||||
am_kreisel = 2
|
||||
return am_kreisel,kreisel_verbunden
|
||||
|
||||
def get_layer(doc, lib_doc, blockname):
|
||||
if blockname in lib_doc.blocks:
|
||||
@@ -2057,7 +1474,7 @@ def get_libfile_cfg(teileart, cfg_path):
|
||||
return parser.get(section, "libfile", fallback=None)
|
||||
return None
|
||||
|
||||
def get_rotations_of_strecken(csv_path:Path) -> dict:
|
||||
def get_nachbar_information(csv_path:Path) -> dict:
|
||||
geraden = []
|
||||
kreisel =[]
|
||||
strecken_nachbarn = []
|
||||
@@ -2196,24 +1613,12 @@ def main(csv_path: Path, lib_path: Path, cfg_path: Path, allgemein_cfg_path: Pat
|
||||
doc.header['$INSUNITS'] = 4 # Millimeter
|
||||
msp = doc.modelspace()
|
||||
|
||||
|
||||
# Höhe bestimmen für Koordinaten-Transformation
|
||||
try:
|
||||
height = berechne_hoehe(csv_path, logger=logger)
|
||||
except Exception as e:
|
||||
msg = f"Fehler bei der Höhenberechnung: {e}"
|
||||
if logger:
|
||||
logger.error(msg)
|
||||
else:
|
||||
print(msg)
|
||||
sys.exit(1)
|
||||
|
||||
blocklib_dir = data_dir / "block_libraries"
|
||||
lib_docs = dict()
|
||||
|
||||
# gibt zu jeder ShapeId einer Gefällestrecke zurück, ob sich der jeweilige Kreisel im UZ oder GUZ dreht
|
||||
# rot_of_gf["shape_3ae53a7b-efb8-f66b-eadc-20b99f949ef1"] = ('UZ', 'GUZ')
|
||||
strecken_nachbarn = get_rotations_of_strecken(csv_path)
|
||||
strecken_nachbarn = get_nachbar_information(csv_path)
|
||||
|
||||
# Verarbeitung der Blöcke
|
||||
|
||||
|
||||
Reference in New Issue
Block a user