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):
|
||||
ret = list()
|
||||
for p in self.coords:
|
||||
ret.append( (p.x,p.y) )
|
||||
ret.append( (p.x, p.y) )
|
||||
return ret
|
||||
|
||||
|
||||
@dataclass
|
||||
class Error_Connection:
|
||||
name: str
|
||||
coords: Point
|
||||
|
||||
@dataclass
|
||||
class Error_Routing:
|
||||
unterverteiler: str
|
||||
sensoren: List[str]
|
||||
@dataclass
|
||||
class Polylines:
|
||||
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):
|
||||
@@ -73,9 +85,10 @@ def copy_layers_into_new(originaldxf, outpath, plines):
|
||||
|
||||
quelle = ezdxf.readfile(originaldxf)
|
||||
ziel = ezdxf.new('R2018', setup=True)
|
||||
|
||||
|
||||
create_cables(plines, ziel)
|
||||
copy_layers_into_dxf_by_filter(quelle, ziel)
|
||||
create_cables(plines, quelle)
|
||||
|
||||
|
||||
ziel.saveas(out_path)
|
||||
print("done")
|
||||
@@ -134,7 +147,40 @@ def write_excel_from_json(plines:Polylines, outpath:str):
|
||||
|
||||
for rlength in sorted(length_summary):
|
||||
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)
|
||||
|
||||
|
||||
@@ -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"):
|
||||
new_ins = ins.copy()
|
||||
msp_target.add_entity(new_ins)
|
||||
|
||||
'''
|
||||
|
||||
|
||||
# 4. Filter-Layernamen bestimmen
|
||||
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:
|
||||
msp_target.add_entity(entity.copy())
|
||||
|
||||
texts_source = collect_text_entities(msp_source)
|
||||
texts_target = collect_text_entities(msp_target)
|
||||
# texts_source = collect_text_entities(msp_source)
|
||||
# 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"))
|
||||
compare_blocks(dxf_source, dxf_target, used_block_names)
|
||||
# used_block_names = set(insert.dxf.name for insert in dxf_source.modelspace().query("INSERT"))
|
||||
# compare_blocks(dxf_source, dxf_target, used_block_names)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user