Code Anpassung. Rack Namen werden nicht mehr überschrieben. Zeichenen des Graphen mit easy korrekt.

This commit is contained in:
2025-06-02 15:16:07 +02:00
parent 99bf7303bc
commit 7658d058d0
3 changed files with 22 additions and 23 deletions
+10 -7
View File
@@ -57,7 +57,7 @@ def new_dxf(plines, out_path):
def modify_original_dxf(plines, originaldxf):
""" adds new layer to original .dxf-file that contains cables
"""
print("adding cables to original .dxf")
print("adding cables to original .dxf ..")
doc = ezdxf.readfile(originaldxf)
create_cables(plines, doc)
@@ -66,13 +66,13 @@ def modify_original_dxf(plines, originaldxf):
print("done")
def copy_layers_into_new(originaldxf, outpath):
def copy_layers_into_new(originaldxf, outpath, plines):
""" creates a new dxf file with a racks, sensors, subdists from original file including cable paths
"""
print("copying layers from original .dxf into new .dxf")
print("copying layers from original .dxf into new .dxf ..")
quelle = ezdxf.readfile(originaldxf)
ziel = ezdxf.readfile(outpath)
ziel = ezdxf.new('R2018', setup=True)
copy_layers_into_dxf_by_filter(quelle, ziel)
create_cables(plines, quelle)
@@ -272,6 +272,7 @@ def copy_layers_into_dxf_by_filter(dxf_source: ezdxf.document.Drawing, dxf_targe
if style.dxf.name not in dxf_target.styles:
dxf_target.styles.new(name=style.dxf.name)
'''
# 2. alle Blockdefinitionen kopieren die benötigt werden
used_blocks = {ins.dxf.name for ins in msp_source.query("INSERT")}
for name in used_blocks:
@@ -284,12 +285,14 @@ def copy_layers_into_dxf_by_filter(dxf_source: ezdxf.document.Drawing, dxf_targe
# **ALLE** Entities im Block kopieren
for ent in src_block:
new_block.add_entity(ent.copy())
# 3. Jetzt die INSERTs in den Modelspace kopieren
for ins in msp_source.query("INSERT"):
new_ins = ins.copy()
msp_target.add_entity(new_ins)
'''
# 4. Filter-Layernamen bestimmen
for layername in layernames:
@@ -372,7 +375,7 @@ if __name__ == '__main__':
out_path = os.path.join(work_dir, args.copy_layer)
res_pos = new_dxf(plines, out_path)
copy_layers_into_new(origin_path, out_path)
copy_layers_into_new(origin_path, out_path, plines)
if args.new:
# erzeuge dxf Datei nur mit Kabeln
+11 -15
View File
@@ -118,14 +118,8 @@ class RackIDs():
self._rack_tree = None
def add_rack(self, beg:Point, end:Point, name:str):
if beg in self._point2rack:
self._point2rack[beg].append(name)
else:
self._point2rack[beg] = [name]
if end in self._point2rack:
self._point2rack[end].append(name)
else:
self._point2rack[end] = [name]
self.add_point_to_rack(beg, name)
self.add_point_to_rack(end, name)
self._rack2begend[name] = (beg, end) # Anfangs und Endpunkte zu Rack Namen merken
@@ -155,12 +149,12 @@ class RackIDs():
return list(self._rack2begend.keys())
def add_point_to_rack(self, point:Point, name:str):
if point in self._point2rack:
self._point2rack[point].append(name)
else:
self._point2rack[point] = [name]
''' Fügt einen Punkt zu genanntem Rack hinzu. (z.B Zwischenpunkt in der Mitte)'''
if point not in self._point2rack:
self._point2rack[point] = set()
self._point2rack[point].add(name)
def get_racks_from_point(self, point:Point) -> list[str]:
def get_racks_from_point(self, point:Point) -> set[str]:
return self._point2rack[point]
def get_points_from_rack(self, name:str) -> list[Point]:
@@ -196,7 +190,6 @@ class RackIDs():
rnames = self._rack_map
allracks = self._rack_lines
# Erzeugung von BoundingBox
for i, l1 in enumerate(allracks):
bbox = box(*l1.bounds).buffer(self._tol_snap)
@@ -212,13 +205,14 @@ class RackIDs():
if inter.geom_type == "Point":
self.add_point_to_rack(inter, rnames[l1])
self.add_point_to_rack(inter, rnames[l2])
continue
# Beinahe Schnittpunkte -> Snapping
for pt in [Point(l2.coords[0]), Point(l2.coords[-1])]:
if l1.distance(pt) <= self._tol_snap:
snap_point = l1.interpolate(l1.project(pt))
self.add_point_to_rack(snap_point, rnames[l1])
connrackname = f"c-{rnames[l2]}"
connrackname = f"c-{rnames[l2]}-{rnames[l1]}"
self.add_rack(pt, snap_point, connrackname)
def rack_is_horizontal(self, name):
@@ -558,6 +552,8 @@ class Anlage():
color = "orange"
tname = rname.split("-")[2]
weight = self.get_tunnel_length(tname)
elif re.match("c-.*", rname):
color = "green"
else:
color = "black"
+1 -1
View File
@@ -57,7 +57,7 @@ def create_plant(racks:dict, sensors:dict, distributors:dict, mapping:dict, tunn
tol_snap = config.getfloat("Racks", "SnapTolerances")
tol_connect = config.getfloat("Sensoren", "ConnectionTolerances")
G = nx.Graph()
an = Anlage(tol_snap=tol_snap, tol_connect=tol_connect)
# Füge racks aus Daten hinzu
an.set_racks(racks)