ANpassung der Ausgabe todraw.json, sodass Fehler in Excel -Ausgabe besser ausgegeben werden können. 2 neue Worksheets in Excel Ausgabe angefügt(Auflistung von Fehlgeschlagener Anbindung + Auflistung von Routingfelern mit Grund
This commit is contained in:
+56
-10
@@ -29,12 +29,24 @@ class Polyline:
|
|||||||
def to_tuple(self):
|
def to_tuple(self):
|
||||||
ret = list()
|
ret = list()
|
||||||
for p in self.coords:
|
for p in self.coords:
|
||||||
ret.append( (p.x,p.y) )
|
ret.append( (p.x, p.y) )
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Error_Connection:
|
||||||
|
name: str
|
||||||
|
coords: Point
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Error_Routing:
|
||||||
|
unterverteiler: str
|
||||||
|
sensoren: List[str]
|
||||||
@dataclass
|
@dataclass
|
||||||
class Polylines:
|
class Polylines:
|
||||||
kabel: List[Polyline]
|
kabel: List[Polyline]
|
||||||
|
errors_routing: List[Error_Routing]
|
||||||
|
errors_sensors: List[Error_Connection]
|
||||||
|
errors_dists: List[Error_Connection]
|
||||||
|
|
||||||
|
|
||||||
def add_polyline(msp, points:Polyline, dxf_attribs):
|
def add_polyline(msp, points:Polyline, dxf_attribs):
|
||||||
@@ -73,9 +85,10 @@ def copy_layers_into_new(originaldxf, outpath, plines):
|
|||||||
|
|
||||||
quelle = ezdxf.readfile(originaldxf)
|
quelle = ezdxf.readfile(originaldxf)
|
||||||
ziel = ezdxf.new('R2018', setup=True)
|
ziel = ezdxf.new('R2018', setup=True)
|
||||||
|
|
||||||
|
create_cables(plines, ziel)
|
||||||
copy_layers_into_dxf_by_filter(quelle, ziel)
|
copy_layers_into_dxf_by_filter(quelle, ziel)
|
||||||
create_cables(plines, quelle)
|
|
||||||
|
|
||||||
ziel.saveas(out_path)
|
ziel.saveas(out_path)
|
||||||
print("done")
|
print("done")
|
||||||
@@ -134,7 +147,40 @@ def write_excel_from_json(plines:Polylines, outpath:str):
|
|||||||
|
|
||||||
for rlength in sorted(length_summary):
|
for rlength in sorted(length_summary):
|
||||||
ws2.append([int(rlength), length_summary[rlength]])
|
ws2.append([int(rlength), length_summary[rlength]])
|
||||||
|
|
||||||
|
# Worksheet 3 - Nicht an Racks gekoppeltes Equipment
|
||||||
|
ws3 = wb.create_sheet("Equipment nicht angebunden")
|
||||||
|
ws3.append(["Typ", "Name", "x", "y"])
|
||||||
|
for error in plines.errors_sensors:
|
||||||
|
ws3.append(["Sensor / Aktor", error.name, error.coords.x, error.coords.y])
|
||||||
|
|
||||||
|
for error in plines.errors_dists:
|
||||||
|
ws3.append(["Unterverteiler", error.name, error.coords.x, error.coords.y])
|
||||||
|
|
||||||
|
# Worksheet 4 - Fehlgeschlagenes Routing
|
||||||
|
ws4 = wb.create_sheet("Routingfehler")
|
||||||
|
ws4.append(["Unterverteiler", "Sensor- / Aktorname", "Grund"])
|
||||||
|
|
||||||
|
nicht_angebunden = set(e.name for e in plines.errors_sensors + plines.errors_dists)
|
||||||
|
|
||||||
|
for routing_error in plines.errors_routing:
|
||||||
|
uv = routing_error.unterverteiler
|
||||||
|
uv_nicht_angebunden = uv in nicht_angebunden
|
||||||
|
for sensor in routing_error.sensoren:
|
||||||
|
sensor_nicht_angebunden = sensor in nicht_angebunden
|
||||||
|
|
||||||
|
if sensor_nicht_angebunden and uv_nicht_angebunden:
|
||||||
|
grund = "Sensor und Unterverteiler nicht angebunden"
|
||||||
|
elif sensor_nicht_angebunden:
|
||||||
|
grund = "Sensor / Aktor nicht angebunden"
|
||||||
|
elif uv_nicht_angebunden:
|
||||||
|
grund = "Unterverteiler nicht angebunden"
|
||||||
|
else:
|
||||||
|
grund = "Fehlgeschlagenes Routing trotz Anbindung"
|
||||||
|
|
||||||
|
ws4.append([uv, sensor, grund])
|
||||||
|
|
||||||
|
|
||||||
wb.save(outpath)
|
wb.save(outpath)
|
||||||
|
|
||||||
|
|
||||||
@@ -291,8 +337,8 @@ def copy_layers_into_dxf_by_filter(dxf_source: ezdxf.document.Drawing, dxf_targe
|
|||||||
for ins in msp_source.query("INSERT"):
|
for ins in msp_source.query("INSERT"):
|
||||||
new_ins = ins.copy()
|
new_ins = ins.copy()
|
||||||
msp_target.add_entity(new_ins)
|
msp_target.add_entity(new_ins)
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
# 4. Filter-Layernamen bestimmen
|
# 4. Filter-Layernamen bestimmen
|
||||||
for layername in layernames:
|
for layername in layernames:
|
||||||
@@ -313,13 +359,13 @@ def copy_layers_into_dxf_by_filter(dxf_source: ezdxf.document.Drawing, dxf_targe
|
|||||||
for entity in entities:
|
for entity in entities:
|
||||||
msp_target.add_entity(entity.copy())
|
msp_target.add_entity(entity.copy())
|
||||||
|
|
||||||
texts_source = collect_text_entities(msp_source)
|
# texts_source = collect_text_entities(msp_source)
|
||||||
texts_target = collect_text_entities(msp_target)
|
# texts_target = collect_text_entities(msp_target)
|
||||||
|
|
||||||
compare_texts(texts_source, texts_target)
|
# compare_texts(texts_source, texts_target)
|
||||||
|
|
||||||
used_block_names = set(insert.dxf.name for insert in dxf_source.modelspace().query("INSERT"))
|
# used_block_names = set(insert.dxf.name for insert in dxf_source.modelspace().query("INSERT"))
|
||||||
compare_blocks(dxf_source, dxf_target, used_block_names)
|
# compare_blocks(dxf_source, dxf_target, used_block_names)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
+13
-4
@@ -483,13 +483,13 @@ class Anlage():
|
|||||||
Eingabe: Dict des Equipments ({'Name': Point}), Dict der Aufpunkte von Sensoren o. Dists (zu Beginn leer)
|
Eingabe: Dict des Equipments ({'Name': Point}), Dict der Aufpunkte von Sensoren o. Dists (zu Beginn leer)
|
||||||
Rückgabe: Liste der nicht mit Racks verbundenen Geräte (z.B. Entfernung zu groß)
|
Rückgabe: Liste der nicht mit Racks verbundenen Geräte (z.B. Entfernung zu groß)
|
||||||
'''
|
'''
|
||||||
errors = []
|
errors = list()
|
||||||
for name, pos in equipment.items():
|
for name, pos in equipment.items():
|
||||||
try:
|
try:
|
||||||
onpoint, rackname = self.find_nearest_rack_from_point_STR_bbox(self._tol_connect, pos)
|
onpoint, rackname = self.find_nearest_rack_from_point_STR_bbox(self._tol_connect, pos)
|
||||||
onpoints[name] = (onpoint, rackname)
|
onpoints[name] = (onpoint, rackname)
|
||||||
except LookupError:
|
except LookupError:
|
||||||
errors.append((name, (pos.x, pos.y))) # Name des fehlgeschlagenenen und Position als Koodinaten zurückgeben
|
errors.append({"name": name, "coords": {"x":pos.x, "y":pos.y}}) # Name des fehlgeschlagenenen und Position als Koodinaten zurückgeben
|
||||||
continue
|
continue
|
||||||
self.add_point_to_rack(onpoint, rackname)
|
self.add_point_to_rack(onpoint, rackname)
|
||||||
|
|
||||||
@@ -586,12 +586,15 @@ class Anlage():
|
|||||||
def create_cable_paths(self, G) -> dict:
|
def create_cable_paths(self, G) -> dict:
|
||||||
pfade = dict()
|
pfade = dict()
|
||||||
pfade["kabel"] = list()
|
pfade["kabel"] = list()
|
||||||
pfade["errors_routing"] = list() # Fehler Liste für fehlgeschlagene Kabelverbindungen
|
pfade["errors_routing"] = dict()
|
||||||
|
routing_errors = dict() # Fehler Liste für fehlgeschlagene Kabelverbindungen
|
||||||
for sname, dname in self._sensor2dist.items():
|
for sname, dname in self._sensor2dist.items():
|
||||||
try:
|
try:
|
||||||
pfad_nodes, pfad_length = self.create_cable_path(G, sname, dname)
|
pfad_nodes, pfad_length = self.create_cable_path(G, sname, dname)
|
||||||
except:
|
except:
|
||||||
pfade["errors_routing"].append((sname, dname))
|
if dname not in routing_errors:
|
||||||
|
routing_errors[dname] = list()
|
||||||
|
routing_errors[dname].append(sname)
|
||||||
continue
|
continue
|
||||||
pfad_coords = self._nodeids.get_points(pfad_nodes)
|
pfad_coords = self._nodeids.get_points(pfad_nodes)
|
||||||
|
|
||||||
@@ -609,6 +612,12 @@ class Anlage():
|
|||||||
|
|
||||||
pfade["kabel"].append(ld)
|
pfade["kabel"].append(ld)
|
||||||
|
|
||||||
|
|
||||||
|
lOfDistErrors = list() # sammeln wo keine Verbindung zwischen Dist und Senor möglich war
|
||||||
|
for dname,lofSensornamen in routing_errors.items():
|
||||||
|
lOfDistErrors.append({"unterverteiler":dname, "sensoren":lofSensornamen})
|
||||||
|
pfade["errors_routing"] = lOfDistErrors
|
||||||
|
|
||||||
return pfade
|
return pfade
|
||||||
|
|
||||||
def show_node_ids(self):
|
def show_node_ids(self):
|
||||||
|
|||||||
+1
-1
@@ -94,7 +94,7 @@ def create_plant(racks:dict, sensors:dict, distributors:dict, mapping:dict, tunn
|
|||||||
paths['errors_sensors'] = errors_sensors # Sensoren die nicht zu Racks verbunden werden konnten
|
paths['errors_sensors'] = errors_sensors # Sensoren die nicht zu Racks verbunden werden konnten
|
||||||
paths['errors_dists'] = errors_dists # Distributoren, die nicht zu Racks verbunden werden konnten
|
paths['errors_dists'] = errors_dists # Distributoren, die nicht zu Racks verbunden werden konnten
|
||||||
paths['errors_tunnels'] = errors_tunnels # Tunnel, die nicht zu Racks verbunden werden konnten
|
paths['errors_tunnels'] = errors_tunnels # Tunnel, die nicht zu Racks verbunden werden konnten
|
||||||
# paths['errors_routing'] # Knoten des Graphen, die nicht verbunden werden konnten (Ausgabe wird in create_vable_paths() erstellt)
|
# paths['errors_routing'] # Knoten des Graphen, die nicht verbunden werden konnten (Ausgabe wird in create_cable_paths() erstellt)
|
||||||
|
|
||||||
return paths
|
return paths
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user