From 726ca87e9679367acbbfcbda082109d3843c1ca4 Mon Sep 17 00:00:00 2001 From: Paul Wolok Date: Tue, 2 Dec 2025 11:02:15 +0100 Subject: [PATCH] As und es Elemente werden nun in 3d gebogen --- lib/plant2dxf.py | 517 ++++++++++------------------------------------- 1 file changed, 111 insertions(+), 406 deletions(-) diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py index 9b2a17d..041f680 100644 --- a/lib/plant2dxf.py +++ b/lib/plant2dxf.py @@ -1453,7 +1453,8 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve block_vario = doc.blocks.new(blockname, base_point=(0,0,0)) # 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,cofig,block_vario,voerder_richtung) + + 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) # Erstellung des Vario selber vario_erstellung(msp,merkmale, x, y, doc, lib_doc, config, winkel, hoehe_vario, laenge, block_vario,block_name_links, start, ende,voerder_richtung,winkel_VP_offset_vorne,winkel_VP_offset_hinten ) # Reintuen des endblockes in den Modelspace @@ -1625,14 +1626,34 @@ def erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper asoffset_z = asoffset * math.sin(math.radians(winkel_as)) esoffset_y = esoffset * math.cos(math.radians(winkel_as)) esoffset_z = esoffset * math.sin(math.radians(winkel_as)) - + 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) block_as = dreh_block(block_as,doc,math.radians(winkel_as)) + + 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) + block_es = dreh_block(block_es,doc,math.radians(winkel_es)) + + 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) + block_as = dreh_block(block_as,doc,math.radians(winkel_es)) + + 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) + block_es = dreh_block(block_es,doc,math.radians(winkel_es)) + if block_as != None: 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) @@ -1657,85 +1678,16 @@ def erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper else: msp.add_blockref(block_as,(x,y,upper_hoehe_gefaehlle)) return True - - 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) - 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 - - 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 = "200000241_AS-Element_90_rechts" - block_as = "200000217_AS-Element_90_links" - import_block(block_as,lib_doc,doc) - 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)) - 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),dxfattribs={"rotation": 180}) - 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),dxfattribs={"rotation": 180}) - return False - else: - msp.add_blockref(block_as,(x,y,upper_hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return True - - 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) - + elif block_es != None: 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)) + 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),dxfattribs={"rotation": 180}) + 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: @@ -1746,10 +1698,10 @@ def erstellung_gefaelle_block_verbunenden_am_einen(msp,x, y, doc, lib_doc, upper 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),dxfattribs={"rotation": 180}) + 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),dxfattribs={"rotation": 180}) + 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): @@ -1763,390 +1715,141 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_h asoffset_z = asoffset * math.sin(math.radians(winkel_as)) esoffset_y = esoffset * math.cos(math.radians(winkel_as)) esoffset_z = esoffset * math.sin(math.radians(winkel_as)) + 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 ((blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher") or + 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) block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - # block_es = dreh_block(block_es,doc,math.radians(3)) - # esoffset_y = esoffset * math.cos(math.radians(3)) - # esoffset_z = esoffset * math.sin(math.radians(3)) - - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y+ dy - esoffset_y,upper_hoehe_gefaehlle) - ende = (x , y1 ,z1) - block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset_y-y ,start[2] -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) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset_y-y ,ende[2] -hoehe_gefaehlle)) - return start, ende - start = (x , y + dy,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset_y,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_es, (ende[0]-x ,ende[1]- esoffset-y ,ende[2] -hoehe_gefaehlle )) - elif ((blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS") or + + + elif ((drehung0 == "GUZS" and drehung1 == "GUZS") or (am_kreisel != None and drehung0 == "GUZS" and drehung1 == "GUZS")): - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 block_as = "200000241_AS-Element_90_rechts" import_block(block_as,lib_doc,doc) block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y1 ,z1) - ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset -y,ende[2] -hoehe_gefaehlle), dxfattribs={"rotation": 180}) - return start,ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y1 ,z1) - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle)) - return start, ende - - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - 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,start[2] -hoehe_gefaehlle)) - elif ((blockname not in doc.blocks and (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher"))or + 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) block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y1 ,z1) - block_vario.add_blockref(block_es,(start[0]-x ,start[1]+esoffset -y,start[2] - hoehe_gefaehlle)) - return start,ende - elif voerder_richtung == "Ab": - start = (x , y1 ,z1) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_es,(ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle), dxfattribs={"rotation": 180}) - return start,ende - - start = (x , y + dy ,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,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_es,(ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle), dxfattribs={"rotation": 180}) - elif (blockname not in doc.blocks and (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")or + 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) block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y1,z1) - ende = (x , y - dy +asoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset -y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return start,ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y1 ,z1) - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle)) - return start,ende - - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - 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,start[2] - hoehe_gefaehlle)) - elif ((blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS" and hight_position == "higher")or + 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")): - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 + block_es = "400102632_ES-Element_90_links" import_block(block_es,lib_doc,doc) block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y1,z1) - block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset -y,start[2] - hoehe_gefaehlle)) - return start,ende - elif voerder_richtung == "Ab": - start = (x , y1 ,z1) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return start, ende - start = (x , y + dy ,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,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_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - - elif (((blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS")or + 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) block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y1,z1) - ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset -y,ende[2] - hoehe_gefaehlle)) - return start, ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y1 ,z1) - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return start,ende - - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - 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,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - - elif (blockname not in doc.blocks and ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher"))or + 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) block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - if am_kreisel == None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y1 ,z1) - block_vario.add_blockref(block_es, (start[0]-x ,start[1]+esoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return start, ende - elif voerder_richtung == "Ab": - start = (x , y1,z1) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle)) - return start,ende - - start = (x , y + dy,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,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_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle)) - elif (blockname not in doc.blocks and (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")or + 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) block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - if am_kreisel == None: + + if block_es != None: + 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)) - halbe_laenge = laenge / 2 - - dy = halbe_laenge * math.cos(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: if voerder_richtung == "Auf": start = (x , y1,z1) - ende = (x , y - dy + asoffset ,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(ende[0]-x ,ende[1]-asoffset -y,ende[2] - hoehe_gefaehlle)) + 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,upper_hoehe_gefaehlle) + 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,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) + block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset_y -y,start[2] + asoffset_z - hoehe_gefaehlle)) return start,ende - - start = (x , y +dy - asoffset,upper_hoehe_gefaehlle) - 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,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - #erstellung von den normalen gefällestrecken - else: - if ((blockname not in doc.blocks and 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) - block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - if hight_position != None: + elif am_kreisel == None and blockname not in doc.blocks: block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 + 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" - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_es,(start[0]-x ,start[1]+esoffset -y,start[2] -hoehe_gefaehlle), dxfattribs={"rotation": 180}) - block_vario.add_blockref(block_as, (ende[0]-x ,ende[1]-asoffset-y ,ende[2] -hoehe_gefaehlle), dxfattribs={"rotation": 180}) - return start,ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle)) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle)) - return start, ende + copy= line.copy() + copy.translate(-x ,-y,-hoehe_gefaehlle) - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,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_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) - block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] -hoehe_gefaehlle)) - block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle)) - elif (blockname not in doc.blocks and((drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "higher")or (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower")) or + 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) - block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - if hight_position != None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_es,(start[0]-x ,start[1]+ esoffset -y,start[2] - hoehe_gefaehlle)) - block_vario.add_blockref(block_as, (ende[0]-x ,ende[1]- asoffset-y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return start, ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle)) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset-y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - return start, ende - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,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,start[2] - hoehe_gefaehlle)) - block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset-y,ende[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - - elif ((blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS") or (voerder_richtung != None and drehung0 == "UZS" and drehung1 == "UZS")): + 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) - block_as = dreh_block(block_as,doc,math.radians(winkel_as)) - block_es = dreh_block(block_es,doc,math.radians(winkel_es)) - if hight_position !=None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 - dy = halbe_laenge * math.cos(0) - if voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_es,(start[0]-x ,start[1]+esoffset -y,start[2] - hoehe_gefaehlle)) - block_vario.add_blockref(block_as, (ende[0]-x ,ende[1]-asoffset -y,ende[2] - hoehe_gefaehlle)) - return start, ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle) ,dxfattribs={"rotation": 180}) - return start, ende - - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,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,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle) ,dxfattribs={"rotation": 180}) - - elif ((blockname not in doc.blocks and ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")or (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower")))or + 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")) : @@ -2154,29 +1857,15 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_h 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)) - if hight_position != None: - block = doc.blocks.new(name=blockname, base_point=(0,0,0)) - halbe_laenge = laenge / 2 + 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 voerder_richtung == "Auf": - start = (x , y + dy - esoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + asoffset,lower_hoehe_gefaehlle) - - block_vario.add_blockref(block_es,(start[0]-x ,start[1]+esoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - block_vario.add_blockref(block_as, (ende[0]-x ,ende[1]-asoffset -y,ende[2] - hoehe_gefaehlle)) - return start,ende - elif voerder_richtung == "Ab": - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - - block_vario.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - block_vario.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle)) - return start,ende - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + 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" @@ -2184,8 +1873,24 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, upper_hoehe_gefaehlle, lower_h copy.translate(-x ,-y,-hoehe_gefaehlle) block.add_entity(copy) - block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2] - hoehe_gefaehlle),dxfattribs={"rotation": 180}) - block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle)) + 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: @@ -2731,8 +2436,8 @@ def vario_erstellung(msp,merkmale, x, y, doc, lib_doc, config, winkel, hoehe_var for entity in block: clone= entity.copy() if entity.dxftype() == "INSERT": - if (entity.dxf.name == "400102632_ES-Element_90_links" or entity.dxf.name == "200000146_ES-Element_90_rechts" or - entity.dxf.name == "200000241_AS-Element_90_rechts" or entity.dxf.name == "200000217_AS-Element_90_links" + if (entity.dxf.name.startswith("400102632_ES-Element_90_links") or entity.dxf.name.startswith("200000146_ES-Element_90_rechts") or + entity.dxf.name.startswith("200000241_AS-Element_90_rechts") or entity.dxf.name.startswith("200000217_AS-Element_90_links") ): block_links.add_entity(clone) else: