From 04f3aa6cb61f4181604e34e7f0270cce00b34411 Mon Sep 17 00:00:00 2001 From: Paul Wolok Date: Thu, 2 Oct 2025 15:26:31 +0200 Subject: [PATCH] gefaellegerade sonderfall --- lib/plant2dxf.py | 485 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 350 insertions(+), 135 deletions(-) diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py index 0c99585..4136611 100644 --- a/lib/plant2dxf.py +++ b/lib/plant2dxf.py @@ -283,6 +283,8 @@ def handle_standard(msp, blocknames, teileid, x, y, lib_doc, doc, verbose): def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config): #Vorbereitung der attributen + am_kreisel = 0 + richtung2 ="DEFAULT" unterschiedlich = False asoffset = float(config.get("ILS 2.0 Gefällestrecke", "asoffset")) esoffset = float(config.get("ILS 2.0 Gefällestrecke", "esoffset")) @@ -303,10 +305,11 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v y1_kreisel = float(gefaellestrecke_nachbarn.get("y1")) richtung0 = float(gefaellestrecke_nachbarn.get("rotation0")) richtung1 = float(gefaellestrecke_nachbarn.get("rotation1")) + richtung2 ="DEFAULT" richtung_rad0= math.radians(richtung0) richtung_rad1 = math.radians(richtung1) - abstand0 = float(gefaellestrecke_nachbarn.get("abstand0")) - abstand1 = float(gefaellestrecke_nachbarn.get("abstand1")) + abstand0 = float(gefaellestrecke_nachbarn.get("abstand0")) * 1000 + abstand1 = float(gefaellestrecke_nachbarn.get("abstand1")) * 1000 kreisel_verbunden = 0 laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".") try: @@ -319,45 +322,75 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v halbabstand0 = abstand0 / 2 dx0 = halbabstand0 * math.cos(richtung_rad0) dy0 = halbabstand0 * math.sin(richtung_rad0) - pos0_0 = (round(x0_kreisel - dx0),round( y0_kreisel - dy0),hoehe0) - pos0_1 = (round(x0_kreisel+ dx0),round( y0_kreisel+ dy0), hoehe0) + pos0_0 = (round(x0_kreisel + dx0),round( y0_kreisel + dy0),hoehe0) + pos0_1 = (round(x0_kreisel- dx0),round( y0_kreisel- dy0), hoehe0) halbabstand1 = abstand1 / 2 - dx1 = halbabstand1 * math.cos(richtung_rad1) + dx1 = halbabstand1 * math.cos(richtung_rad1 ) dy1 = halbabstand1 * math.sin(richtung_rad1) - pos1_0 = (round(x1_kreisel - dx1), round(y1_kreisel - dy1), hoehe1) - pos1_1 = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1) + pos1_0 = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1) + pos1_1 = (round(x1_kreisel - dx1), round(y1_kreisel - dy1), hoehe1) winkel = math.radians(float(merkmale.get("Drehung"))) halbe_laenge = laenge / 2 dx = halbe_laenge *math.sin(winkel * -1) dy = halbe_laenge * math.cos(winkel) - start = (x +dx , y + dy ,upper_hoehe_gefaehlle) - ende = (x -dx, y - dy ,lower_hoehe_gefaehlle) - abstand_fuer_kreis_start = round(start[0] +RADIUS),round( start[1] + RADIUS) - abstand_gegen_kreis_start = round(start[0] - RADIUS), round(start[1] - RADIUS) - abstand_fuer_kreis_ende = round(ende[0] + RADIUS), round(ende[1] + RADIUS) - abstand_gegen_kreis_ende = round(ende[0] - RADIUS), round(ende[1] - RADIUS) + start = (round(x +dx ), round(y + dy ),upper_hoehe_gefaehlle) + ende = (round(x -dx), round(y - dy ) ,lower_hoehe_gefaehlle) + abstand_fuer_kreis_start_x = start[0] +RADIUS, start[1] + abstand_gegen_kreis_start_x = start[0] -RADIUS, start[1] + abstand_fuer_kreis_start_y = start[0], start[1] + RADIUS + abstand_gegen_kreis_start_y = start[0], start[1] - RADIUS + abstand_fuer_kreis_ende_x= ende[0] + RADIUS, ende[1] + abstand_gegen_kreis_ende_x= ende[0] - RADIUS, ende[1] + abstand_fuer_kreis_ende_y = ende[0] , ende[1] + RADIUS + abstand_gegen_kreis_ende_y = ende[0] , ende[1] - RADIUS - if( abstand_fuer_kreis_start[0] == pos0_0[0] or abstand_fuer_kreis_start[0] == pos0_1[0] or - abstand_fuer_kreis_start[1] == pos0_0[1] or abstand_fuer_kreis_start[1] == pos0_1[1] or - abstand_gegen_kreis_ende[0] == pos0_0[0] or abstand_gegen_kreis_ende[0] == pos0_1[0] or - abstand_gegen_kreis_ende[1] == pos0_0[1] or abstand_gegen_kreis_ende[1] == pos0_1[1] + if( (abstand_fuer_kreis_start_x[0] == pos0_0[0] and abstand_fuer_kreis_start_x[1] == pos0_0[1] )or + ( abstand_fuer_kreis_start_x[0] == pos0_1[0] and abstand_fuer_kreis_start_x[1] == pos0_1[1]) or + ( abstand_gegen_kreis_start_x[0] == pos0_0[0] and abstand_gegen_kreis_start_x[1] == pos0_0[1]) or + ( abstand_gegen_kreis_start_x[0] == pos0_1[0] and abstand_gegen_kreis_start_x[1] == pos0_1[1]) or + (abstand_fuer_kreis_ende_x[0] == pos0_0[0] and abstand_fuer_kreis_ende_x[1] == pos0_0[1] )or + ( abstand_fuer_kreis_ende_x[0] == pos0_1[0] and abstand_fuer_kreis_ende_x[1] == pos0_1[1]) or + ( abstand_gegen_kreis_ende_x[0] == pos0_0[0] and abstand_gegen_kreis_ende_x[1] == pos0_0[1]) or + ( abstand_gegen_kreis_ende_x[0] == pos0_1[0] and abstand_gegen_kreis_ende_x[1] == pos0_1[1]) or - - + (abstand_fuer_kreis_start_y[0] == pos0_0[0] and abstand_fuer_kreis_start_y[1] == pos0_0[1] )or + ( abstand_fuer_kreis_start_y[0] == pos0_1[0] and abstand_fuer_kreis_start_y[1] == pos0_1[1]) or + ( abstand_gegen_kreis_start_y[0] == pos0_0[0] and abstand_gegen_kreis_start_y[1] == pos0_0[1]) or + ( abstand_gegen_kreis_start_y[0] == pos0_1[0] and abstand_gegen_kreis_start_y[1] == pos0_1[1]) or + (abstand_fuer_kreis_ende_y[0] == pos0_0[0] and abstand_fuer_kreis_ende_y[1] == pos0_0[1] )or + ( abstand_fuer_kreis_ende_y[0] == pos0_1[0] and abstand_fuer_kreis_ende_y[1] == pos0_1[1]) or + ( abstand_gegen_kreis_ende_y[0] == pos0_0[0] and abstand_gegen_kreis_ende_y[1] == pos0_0[1]) or + ( abstand_gegen_kreis_ende_y[0] == pos0_1[0] and abstand_gegen_kreis_ende_y[1] == pos0_1[1]) ): kreisel_verbunden = kreisel_verbunden +1 + am_kreisel = 1 - if ( abstand_gegen_kreis_start[0] == pos1_0[0] or abstand_gegen_kreis_start[0] == pos1_1[0] or - abstand_gegen_kreis_start[1] == pos1_0[1] or abstand_gegen_kreis_start[1] == pos1_1[1]or - abstand_fuer_kreis_ende[0] == pos1_0[0] or abstand_fuer_kreis_ende[0] == pos1_1[0] or - abstand_fuer_kreis_ende[1] == pos1_0[1] or abstand_fuer_kreis_ende[1] == pos1_1[1] - ): + if( (abstand_fuer_kreis_start_x[0] == pos1_0[0] and abstand_fuer_kreis_start_x[1] == pos1_0[1] )or + ( abstand_fuer_kreis_start_x[0] == pos1_1[0] and abstand_fuer_kreis_start_x[1] == pos1_1[1]) or + ( abstand_gegen_kreis_start_x[0] == pos1_0[0] and abstand_gegen_kreis_start_x[1] == pos1_0[1]) or + ( abstand_gegen_kreis_start_x[0] == pos1_1[0] and abstand_gegen_kreis_start_x[1] == pos1_1[1]) or + (abstand_fuer_kreis_ende_x[0] == pos1_0[0] and abstand_fuer_kreis_ende_x[1] == pos1_0[1] )or + ( abstand_fuer_kreis_ende_x[0] == pos1_1[0] and abstand_fuer_kreis_ende_x[1] == pos1_1[1]) or + ( abstand_gegen_kreis_ende_x[0] == pos1_0[0] and abstand_gegen_kreis_ende_x[1] == pos1_0[1]) or + ( abstand_gegen_kreis_ende_x[0] == pos1_1[0] and abstand_gegen_kreis_ende_x[1] == pos1_1[1]) or + + (abstand_fuer_kreis_start_y[0] == pos1_0[0] and abstand_fuer_kreis_start_y[1] == pos1_0[1] )or + ( abstand_fuer_kreis_start_y[0] == pos1_1[0] and abstand_fuer_kreis_start_y[1] == pos1_1[1]) or + ( abstand_gegen_kreis_start_y[0] == pos1_0[0] and abstand_gegen_kreis_start_y[1] == pos1_0[1]) or + ( abstand_gegen_kreis_start_y[0] == pos1_1[0] and abstand_gegen_kreis_start_y[1] == pos1_1[1]) or + (abstand_fuer_kreis_ende_y[0] == pos1_0[0] and abstand_fuer_kreis_ende_y[1] == pos1_0[1] )or + ( abstand_fuer_kreis_ende_y[0] == pos1_1[0] and abstand_fuer_kreis_ende_y[1] == pos1_1[1]) or + ( abstand_gegen_kreis_ende_y[0] == pos1_0[0] and abstand_gegen_kreis_ende_y[1] == pos1_0[1]) or + ( abstand_gegen_kreis_ende_y[0] == pos1_1[0] and abstand_gegen_kreis_ende_y[1] == pos1_1[1]) + ): kreisel_verbunden = kreisel_verbunden +1 + am_kreisel = 2 + if kreisel_verbunden == 2: msp.add_line(start,ende) @@ -377,52 +410,88 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v - if (richtung0 != richtung1): + if (richtung0 != richtung1 and kreisel_verbunden ==1): if x-RADIUS == x0_kreisel or x+RADIUS == x0_kreisel or x-RADIUS == x1_kreisel or x+ RADIUS == x1_kreisel: - richtung0= "Horinzontal" + richtung2= "Horinzontal" else: - richtung1 = "Vertikal" + richtung2 = "Vertikal" unterschiedlich = True #Berechnung des Gefälles if hoehe0 > hoehe1: hight_position = "higher" else: hight_position = "lower" - if richtung0 == "Vertikal": - if x0_kreisel < x1_kreisel: - position = hight_position + "_links" - else: - position = hight_position + "_rechts" - else: - if y0_kreisel > y1_kreisel: - position = hight_position + "_higher" - else: - position = hight_position + "_lower" - - if richtung0 == "Vertikal": - if position == "lower_rechts" or position == "higher_links": - gefaelle = "links" - else: - gefaelle = "rechts" - elif richtung0 == "Horinzontal": - if position == "lower_lower" or position == "higher_higher": - gefaelle = "oben" + if richtung2 == "DEFAULT": + if richtung0 == "Vertikal": + if x0_kreisel < x1_kreisel: + position = hight_position + "_links" else: - gefaelle = "unten" - - #Wechsel das die Drehung des obersten oder des Linkens Kreisels immer als erstes steht für die Bennenung des Blockes und dem entsprchend - #wird auch getauscht in welcher hohen position es ist - if (position == "higher_rechts" or position == "lower_rechts" or position=="higher_lower" or position== "lower_lower") and drehung0 != drehung1: - drehung_2 = drehung0 - drehung0 = drehung1 - drehung1= drehung_2 - if hight_position == "higher": - hight_position = "lower" + position = hight_position + "_rechts" else: - hight_position = "higher" + if y0_kreisel > y1_kreisel: + position = hight_position + "_higher" + else: + position = hight_position + "_lower" + + if richtung0 == "Vertikal": + if position == "lower_rechts" or position == "higher_links": + gefaelle = "links" + else: + gefaelle = "rechts" + elif richtung0 == "Horinzontal": + if position == "lower_lower" or position == "higher_higher": + gefaelle = "oben" + else: + gefaelle = "unten" + + if (position == "higher_rechts" or position == "lower_rechts" or position=="higher_lower" or position== "lower_lower") and drehung0 != drehung1: + + drehung_2 = drehung0 + drehung0 = drehung1 + drehung1= drehung_2 + if hight_position == "higher": + hight_position = "lower" + else: + hight_position = "higher" + + else: + if richtung2 == "Vertikal": + if x0_kreisel < x1_kreisel: + position = hight_position + "_links" + else: + position = hight_position + "_rechts" + else: + if y0_kreisel > y1_kreisel: + position = hight_position + "_higher" + else: + position = hight_position + "_lower" + + if richtung2 == "Vertikal": + if position == "lower_rechts" or position == "higher_links": + gefaelle = "links" + else: + gefaelle = "rechts" + elif richtung2 == "Horinzontal": + if position == "lower_lower" or position == "higher_higher": + gefaelle = "oben" + else: + gefaelle = "unten" + + if am_kreisel == 2: + if am_kreisel == 1: + am_kreisel =2 + elif am_kreisel ==2: + am_kreisel = 1 + drehung_2 = drehung0 + drehung0 = drehung1 + drehung1= drehung_2 + if hight_position == "higher": + hight_position = "lower" + else: + hight_position = "higher" # - blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}" + blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{unterschiedlich}_{teileid}" if gefaelle == "oben": rotation = 0 elif gefaelle == "unten" : @@ -431,7 +500,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v rotation = 90 elif gefaelle == "rechts" : rotation = 270 - gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, drehung1, laenge, hight_position, blockname) + gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung0,richtung1,richtung2, am_kreisel,drehung0, drehung1, laenge, hight_position, blockname) @@ -445,89 +514,235 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v ) -def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, drehung1, laenge, hight_position, blockname): - if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" : - 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 - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - line = Line.new(dxfattribs={"start": start, "end": ende}) - copy= line.copy() - - copy.translate(-x,-y,-hoehe_gefaehlle) - block.add_entity(copy) - 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)) - - if 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")): - 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 - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - line = Line.new(dxfattribs={"start": start, "end": ende}) - copy= line.copy() - - copy.translate(-x,-y,-hoehe_gefaehlle) - block.add_entity(copy) - 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.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2])) - block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset-y,ende[2]),dxfattribs={"rotation": 180}) +def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung0,richtun1,richtung2,am_kreisel, drehung0, drehung1, laenge, hight_position, blockname): + if richtung2!= "DEFAULT": + if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher" : + 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,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x,-y,-hoehe_gefaehlle) + block.add_entity(copy) + block_es = "200000146_ES-Element_90_rechts" + import_block(block_es,lib_doc,doc) - if blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS": - 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 - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - line = Line.new(dxfattribs={"start": start, "end": ende}) - copy= line.copy() - - copy.translate(-x ,-y,-hoehe_gefaehlle) - block.add_entity(copy) - 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.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180}) - - block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2]),dxfattribs={"rotation": 180}) + 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": + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy ,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x,-y,-hoehe_gefaehlle) + block.add_entity(copy) + block_as = "200000241_AS-Element_90_rechts" + import_block(block_as,lib_doc,doc) + + 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")): + 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,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x,-y,-hoehe_gefaehlle) + block.add_entity(copy) - - if 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")): - 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.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2])) + elif blockname not in doc.blocks and (drehung0 == "UZS" and drehung1 == "GUZS" and hight_position == "lower"): + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x,-y,-hoehe_gefaehlle) + block.add_entity(copy) + block_as = "200000241_AS-Element_90_rechts" - dy = halbe_laenge * math.cos(0) - start = (x , y + dy - asoffset,upper_hoehe_gefaehlle) - ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) - line = Line.new(dxfattribs={"start": start, "end": ende}) - copy= line.copy() + import_block(block_es,lib_doc,doc) + block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2])) + elif blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS" and hight_position == "higher": + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x ,-y,-hoehe_gefaehlle) + block.add_entity(copy) + + block_es = "400102632_ES-Element_90_links" + import_block(block_es,lib_doc,doc) + + + + block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2]),dxfattribs={"rotation": 180}) - copy.translate(-x ,-y,-hoehe_gefaehlle) - block.add_entity(copy) - 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) + elif blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS": + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x ,-y,-hoehe_gefaehlle) + block.add_entity(copy) + block_as = "200000217_AS-Element_90_links" + import_block(block_as,lib_doc,doc) + block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180}) + elif blockname not in doc.blocks and ((drehung0 == "UZS" and drehung1 == "GUZS" and hight_position== "higher")): + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x ,-y,-hoehe_gefaehlle) + block.add_entity(copy) + + 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]),dxfattribs={"rotation": 180}) - - block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2])) + block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2])) + elif blockname not in doc.blocks and (drehung0 == "GUZS" and drehung1 == "UZS" and hight_position == "lower"): + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x ,-y,-hoehe_gefaehlle) + block.add_entity(copy) + block_as = "200000217_AS-Element_90_links" + import_block(block_as,lib_doc,doc) + + block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180}) + + + + + + + + + + + else: + if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" : + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x,-y,-hoehe_gefaehlle) + block.add_entity(copy) + 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")): + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x,-y,-hoehe_gefaehlle) + block.add_entity(copy) + 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.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2])) + block.add_blockref(block_es, (ende[0]-x ,ende[1]- esoffset-y,ende[2]),dxfattribs={"rotation": 180}) + + + elif blockname not in doc.blocks and drehung0 == "UZS" and drehung1 == "UZS": + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x ,-y,-hoehe_gefaehlle) + block.add_entity(copy) + 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.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180}) + + block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2]),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")): + 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 - asoffset,upper_hoehe_gefaehlle) + ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle) + line = Line.new(dxfattribs={"start": start, "end": ende}) + copy= line.copy() + + copy.translate(-x ,-y,-hoehe_gefaehlle) + block.add_entity(copy) + 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.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180}) + + block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2])) +