Code Anpassung. Rack Namen werden nicht mehr überschrieben. Zeichenen des Graphen mit easy korrekt.
This commit is contained in:
+10
-7
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user