Zahlenwerte gerundet, Ausgabe in seperatre .json für Rack, Distributors und Sensoren. Rack json mit Bennung der Racks
This commit is contained in:
+15
-11
@@ -33,7 +33,7 @@ def merge_two_dicts(x, y):
|
|||||||
return z
|
return z
|
||||||
|
|
||||||
def get_input_positions(msp: ezdxf.document.Drawing.modelspace):
|
def get_input_positions(msp: ezdxf.document.Drawing.modelspace):
|
||||||
"""hole alle Positionen der Eingänge
|
"""hole alle Positionen der Eingänge !!Sensor Positionen erst nach Offsett-Addition "Mitte-Mitte"!!
|
||||||
"""
|
"""
|
||||||
allIds = dict()
|
allIds = dict()
|
||||||
SpecialKeys = ["MB", # Separator
|
SpecialKeys = ["MB", # Separator
|
||||||
@@ -71,7 +71,7 @@ def get_input_positions(msp: ezdxf.document.Drawing.modelspace):
|
|||||||
pos_midx = pos.x + breite_marker*0.5
|
pos_midx = pos.x + breite_marker*0.5
|
||||||
pos_midy = pos.y + hoehe_marker*0.5
|
pos_midy = pos.y + hoehe_marker*0.5
|
||||||
|
|
||||||
ld["pos"] = (pos_midx, pos_midy)
|
ld["pos"] = (round(pos_midx, 1), round(pos_midy, 1))
|
||||||
|
|
||||||
# Nur wenn eine ID vorhanden ist, und eine gültige Position existiert
|
# Nur wenn eine ID vorhanden ist, und eine gültige Position existiert
|
||||||
if id and "pos" in ld and isinstance(ld["pos"], tuple) and len(ld["pos"]) == 2:
|
if id and "pos" in ld and isinstance(ld["pos"], tuple) and len(ld["pos"]) == 2:
|
||||||
@@ -83,7 +83,7 @@ def get_input_positions(msp: ezdxf.document.Drawing.modelspace):
|
|||||||
|
|
||||||
|
|
||||||
def get_subdistributor_positions(msp):
|
def get_subdistributor_positions(msp):
|
||||||
"""hole alle Positionen der Unterverteiler
|
"""hole alle Positionen der Unterverteiler !!UV-Positionen bereits "Mitte-Mitte"!!
|
||||||
"""
|
"""
|
||||||
# # Über alle Texte laufen
|
# # Über alle Texte laufen
|
||||||
# for text in msp.query('MTEXT'):
|
# for text in msp.query('MTEXT'):
|
||||||
@@ -106,7 +106,7 @@ def get_subdistributor_positions(msp):
|
|||||||
match = re.search(r"UC\w+", text.dxf.text)
|
match = re.search(r"UC\w+", text.dxf.text)
|
||||||
if match:
|
if match:
|
||||||
nameUC = match.group(0)
|
nameUC = match.group(0)
|
||||||
ret[nameUC] = text.dxf.insert
|
ret[nameUC] = (round(text.dxf.insert[0],1), round(text.dxf.insert[1],1)) #nur x und y Koordinate in Json schreiben
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
@@ -125,17 +125,21 @@ def print_polyline(e):
|
|||||||
print("Diese Polyline ist geschlossen.")
|
print("Diese Polyline ist geschlossen.")
|
||||||
|
|
||||||
def get_rack_positions(msp):
|
def get_rack_positions(msp):
|
||||||
"""hole alle Positionen aller Kabelpritschen
|
"""hole alle Positionen aller Kabelpritschen und nummeriere Racks"""
|
||||||
"""
|
ret = dict()
|
||||||
|
rack_counter = 1 #Zaehler für Rack Nummerierung
|
||||||
|
|
||||||
ret = list()
|
|
||||||
for e in msp.query('LWPOLYLINE[layer=="PRITSCHE_200-60"]'):
|
for e in msp.query('LWPOLYLINE[layer=="PRITSCHE_200-60"]'):
|
||||||
#print_polyline(e)
|
#print_polyline(e)
|
||||||
poly = list()
|
rack_key = f"Rack_{rack_counter}"
|
||||||
|
ret[rack_key] = dict()
|
||||||
|
|
||||||
|
node_counter = 1
|
||||||
for x, y, start_width, end_width, bulge in e.get_points(): # Gibt Tuple (x, y, start_width, end_width, bulge)
|
for x, y, start_width, end_width, bulge in e.get_points(): # Gibt Tuple (x, y, start_width, end_width, bulge)
|
||||||
point = (x,y)
|
node_key = f"Node_{node_counter}"
|
||||||
poly.append(point)
|
ret[rack_key][node_key] = [round(x,1), round(y,1)]
|
||||||
ret.append(poly)
|
node_counter +=1
|
||||||
|
rack_counter +=1
|
||||||
# iterate over all entities in modelspace
|
# iterate over all entities in modelspace
|
||||||
# for e in msp:
|
# for e in msp:
|
||||||
# if e.dxftype() == "LINE":
|
# if e.dxftype() == "LINE":
|
||||||
|
|||||||
Reference in New Issue
Block a user