From 04f3aa6cb61f4181604e34e7f0270cce00b34411 Mon Sep 17 00:00:00 2001
From: Paul Wolok
Date: Thu, 2 Oct 2025 15:26:31 +0200
Subject: [PATCH 1/4] 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]))
+
From 1f0ec6d687ff140158a8401de133e2e429a220a9 Mon Sep 17 00:00:00 2001
From: Paul Wolok
Date: Tue, 7 Oct 2025 09:01:27 +0200
Subject: [PATCH 2/4] alle gefaellestrecken ausnahmen sind jetzt drinnen logik
wenn kreis nicht mit zwei kreisel verbuden ist
---
lib/plant2dxf.py | 532 ++++++++++++++++++++++++++++-------------------
1 file changed, 319 insertions(+), 213 deletions(-)
diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py
index 4136611..b95fb7b 100644
--- a/lib/plant2dxf.py
+++ b/lib/plant2dxf.py
@@ -283,6 +283,7 @@ 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
@@ -295,223 +296,338 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
if teileid == nachbarn.get("Id"):
gefaellestrecke_nachbarn = nachbarn
break
- drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
- drehung1 = gefaellestrecke_nachbarn.get("Drehung1")
- hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
- hoehe1 = gefaellestrecke_nachbarn.get("Hoehe1")
- x0_kreisel = float(gefaellestrecke_nachbarn.get("x0"))
- y0_kreisel = float(gefaellestrecke_nachbarn.get("y0"))
- x1_kreisel = float(gefaellestrecke_nachbarn.get("x1"))
- 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")) * 1000
- abstand1 = float(gefaellestrecke_nachbarn.get("abstand1")) * 1000
- kreisel_verbunden = 0
- laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
- try:
- laenge = float(laenge_m) * 1000 # Meter → mm
- except ValueError:
- laenge = 10000 # F
+ if "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" in gefaellestrecke_nachbarn:
+ drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
+ drehung1 = gefaellestrecke_nachbarn.get("Drehung1")
+ hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
+ hoehe1 = gefaellestrecke_nachbarn.get("Hoehe1")
+ x0_kreisel = float(gefaellestrecke_nachbarn.get("x0"))
+ y0_kreisel = float(gefaellestrecke_nachbarn.get("y0"))
+ x1_kreisel = float(gefaellestrecke_nachbarn.get("x1"))
+ 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")) * 1000
+ abstand1 = float(gefaellestrecke_nachbarn.get("abstand1")) * 1000
+ kreisel_verbunden = 0
+ laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
+ try:
+ laenge = float(laenge_m) * 1000 # Meter → mm
+ except ValueError:
+ laenge = 10000 # F
- #ausrechnung position kreisel
- 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)
+ #ausrechnung position kreisel
+ 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),hoehe0)
+ pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0), hoehe0)
+ pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0),hoehe0)
+ pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0), hoehe0)
- halbabstand1 = abstand1 / 2
- 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)
- winkel = math.radians(float(merkmale.get("Drehung")))
+ 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), hoehe1)
+ pos1_1_floor = (math.floor(x1_kreisel - dx1), math.floor(y1_kreisel - dy1), hoehe1)
+ pos1_0_round = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1)
+ pos1_1_round = (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 = (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
+ halbe_laenge = laenge / 2
+ dx = halbe_laenge *math.sin(winkel * -1)
+ dy = halbe_laenge * math.cos(winkel)
+ 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)
+ 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
-
- 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
+ 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( (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])
- ):
+
+ if( (abstand_fuer_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_0_floor[1] )or
+ ( abstand_fuer_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_1_floor[1]) or
+ ( abstand_gegen_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_0_floor[1]) or
+ ( abstand_gegen_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_0_floor[1] )or
+ ( abstand_fuer_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
+ ( abstand_gegen_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_0_floor[1]) or
+ ( abstand_gegen_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
+
+ (abstand_fuer_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1] )or
+ ( abstand_fuer_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_1_floor[1]) or
+ ( abstand_gegen_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_0_floor[1]) or
+ ( abstand_gegen_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_0_floor[1] )or
+ ( abstand_fuer_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
+ ( abstand_gegen_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_0_floor[1]) or
+ ( abstand_gegen_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_start_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_0_round[1] )or
+ ( abstand_fuer_kreis_start_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_1_round[1]) or
+ ( abstand_gegen_kreis_start_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_0_round[1]) or
+ ( abstand_gegen_kreis_start_x_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_1_round[1]) or
+ (abstand_fuer_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_0_round[1] )or
+ ( abstand_fuer_kreis_ende_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_1_round[1]) or
+ ( abstand_gegen_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_0_round[1]) or
+ ( abstand_gegen_kreis_ende_x_round[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_1_round[1]) or
+
+ (abstand_fuer_kreis_start_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_0_round[1] )or
+ ( abstand_fuer_kreis_start_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_1_round[1]) or
+ ( abstand_gegen_kreis_start_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_0_round[1]) or
+ ( abstand_gegen_kreis_start_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_1_round[1]) or
+ (abstand_fuer_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_0_round[1] )or
+ ( abstand_fuer_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_1_round[1]) or
+ ( abstand_gegen_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_0_round[1]) or
+ ( abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1])
+ ):
kreisel_verbunden = kreisel_verbunden +1
- am_kreisel = 2
-
-
- if kreisel_verbunden == 2:
- msp.add_line(start,ende)
- return
-
-
-
- if richtung0 == 90.0 or richtung0 ==270:
- richtung0= "Vertikal"
- else:
- richtung0 = "Horinzontal"
- if richtung1 == 90.0 or richtung1 ==270:
- richtung1= "Vertikal"
- else:
- richtung1 = "Horinzontal"
-
+ am_kreisel = 1
- 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:
- richtung2= "Horinzontal"
+ if( (abstand_fuer_kreis_start_x_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos1_0_floor[1] )or
+ (abstand_fuer_kreis_start_x_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos1_1_floor[1]) or
+ (abstand_gegen_kreis_start_x_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos1_0_floor[1]) or
+ (abstand_gegen_kreis_start_x_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos1_1_floor[1]) or
+ (abstand_fuer_kreis_ende_x_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos1_0_floor[1] )or
+ (abstand_fuer_kreis_ende_x_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos1_1_floor[1]) or
+ (abstand_gegen_kreis_ende_x_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos1_0_floor[1]) or
+ (abstand_gegen_kreis_ende_x_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos1_1_floor[1]) or
+
+ (abstand_fuer_kreis_start_y_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_0_floor[1] )or
+ (abstand_fuer_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_1_floor[1]) or
+ (abstand_gegen_kreis_start_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_0_floor[1]) or
+ (abstand_gegen_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_1_floor[1]) or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_0_floor[1] )or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_1_floor[1]) or
+ (abstand_gegen_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_0_floor[1]) or
+ (abstand_gegen_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_1_floor[1]) or
+
+
+
+
+ (abstand_fuer_kreis_start_x_round[0] == pos1_0_round[0] and abstand_fuer_kreis_start_x_round[1] == pos1_0_round[1] )or
+ (abstand_fuer_kreis_start_x_round[0] == pos1_1_round[0] and abstand_fuer_kreis_start_x_round[1] == pos1_1_round[1]) or
+ (abstand_gegen_kreis_start_x_round[0] == pos1_0_round[0] and abstand_gegen_kreis_start_x_round[1] == pos1_0_round[1]) or
+ (abstand_gegen_kreis_start_x_round[0] == pos1_1_round[0] and abstand_gegen_kreis_start_x_round[1] == pos1_1_round[1]) or
+ (abstand_fuer_kreis_ende_x_round[0] == pos1_0_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos1_0_round[1])or
+ (abstand_fuer_kreis_ende_x_round[0] == pos1_1_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos1_1_round[1]) or
+ (abstand_gegen_kreis_ende_x_round[0] == pos1_0_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos1_0_round[1]) or
+ (abstand_gegen_kreis_ende_x_round[0] == pos1_1_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos1_1_round[1]) or
+
+ (abstand_fuer_kreis_start_y_round[0] == pos1_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_0_round[1] )or
+ (abstand_fuer_kreis_start_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_1_round[1]) or
+ (abstand_gegen_kreis_start_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_0_round[1]) or
+ (abstand_gegen_kreis_start_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_1_round[1]) or
+ (abstand_fuer_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_0_round[1] )or
+ (abstand_fuer_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_1_round[1]) or
+ (abstand_gegen_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_0_round[1]) or
+ (abstand_gegen_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_1_round[1])
+ ):
+ kreisel_verbunden = kreisel_verbunden +1
+ am_kreisel = 2
+
+
+ if kreisel_verbunden == 2:
+ start = x +dx, y + dy,upper_hoehe_gefaehlle
+ ende = x -dx, y - dy,lower_hoehe_gefaehlle
+ msp.add_line(start,ende)
+ return
+
+
+
+ if richtung0 == 90.0 or richtung0 ==270:
+ richtung0= "Vertikal"
else:
- richtung2 = "Vertikal"
- unterschiedlich = True
- #Berechnung des Gefälles
- if hoehe0 > hoehe1:
- hight_position = "higher"
- else:
- hight_position = "lower"
- if richtung2 == "DEFAULT":
- if richtung0 == "Vertikal":
- if x0_kreisel < x1_kreisel:
- position = hight_position + "_links"
- else:
- position = hight_position + "_rechts"
+ richtung0 = "Horinzontal"
+ if richtung1 == 90.0 or richtung1 ==270:
+ richtung1= "Vertikal"
else:
- if y0_kreisel > y1_kreisel:
- position = hight_position + "_higher"
- else:
- position = hight_position + "_lower"
+ richtung1 = "Horinzontal"
+
- if richtung0 == "Vertikal":
- if position == "lower_rechts" or position == "higher_links":
- gefaelle = "links"
+
+
+ if (richtung0 != richtung1 and kreisel_verbunden ==1):
+ if(
+ (abstand_fuer_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1])or
+ (abstand_fuer_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_gegen_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_0_floor[1]) or
+ (abstand_gegen_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_0_floor[1])or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_gegen_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_0_floor[1]) or
+ (abstand_gegen_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_start_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_0_round[1])or
+ (abstand_fuer_kreis_start_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_1_round[1]) or
+ (abstand_gegen_kreis_start_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_0_round[1]) or
+ (abstand_gegen_kreis_start_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_1_round[1]) or
+ (abstand_fuer_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_0_round[1])or
+ (abstand_fuer_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_1_round[1]) or
+ (abstand_gegen_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_0_round[1]) or
+ (abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1]) or
+
+
+
+ (abstand_fuer_kreis_start_y_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_0_floor[1] )or
+ ( abstand_fuer_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_1_floor[1]) or
+ ( abstand_gegen_kreis_start_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_0_floor[1]) or
+ ( abstand_gegen_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_1_floor[1]) or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_0_floor[1] )or
+ ( abstand_fuer_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_1_floor[1]) or
+ ( abstand_gegen_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_0_floor[1]) or
+ ( abstand_gegen_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_1_floor[1]) or
+
+ (abstand_fuer_kreis_start_y_round[0] == pos1_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_0_round[1] )or
+ ( abstand_fuer_kreis_start_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_1_round[1]) or
+ ( abstand_gegen_kreis_start_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_0_round[1]) or
+ ( abstand_gegen_kreis_start_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_1_round[1]) or
+ (abstand_fuer_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_0_round[1] )or
+ ( abstand_fuer_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_1_round[1]) or
+ ( abstand_gegen_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_0_round[1]) or
+ ( abstand_gegen_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_1_round[1])
+ ):
+ richtung2= "Vertikal"
else:
- gefaelle = "rechts"
- elif richtung0 == "Horinzontal":
- if position == "lower_lower" or position == "higher_higher":
- gefaelle = "oben"
+ richtung2 = "Horinzontal"
+ unterschiedlich = True
+ #Berechnung des Gefälles
+
+ if hoehe0 > hoehe1:
+ hight_position = "higher"
+ else:
+ hight_position = "lower"
+ if richtung2 == "DEFAULT":
+ if richtung0 == "Vertikal":
+ if x0_kreisel < x1_kreisel:
+ position = hight_position + "_links"
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"
+ position = hight_position + "_rechts"
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"
+ if y0_kreisel > y1_kreisel:
+ position = hight_position + "_higher"
else:
- gefaelle = "unten"
+ 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 kreisel_verbunden == 1 and 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"
+
+ 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 == 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"
+ 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}_{unterschiedlich}_{teileid}"
- if gefaelle == "oben":
- rotation = 0
- elif gefaelle == "unten" :
- rotation = 180
- elif gefaelle == "links" :
- rotation = 90
- elif gefaelle == "rechts" :
- rotation = 270
- 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)
+ #
+ blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{unterschiedlich}_{teileid}"
+ if gefaelle == "oben":
+ rotation = 0
+ elif gefaelle == "unten" :
+ rotation = 180
+ elif gefaelle == "links" :
+ rotation = 90
+ elif gefaelle == "rechts" :
+ rotation = 270
+
+
+
+ if (kreisel_verbunden == 1 and richtung2 =="DEFAULT"):
+ richtung2 = richtung0
-
- bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
- bref.add_attrib(
- tag= "NAME",
- text= merkmale.get("bezeichner"),
- insert = (x,y)
+ 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)
+
+
-
- )
+ bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
+ bref.add_attrib(
+ tag= "NAME",
+ text= merkmale.get("bezeichner"),
+ insert = (x,y)
+
+
+ )
+ else:
+ laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
+ try:
+ laenge = float(laenge_m) * 1000 # Meter → mm
+ except ValueError:
+ laenge = 10000
+
+ 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
+ msp.add_line(start,ende)
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):
@@ -564,14 +680,14 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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 == "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)
+ ende = (x , y - dy ,lower_hoehe_gefaehlle)
line = Line.new(dxfattribs={"start": start, "end": ende})
copy= line.copy()
@@ -579,14 +695,14 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
block.add_entity(copy)
block_as = "200000241_AS-Element_90_rechts"
- import_block(block_es,lib_doc,doc)
+ import_block(block_as,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)
+ 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()
@@ -607,7 +723,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
dy = halbe_laenge * math.cos(0)
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
- ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
+ ende = (x , y - dy ,lower_hoehe_gefaehlle)
line = Line.new(dxfattribs={"start": start, "end": ende})
copy= line.copy()
@@ -615,13 +731,16 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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)
+ 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()
@@ -639,7 +758,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
dy = halbe_laenge * math.cos(0)
start = (x , y + dy - asoffset,upper_hoehe_gefaehlle)
- ende = (x , y - dy + esoffset,lower_hoehe_gefaehlle)
+ ende = (x , y - dy ,lower_hoehe_gefaehlle)
line = Line.new(dxfattribs={"start": start, "end": ende})
copy= line.copy()
@@ -650,16 +769,6 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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))
@@ -743,9 +852,6 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2]))
-
-
-
def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config):
"""
Für Omniflo Gerade: zeichnet eine Linie (Mitte = Koordinate, Länge und Winkel aus Merkmale).
From 971a766f9fab4bcc3ea69af9ac8924f818969d02 Mon Sep 17 00:00:00 2001
From: Paul Wolok
Date: Tue, 7 Oct 2025 15:01:06 +0200
Subject: [PATCH 3/4] man kann nun gefaellestreckne nur mit einem kreisel
verbinden
---
lib/plant2dxf.py | 297 ++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 281 insertions(+), 16 deletions(-)
diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py
index b95fb7b..4965985 100644
--- a/lib/plant2dxf.py
+++ b/lib/plant2dxf.py
@@ -283,7 +283,7 @@ 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
-
+ verbunden_am_einen = False
am_kreisel = 0
richtung2 ="DEFAULT"
unterschiedlich = False
@@ -296,7 +296,256 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
if teileid == nachbarn.get("Id"):
gefaellestrecke_nachbarn = nachbarn
break
- if "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" in gefaellestrecke_nachbarn:
+ if "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" not in gefaellestrecke_nachbarn:
+ drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
+ x0_kreisel = float(gefaellestrecke_nachbarn.get("x0"))
+ y0_kreisel = float(gefaellestrecke_nachbarn.get("y0"))
+ hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
+ richtung0 = float(gefaellestrecke_nachbarn.get("rotation0"))
+ richtung_rad0= math.radians(richtung0)
+ abstand0 = float(gefaellestrecke_nachbarn.get("abstand0")) * 1000
+ laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
+ try:
+ laenge = float(laenge_m) * 1000 # Meter → mm
+ except ValueError:
+ laenge = 10000
+ 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),hoehe0)
+ pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0), hoehe0)
+ pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0),hoehe0)
+ pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0), hoehe0)
+ halbe_laenge = laenge / 2
+ winkel = math.radians(float(merkmale.get("Drehung")))
+ dx = halbe_laenge *math.sin(winkel * -1)
+ dy = halbe_laenge * math.cos(winkel)
+
+
+ if upper_hoehe_gefaehlle < lower_hoehe_gefaehlle:
+ hoehe2 = upper_hoehe_gefaehlle
+ upper_hoehe_gefaehlle = lower_hoehe_gefaehlle
+ lower_hoehe_gefaehlle = hoehe2
+
+
+ if upper_hoehe_gefaehlle == hoehe0:
+ hight = "higher"
+ if richtung0 == 90.0 or richtung0 ==270:
+ richtung0= "Vertikal"
+ if x0_kreisel < x:
+ start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
+ ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
+ start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
+ ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
+ gefaelle = "links"
+ else:
+ 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)
+ gefaelle = "rechts"
+ else:
+ richtung0 = "Horinzontal"
+ if y0_kreisel < y:
+ start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
+ ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
+ start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
+ ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
+ gefaelle = "links"
+ gefaelle = "unten"
+ else:
+ 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)
+ gefaelle = "links"
+ gefaelle = "oben"
+ else:
+ hight = "lower"
+ if richtung0 == 90.0 or richtung0 ==270:
+ richtung0= "Vertikal"
+ if x0_kreisel < x:
+ 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)
+ gefaelle = "rechts"
+ else:
+ start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
+ ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
+ start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
+ ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
+ gefaelle = "links"
+ else:
+ richtung0 = "Horinzontal"
+ if y0_kreisel < y:
+ 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)
+ gefaelle = "links"
+ gefaelle = "oben"
+ else:
+ start_floor = (math.floor(x +dx ), math.floor(y + dy ),lower_hoehe_gefaehlle)
+ ende_floor = (math.floor(x -dx), math.floor(y - dy ) ,upper_hoehe_gefaehlle)
+ start_round = (round(x +dx ), round(y + dy ),lower_hoehe_gefaehlle)
+ ende_round= (round(x -dx), round(y - dy ) ,upper_hoehe_gefaehlle)
+ gefaelle = "links"
+ gefaelle = "unten"
+ 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( (abstand_fuer_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_0_floor[1] )or
+ (abstand_fuer_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_1_floor[1]) or
+ (abstand_gegen_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_0_floor[1]) or
+ (abstand_gegen_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_0_floor[1] )or
+ (abstand_fuer_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
+ (abstand_gegen_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_0_floor[1]) or
+ (abstand_gegen_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
+
+ (abstand_fuer_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1] )or
+ (abstand_fuer_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_gegen_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_0_floor[1]) or
+ (abstand_gegen_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_0_floor[1] )or
+ (abstand_fuer_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_gegen_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_0_floor[1]) or
+ (abstand_gegen_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
+ (abstand_fuer_kreis_start_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_0_round[1] )or
+ (abstand_fuer_kreis_start_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_1_round[1]) or
+ (abstand_gegen_kreis_start_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_0_round[1]) or
+ (abstand_gegen_kreis_start_x_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_1_round[1]) or
+ (abstand_fuer_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_0_round[1] )or
+ (abstand_fuer_kreis_ende_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_1_round[1]) or
+ (abstand_gegen_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_0_round[1]) or
+ (abstand_gegen_kreis_ende_x_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_1_round[1]) or
+
+ (abstand_fuer_kreis_start_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_0_round[1] )or
+ (abstand_fuer_kreis_start_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_1_round[1]) or
+ (abstand_gegen_kreis_start_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_0_round[1]) or
+ (abstand_gegen_kreis_start_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_1_round[1]) or
+ (abstand_fuer_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_0_round[1] )or
+ (abstand_fuer_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_1_round[1]) or
+ (abstand_gegen_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_0_round[1]) or
+ (abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1])
+ ):
+ kreisel_verbunden = kreisel_verbunden +1
+ # setzung auf kreisel 1 für spätere ausrechnung der geraden form
+ am_kreisel = 1
+ start = x +dx, y + dy,start_floor[2]
+ ende = x -dx, y - dy,ende_floor[2]
+ msp.add_line(start,ende)
+ return
+
+ verbunden_am_einen = True
+ blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{drehung0}_{gefaelle}_{verbunden_am_einen}_{hight}"
+ if gefaelle == "oben":
+ rotation = 0
+ elif gefaelle == "unten" :
+ rotation = 180
+ elif gefaelle == "links" :
+ rotation = 90
+ elif gefaelle == "rechts" :
+ rotation = 270
+ if blockname not in doc.blocks and hight == "higher" and drehung0 == "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 hight == "lower" and drehung0 == "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,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_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
+ elif blockname not in doc.blocks and hight == "higher" and drehung0 == "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 ,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 hight == "lower" and drehung0 == "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 ,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})
+ bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
+ bref.add_attrib(
+ tag= "NAME",
+ text= merkmale.get("bezeichner"),
+ insert = (x,y)
+ )
+
+
+
+
+
+
+
+ elif "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" in gefaellestrecke_nachbarn:
drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
drehung1 = gefaellestrecke_nachbarn.get("Drehung1")
hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
@@ -317,7 +566,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
try:
laenge = float(laenge_m) * 1000 # Meter → mm
except ValueError:
- laenge = 10000 # F
+ laenge = 10000
#ausrechnung position kreisel
@@ -337,7 +586,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
pos1_0_round = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1)
pos1_1_round = (round(x1_kreisel - dx1), round(y1_kreisel - dy1), hoehe1)
winkel = math.radians(float(merkmale.get("Drehung")))
-
+ # berechnung der geraden einmal abgerunden und einmal gerunden zur negirung des offsets
halbe_laenge = laenge / 2
dx = halbe_laenge *math.sin(winkel * -1)
dy = halbe_laenge * math.cos(winkel)
@@ -345,6 +594,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
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
@@ -364,7 +614,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
abstand_gegen_kreis_ende_y_round = ende_round[0] , ende_round[1] - RADIUS
-
+ # vergleich mit einem kreisel von zwei
if( (abstand_fuer_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_0_floor[1] )or
( abstand_fuer_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_1_floor[1]) or
( abstand_gegen_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_0_floor[1]) or
@@ -401,6 +651,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
( abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1])
):
kreisel_verbunden = kreisel_verbunden +1
+ # setzung auf kreisel 1 für spätere ausrechnung der geraden form
am_kreisel = 1
@@ -447,7 +698,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
kreisel_verbunden = kreisel_verbunden +1
am_kreisel = 2
-
+ # 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
ende = x -dx, y - dy,lower_hoehe_gefaehlle
@@ -455,7 +706,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
return
-
+ #umbezeichnung von den geraden zu strings ob es Vertikal oder Horizontal ist
if richtung0 == 90.0 or richtung0 ==270:
richtung0= "Vertikal"
else:
@@ -467,7 +718,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
-
+ # setzung von richtung2 auf vertikal oder horizontal je nach dem welche orientierung der kreisel hat mit dem man am kreisel verbunden ist
if (richtung0 != richtung1 and kreisel_verbunden ==1):
if(
(abstand_fuer_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1])or
@@ -539,7 +790,17 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
gefaelle = "oben"
else:
gefaelle = "unten"
-
+ # vertausch der drehung und der höhe für die namens gebung des blockes
+ if (position == "higher_rechts" or position == "lower_rechts" or position=="higher_lower" or position== "lower_lower") and drehung0 != drehung1 and am_kreisel == 0:
+ drehung_2 = drehung0
+ drehung0 = drehung1
+ drehung1= drehung_2
+ if hight_position == "higher":
+ hight_position = "lower"
+ else:
+ hight_position = "higher"
+
+ # austausch der werte damit immer davon ausgehen dass der 1 kreisel in unserer Liste am Kreisel verbuden ist
if kreisel_verbunden == 1 and am_kreisel ==2:
am_kreisel == 1
@@ -573,7 +834,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
gefaelle = "oben"
else:
gefaelle = "unten"
-
+ # austausch der werte damit immer davon ausgehen dass der 1 kreisel in unserer Liste am Kreisel verbuden ist
if am_kreisel == 2:
am_kreisel = 1
@@ -585,8 +846,10 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
else:
hight_position = "higher"
- #
- blockname = f"Ils_2.0_Gefaellestrecke_{laenge}_{hoehe_gefaehlle}_{drehung0}_{drehung1}_{hight_position}_{unterschiedlich}_{teileid}"
+ if richtung2 == "DEFAULT":
+ 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}"
if gefaelle == "oben":
rotation = 0
elif gefaelle == "unten" :
@@ -597,12 +860,12 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
rotation = 270
-
+ #geben der richtung2 eines wertes außer default wenn beide kreisel die gleiche richung haben
if (kreisel_verbunden == 1 and richtung2 =="DEFAULT"):
richtung2 = richtung0
- 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)
+ gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2, am_kreisel,drehung0, drehung1, laenge, hight_position, verbunden_am_einen,blockname)
@@ -614,6 +877,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
)
+ #falls eine gefällestrecke nicht mit einem kreisel verbunden ist
else:
laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
try:
@@ -630,7 +894,8 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
msp.add_line(start,ende)
-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):
+def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2,am_kreisel, drehung0, drehung1, laenge, hight_position,verbunden_am_einen, blockname):
+ #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
if richtung2!= "DEFAULT":
if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher" :
@@ -768,7 +1033,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
import_block(block_as,lib_doc,doc)
block.add_blockref(block_as,(start[0]-x ,start[1]+asoffset -y,start[2]),dxfattribs={"rotation": 180})
-
+ #erstellung von den normalen gefällestrecken
else:
if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" :
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
From 2f5b43ad12fde35a4e2be658e70e39f454434179 Mon Sep 17 00:00:00 2001
From: Paul Wolok
Date: Wed, 8 Oct 2025 11:42:23 +0200
Subject: [PATCH 4/4] =?UTF-8?q?Die=20h=C3=B6hen=20werden=20nun=20im=202.5?=
=?UTF-8?q?=20d=20richtig=20angezeigt=20und=20die=20linien=20=C3=BCbernehm?=
=?UTF-8?q?en=20nun=20die=20layers?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/plant2dxf.py | 532 ++++++++++++++++++++++++++---------------------
1 file changed, 292 insertions(+), 240 deletions(-)
diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py
index 4965985..5c8ab47 100644
--- a/lib/plant2dxf.py
+++ b/lib/plant2dxf.py
@@ -283,7 +283,10 @@ 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
+ if "6-SP" not in doc.layers:
+ doc.layers.add(name="6-SP", color=3)
verbunden_am_einen = False
+
am_kreisel = 0
richtung2 ="DEFAULT"
unterschiedlich = False
@@ -300,7 +303,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
x0_kreisel = float(gefaellestrecke_nachbarn.get("x0"))
y0_kreisel = float(gefaellestrecke_nachbarn.get("y0"))
- hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
+ hoehe0 = float(gefaellestrecke_nachbarn.get("Hoehe0"))
richtung0 = float(gefaellestrecke_nachbarn.get("rotation0"))
richtung_rad0= math.radians(richtung0)
abstand0 = float(gefaellestrecke_nachbarn.get("abstand0")) * 1000
@@ -411,47 +414,50 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
abstand_gegen_kreis_ende_y_round = ende_round[0] , ende_round[1] - RADIUS
- if( (abstand_fuer_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_0_floor[1] )or
- (abstand_fuer_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_1_floor[1]) or
- (abstand_gegen_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_0_floor[1]) or
- (abstand_gegen_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_0_floor[1] )or
- (abstand_fuer_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
- (abstand_gegen_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_0_floor[1]) or
- (abstand_gegen_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
+ 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[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1] )or
- (abstand_fuer_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_1_floor[1]) or
- (abstand_gegen_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_0_floor[1]) or
- (abstand_gegen_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_0_floor[1] )or
- (abstand_fuer_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
- (abstand_gegen_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_0_floor[1]) or
- (abstand_gegen_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_start_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_0_round[1] )or
- (abstand_fuer_kreis_start_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_1_round[1]) or
- (abstand_gegen_kreis_start_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_0_round[1]) or
- (abstand_gegen_kreis_start_x_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_1_round[1]) or
- (abstand_fuer_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_0_round[1] )or
- (abstand_fuer_kreis_ende_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_1_round[1]) or
- (abstand_gegen_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_0_round[1]) or
- (abstand_gegen_kreis_ende_x_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_1_round[1]) 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[0] == pos0_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_0_round[1] )or
- (abstand_fuer_kreis_start_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_1_round[1]) or
- (abstand_gegen_kreis_start_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_0_round[1]) or
- (abstand_gegen_kreis_start_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_1_round[1]) or
- (abstand_fuer_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_0_round[1] )or
- (abstand_fuer_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_1_round[1]) or
- (abstand_gegen_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_0_round[1]) or
- (abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1])
+ (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
start = x +dx, y + dy,start_floor[2]
ende = x -dx, y - dy,ende_floor[2]
- msp.add_line(start,ende)
+ line =msp.add_line(start,ende)
+ line.dxf.layer = "6-SP"
+
return
verbunden_am_einen = True
@@ -464,80 +470,15 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
rotation = 90
elif gefaelle == "rechts" :
rotation = 270
- if blockname not in doc.blocks and hight == "higher" and drehung0 == "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 hight == "lower" and drehung0 == "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,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_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
- elif blockname not in doc.blocks and hight == "higher" and drehung0 == "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 ,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 hight == "lower" and drehung0 == "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 ,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})
- bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
- bref.add_attrib(
+ erstellung_gefaelle_block_verbunenden_am_einen(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge, hight, blockname)
+ blockref_layer = get_layer(doc, lib_doc, blockname)
+ bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation, "layer": blockref_layer})
+ a =bref.add_attrib(
tag= "NAME",
text= merkmale.get("bezeichner"),
insert = (x,y)
- )
+ )
+ a.is_invisible = True
@@ -548,7 +489,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
elif "Drehung0" in gefaellestrecke_nachbarn and "Drehung1" in gefaellestrecke_nachbarn:
drehung0 =gefaellestrecke_nachbarn.get("Drehung0")
drehung1 = gefaellestrecke_nachbarn.get("Drehung1")
- hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
+ hoehe0 = gefaellestrecke_nachbarn.get("Hoehe0")
hoehe1 = gefaellestrecke_nachbarn.get("Hoehe1")
x0_kreisel = float(gefaellestrecke_nachbarn.get("x0"))
y0_kreisel = float(gefaellestrecke_nachbarn.get("y0"))
@@ -573,18 +514,18 @@ 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_floor= (math.floor(x0_kreisel + dx0),math.floor( y0_kreisel + dy0),hoehe0)
- pos0_1_floor = (math.floor(x0_kreisel- dx0),math.floor( y0_kreisel- dy0), hoehe0)
- pos0_0_round= (round(x0_kreisel + dx0),round( y0_kreisel + dy0),hoehe0)
- pos0_1_round = (round(x0_kreisel- dx0),round( y0_kreisel- dy0), hoehe0)
+ 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))
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), hoehe1)
- pos1_1_floor = (math.floor(x1_kreisel - dx1), math.floor(y1_kreisel - dy1), hoehe1)
- pos1_0_round = (round(x1_kreisel + dx1), round(y1_kreisel + dy1), hoehe1)
- pos1_1_round = (round(x1_kreisel - dx1), round(y1_kreisel - dy1), hoehe1)
+ 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))
winkel = math.radians(float(merkmale.get("Drehung")))
# berechnung der geraden einmal abgerunden und einmal gerunden zur negirung des offsets
halbe_laenge = laenge / 2
@@ -615,40 +556,41 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
# vergleich mit einem kreisel von zwei
- if( (abstand_fuer_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_0_floor[1] )or
- ( abstand_fuer_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos0_1_floor[1]) or
- ( abstand_gegen_kreis_start_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_0_floor[1]) or
- ( abstand_gegen_kreis_start_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_0_floor[1] )or
- ( abstand_fuer_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
- ( abstand_gegen_kreis_ende_x_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_0_floor[1]) or
- ( abstand_gegen_kreis_ende_x_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos0_1_floor[1]) or
+ 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[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1] )or
- ( abstand_fuer_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_1_floor[1]) or
- ( abstand_gegen_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_0_floor[1]) or
- ( abstand_gegen_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_0_floor[1] )or
- ( abstand_fuer_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
- ( abstand_gegen_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_0_floor[1]) or
- ( abstand_gegen_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_start_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_0_round[1] )or
- ( abstand_fuer_kreis_start_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_x_round[1] == pos0_1_round[1]) or
- ( abstand_gegen_kreis_start_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_0_round[1]) or
- ( abstand_gegen_kreis_start_x_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_x_round[1] == pos0_1_round[1]) or
- (abstand_fuer_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_0_round[1] )or
- ( abstand_fuer_kreis_ende_x_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos0_1_round[1]) or
- ( abstand_gegen_kreis_ende_x_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_0_round[1]) or
- ( abstand_gegen_kreis_ende_x_round[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_x_round[1] == pos0_1_round[1]) 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[0] == pos0_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_0_round[1] )or
- ( abstand_fuer_kreis_start_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_1_round[1]) or
- ( abstand_gegen_kreis_start_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_0_round[1]) or
- ( abstand_gegen_kreis_start_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_1_round[1]) or
- (abstand_fuer_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_0_round[1] )or
- ( abstand_fuer_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_1_round[1]) or
- ( abstand_gegen_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_0_round[1]) or
- ( abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1])
+ (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
@@ -656,44 +598,41 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
- if( (abstand_fuer_kreis_start_x_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos1_0_floor[1] )or
- (abstand_fuer_kreis_start_x_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_start_x_floor[1] == pos1_1_floor[1]) or
- (abstand_gegen_kreis_start_x_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos1_0_floor[1]) or
- (abstand_gegen_kreis_start_x_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_start_x_floor[1] == pos1_1_floor[1]) or
- (abstand_fuer_kreis_ende_x_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos1_0_floor[1] )or
- (abstand_fuer_kreis_ende_x_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_ende_x_floor[1] == pos1_1_floor[1]) or
- (abstand_gegen_kreis_ende_x_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos1_0_floor[1]) or
- (abstand_gegen_kreis_ende_x_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_ende_x_floor[1] == pos1_1_floor[1]) or
+ 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[0] == pos1_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_0_floor[1] )or
- (abstand_fuer_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_1_floor[1]) or
- (abstand_gegen_kreis_start_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_0_floor[1]) or
- (abstand_gegen_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_1_floor[1]) or
- (abstand_fuer_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_0_floor[1] )or
- (abstand_fuer_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_1_floor[1]) or
- (abstand_gegen_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_0_floor[1]) or
- (abstand_gegen_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_1_floor[1]) 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[0] == pos1_0_round[0] and abstand_fuer_kreis_start_x_round[1] == pos1_0_round[1] )or
- (abstand_fuer_kreis_start_x_round[0] == pos1_1_round[0] and abstand_fuer_kreis_start_x_round[1] == pos1_1_round[1]) or
- (abstand_gegen_kreis_start_x_round[0] == pos1_0_round[0] and abstand_gegen_kreis_start_x_round[1] == pos1_0_round[1]) or
- (abstand_gegen_kreis_start_x_round[0] == pos1_1_round[0] and abstand_gegen_kreis_start_x_round[1] == pos1_1_round[1]) or
- (abstand_fuer_kreis_ende_x_round[0] == pos1_0_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos1_0_round[1])or
- (abstand_fuer_kreis_ende_x_round[0] == pos1_1_round[0] and abstand_fuer_kreis_ende_x_round[1] == pos1_1_round[1]) or
- (abstand_gegen_kreis_ende_x_round[0] == pos1_0_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos1_0_round[1]) or
- (abstand_gegen_kreis_ende_x_round[0] == pos1_1_round[0] and abstand_gegen_kreis_ende_x_round[1] == pos1_1_round[1]) 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[0] == pos1_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_0_round[1] )or
- (abstand_fuer_kreis_start_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_1_round[1]) or
- (abstand_gegen_kreis_start_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_0_round[1]) or
- (abstand_gegen_kreis_start_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_1_round[1]) or
- (abstand_fuer_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_0_round[1] )or
- (abstand_fuer_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_1_round[1]) or
- (abstand_gegen_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_0_round[1]) or
- (abstand_gegen_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_1_round[1])
+ (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
@@ -702,7 +641,8 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
if kreisel_verbunden == 2:
start = x +dx, y + dy,upper_hoehe_gefaehlle
ende = x -dx, y - dy,lower_hoehe_gefaehlle
- msp.add_line(start,ende)
+ line = msp.add_line(start,ende)
+ line.dxf.layer = "6-SP"
return
@@ -721,42 +661,42 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
# setzung von richtung2 auf vertikal oder horizontal je nach dem welche orientierung der kreisel hat mit dem man am kreisel verbunden ist
if (richtung0 != richtung1 and kreisel_verbunden ==1):
if(
- (abstand_fuer_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_0_floor[1])or
- (abstand_fuer_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos0_1_floor[1]) or
- (abstand_gegen_kreis_start_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_0_floor[1]) or
- (abstand_gegen_kreis_start_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_0_floor[1])or
- (abstand_fuer_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
- (abstand_gegen_kreis_ende_y_floor[0] == pos0_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_0_floor[1]) or
- (abstand_gegen_kreis_ende_y_floor[0] == pos0_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos0_1_floor[1]) or
- (abstand_fuer_kreis_start_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_0_round[1])or
- (abstand_fuer_kreis_start_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos0_1_round[1]) or
- (abstand_gegen_kreis_start_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_0_round[1]) or
- (abstand_gegen_kreis_start_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos0_1_round[1]) or
- (abstand_fuer_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_0_round[1])or
- (abstand_fuer_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos0_1_round[1]) or
- (abstand_gegen_kreis_ende_y_round[0] == pos0_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_0_round[1]) or
- (abstand_gegen_kreis_ende_y_round[0] == pos0_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos0_1_round[1]) 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_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[0] == pos1_0_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_0_floor[1] )or
- ( abstand_fuer_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_start_y_floor[1] == pos1_1_floor[1]) or
- ( abstand_gegen_kreis_start_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_0_floor[1]) or
- ( abstand_gegen_kreis_start_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_start_y_floor[1] == pos1_1_floor[1]) or
- (abstand_fuer_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_0_floor[1] )or
- ( abstand_fuer_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_fuer_kreis_ende_y_floor[1] == pos1_1_floor[1]) or
- ( abstand_gegen_kreis_ende_y_floor[0] == pos1_0_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_0_floor[1]) or
- ( abstand_gegen_kreis_ende_y_floor[0] == pos1_1_floor[0] and abstand_gegen_kreis_ende_y_floor[1] == pos1_1_floor[1]) 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[0] == pos1_0_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_0_round[1] )or
- ( abstand_fuer_kreis_start_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_start_y_round[1] == pos1_1_round[1]) or
- ( abstand_gegen_kreis_start_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_0_round[1]) or
- ( abstand_gegen_kreis_start_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_start_y_round[1] == pos1_1_round[1]) or
- (abstand_fuer_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_0_round[1] )or
- ( abstand_fuer_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_fuer_kreis_ende_y_round[1] == pos1_1_round[1]) or
- ( abstand_gegen_kreis_ende_y_round[0] == pos1_0_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_0_round[1]) or
- ( abstand_gegen_kreis_ende_y_round[0] == pos1_1_round[0] and abstand_gegen_kreis_ende_y_round[1] == pos1_1_round[1])
+ (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"
else:
@@ -846,10 +786,7 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
else:
hight_position = "higher"
- if richtung2 == "DEFAULT":
- 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}"
+
if gefaelle == "oben":
rotation = 0
elif gefaelle == "unten" :
@@ -864,19 +801,21 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
if (kreisel_verbunden == 1 and richtung2 =="DEFAULT"):
richtung2 = richtung0
-
- gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2, am_kreisel,drehung0, drehung1, laenge, hight_position, verbunden_am_einen,blockname)
-
+ if richtung2 == "DEFAULT":
+ 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, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2,drehung0, drehung1, laenge, hight_position,blockname)
+ blockref_layer = get_layer(doc, lib_doc, blockname)
- bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation})
- bref.add_attrib(
+ bref =msp.add_blockref(blockname,(x,y,hoehe_gefaehlle),dxfattribs={"rotation": rotation, "layer": blockref_layer })
+ a = bref.add_attrib(
tag= "NAME",
text= merkmale.get("bezeichner"),
insert = (x,y)
-
-
)
+ a.is_invisible = True
#falls eine gefällestrecke nicht mit einem kreisel verbunden ist
else:
laenge_m = merkmale.get("Länge in Meter", "10").replace(",", ".")
@@ -891,11 +830,90 @@ def handle_ils_2_0_gefaellestrecke(msp, teileid, merkmale, x, y, doc, lib_doc, v
dy = halbe_laenge * math.cos(winkel)
start = x +dx, y + dy,upper_hoehe_gefaehlle
ende = x -dx, y - dy,lower_hoehe_gefaehlle
- msp.add_line(start,ende)
+ line = msp.add_line(start,ende)
+ line.dxf.layer = "6-SP"
+
+def erstellung_gefaelle_block_verbunenden_am_einen(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle, drehung0, laenge, hight, blockname):
+ if blockname not in doc.blocks and hight == "higher" and drehung0 == "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})
+ line.dxf.layer = "6-SP"
+ 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 hight == "lower" and drehung0 == "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,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_es = "200000146_ES-Element_90_rechts"
+ import_block(block_es,lib_doc,doc)
+
+ block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset-y ,ende[2] -hoehe_gefaehlle))
+ elif blockname not in doc.blocks and hight == "higher" and drehung0 == "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 ,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_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] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
+ elif blockname not in doc.blocks and hight == "lower" and drehung0 == "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 ,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_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] - hoehe_gefaehlle),dxfattribs={"rotation": 180})
-def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2,am_kreisel, drehung0, drehung1, laenge, hight_position,verbunden_am_einen, blockname):
+def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoehe_gefaehlle, lower_hoehe_gefaehlle, hoehe_gefaehlle,richtung2, drehung0, drehung1, laenge, hight_position, blockname):
#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
+ 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":
if blockname not in doc.blocks and drehung0 == "GUZS" and drehung1 == "GUZS" and hight_position == "higher" :
@@ -903,9 +921,11 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
copy= line.copy()
copy.translate(-x,-y,-hoehe_gefaehlle)
@@ -919,9 +939,11 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
copy= line.copy()
copy.translate(-x,-y,-hoehe_gefaehlle)
@@ -935,9 +957,11 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
copy= line.copy()
copy.translate(-x,-y,-hoehe_gefaehlle)
@@ -945,15 +969,18 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ 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"):
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})
+ line.dxf.layer = "6-SP"
+
copy= line.copy()
copy.translate(-x,-y,-hoehe_gefaehlle)
@@ -961,7 +988,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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]))
+ 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":
block = doc.blocks.new(name=blockname, base_point=(0,0,0))
halbe_laenge = laenge / 2
@@ -970,6 +997,8 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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)
@@ -980,16 +1009,19 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
- 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),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 ,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)
@@ -997,7 +1029,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ 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")):
@@ -1005,9 +1037,13 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
+
+
copy= line.copy()
copy.translate(-x ,-y,-hoehe_gefaehlle)
@@ -1016,7 +1052,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
block_es = "200000146_ES-Element_90_rechts"
import_block(block_es,lib_doc,doc)
- 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] - hoehe_gefaehlle))
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
@@ -1025,6 +1061,8 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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)
@@ -1032,7 +1070,7 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ 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" :
@@ -1040,9 +1078,12 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
+
copy= line.copy()
copy.translate(-x,-y,-hoehe_gefaehlle)
@@ -1062,6 +1103,8 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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)
@@ -1070,8 +1113,8 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ 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":
@@ -1079,9 +1122,12 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
+
copy= line.copy()
copy.translate(-x ,-y,-hoehe_gefaehlle)
@@ -1091,9 +1137,9 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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_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]),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")):
@@ -1101,9 +1147,12 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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})
+ line.dxf.layer = "6-SP"
+
copy= line.copy()
copy.translate(-x ,-y,-hoehe_gefaehlle)
@@ -1113,9 +1162,9 @@ def gefaellegerade_erstellung(x, y, doc, lib_doc, asoffset, esoffset, upper_hoeh
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_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]))
+ block.add_blockref(block_es, (ende[0]-x ,ende[1]-esoffset -y,ende[2] - hoehe_gefaehlle))
def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, gefaellestrecken_nachbarn,config):
"""
@@ -1182,7 +1231,10 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,
def get_layer(doc, lib_doc, blockname):
- src = lib_doc.blocks[blockname]
+ if blockname in lib_doc.blocks:
+ src = lib_doc.blocks[blockname]
+ else:
+ src = doc.blocks[blockname]
try:
used_layer_names = {e.dxf.layer for e in src if hasattr(e.dxf, "layer")}
for layer_name in used_layer_names: