Toter Code und Funktionen entfernt
This commit is contained in:
+16
-84
@@ -6,16 +6,12 @@ import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import ezdxf
|
||||
from ezdxf.addons import iterdxf
|
||||
from shapely.geometry import Point
|
||||
from ezdxf.lldxf.const import DXFStructureError
|
||||
|
||||
from error_collector import ErrorCollector, write_json_file
|
||||
from error_collector import ErrorCollector
|
||||
from utils import (
|
||||
check_environment_var,
|
||||
check_file_in_work,
|
||||
dxf_is_binary,
|
||||
get_dxf_file,
|
||||
merge_two_dicts,
|
||||
to_json,
|
||||
@@ -551,10 +547,10 @@ def get_tunnel_positions_from_symbols(all_inserts: list, all_positions: list, er
|
||||
def get_subdistributor_positions_from_entities(entities, dist2sensors: dict) -> dict:
|
||||
"""Ermittelt Unterverteiler-Positionen aus einer beliebigen Entity-Iterable.
|
||||
|
||||
Erwartet eine Iterable von DXF-Entities (z. B. aus `msp.query("MTEXT")` oder
|
||||
`iterdxf.modelspace(dxf_path)`) und filtert nach den in der Config erlaubten
|
||||
Layern. Es werden beide bisher verwendeten Suchmuster in der MTEXT-Zeile
|
||||
unterstützt ("-<distname>" und "+<distname>").
|
||||
Erwartet eine Iterable von DXF-Entities (z. B. aus `msp.query("MTEXT")`)
|
||||
und filtert nach den in der Config erlaubten Layern. Es werden beide bisher
|
||||
verwendeten Suchmuster in der MTEXT-Zeile unterstützt ("-<distname>" und
|
||||
"+<distname>").
|
||||
"""
|
||||
ret = {}
|
||||
all_distributors = dist2sensors.keys()
|
||||
@@ -578,10 +574,10 @@ def get_subdistributor_positions_from_entities(entities, dist2sensors: dict) ->
|
||||
def get_tunnel_positions_from_entities(entities) -> dict:
|
||||
"""Ermittelt Tunnel-Ein/Ausgangs-Positionen aus einer beliebigen Entity-Iterable.
|
||||
|
||||
Erwartet eine Iterable von DXF-Entities (z. B. aus `msp.query("MTEXT")` oder
|
||||
`iterdxf.modelspace(dxf_path)`) und filtert nach den in der Config erlaubten
|
||||
Layern. Erkennt Tunnel anhand des Musters "TUNNEL<nr>-<laenge>" und sammelt
|
||||
pro Tunnelname die gefundenen Positionen sowie die Länge.
|
||||
Erwartet eine Iterable von DXF-Entities (z. B. aus `msp.query("MTEXT")`)
|
||||
und filtert nach den in der Config erlaubten Layern. Erkennt Tunnel anhand
|
||||
des Musters "TUNNEL<nr>-<laenge>" und sammelt pro Tunnelname die gefundenen
|
||||
Positionen sowie die Länge.
|
||||
"""
|
||||
all_tunnels = dict()
|
||||
tunnel_length = dict()
|
||||
@@ -614,17 +610,6 @@ def get_tunnel_positions_from_entities(entities) -> dict:
|
||||
all_tunnels['length'] = tunnel_length
|
||||
return all_tunnels
|
||||
|
||||
# helper function
|
||||
def print_line(e) -> None:
|
||||
print(f"LINE on layer: {e.dxf.layer}\n")
|
||||
print(f"points: {repr(e.dxf)}\n")
|
||||
|
||||
def print_polyline(e) -> None:
|
||||
print(f"POLYLINE on layer: {e.dxf.layer}\n")
|
||||
for x, y, start_width, end_width, bulge in e.get_points():
|
||||
print(f" Punkt: ({x}, {y}), Startbreite: ({start_width}, Endbreite: {end_width})")
|
||||
if e.is_closed:
|
||||
print("Diese Polyline ist geschlossen.")
|
||||
|
||||
def get_rack_positions(msp) -> dict:
|
||||
"""Hole alle Positionen aller Kabelpritschen und nummeriere Racks."""
|
||||
@@ -647,30 +632,6 @@ def get_rack_positions(msp) -> dict:
|
||||
|
||||
return ret
|
||||
|
||||
def get_rack_positions_iter(dxf_path) -> dict:
|
||||
"""Hole alle Positionen aller Kabelpritschen (Racks) mithilfe von iterdxf."""
|
||||
ret = dict()
|
||||
rack_counter = 1
|
||||
all_layers = config.items('GetPos-Layer_Racks')
|
||||
|
||||
for entity in iterdxf.modelspace(dxf_path):
|
||||
layer = entity.dxf.layer
|
||||
|
||||
if not any(layer == cfg_layer for cfg_layer, _ in all_layers):
|
||||
continue
|
||||
|
||||
rack_key = f"Rack_{rack_counter}"
|
||||
|
||||
if entity.dxftype() == "LWPOLYLINE":
|
||||
handle_lwpolyline(entity, rack_key, ret)
|
||||
elif entity.dxftype() == "POLYLINE":
|
||||
handle_polyline(entity, rack_key, ret)
|
||||
else:
|
||||
continue
|
||||
|
||||
rack_counter += 1
|
||||
|
||||
return ret
|
||||
|
||||
def handle_lwpolyline(entity, rack_key: str, ret: dict) -> None:
|
||||
"""Verarbeitet eine 2D LWPOLYLINE mit globalem Z-Wert (elevation)."""
|
||||
@@ -689,15 +650,6 @@ def handle_polyline(entity, rack_key: str, ret: dict) -> None:
|
||||
z = vertex.dxf.location.z
|
||||
ret[rack_key].append([round(x, 1), round(y, 1), round(z, 1)])
|
||||
|
||||
def scan(dxf_source) -> dict:
|
||||
layer_names_inside = list(dxf_source.layers.names())
|
||||
alle_block_defs = set(dxf_source.blocks.block_names())
|
||||
used_block_names = set(insert.dxf.name for insert in dxf_source.modelspace().query("INSERT"))
|
||||
ret = dict()
|
||||
ret['all_layers'] = layer_names_inside
|
||||
ret['used_blocks'] = used_block_names
|
||||
ret['all_blocks'] = alle_block_defs
|
||||
return ret
|
||||
|
||||
def check_rack_z_coordinates(res_racks: dict, error_collector, config) -> None:
|
||||
"""
|
||||
@@ -828,17 +780,10 @@ if __name__ == '__main__':
|
||||
parser.print_help()
|
||||
exit()
|
||||
|
||||
if dxf_is_binary(dxf_path): # Wenn dxf eine binary ist, dann komplett parsen und modelspace anlegen
|
||||
print("Given .dxf-file is binary dxf. Proceeding to read file. Watch RAM-usage.")
|
||||
doc = get_dxf_file(dxf_path)
|
||||
msp = doc.modelspace()
|
||||
use_iter = False
|
||||
else:
|
||||
print("Given .dxf-file is ASCII-dxf. Proceeding to use iterative functions. Process may take longer.")
|
||||
use_iter = True
|
||||
doc = get_dxf_file(dxf_path)
|
||||
msp = doc.modelspace()
|
||||
|
||||
res_sens = dict()
|
||||
res_cables = dict()
|
||||
res_dist = dict()
|
||||
res_rac = dict()
|
||||
res_mappings = dict()
|
||||
@@ -870,16 +815,12 @@ if __name__ == '__main__':
|
||||
if args.sensors:
|
||||
# Sensoren auslesen aus den Symbolen
|
||||
|
||||
if use_iter:
|
||||
all_inserts, all_positions = attribs_to_dicts(iterdxf.modelspace(dxf_path))
|
||||
else:
|
||||
all_inserts, all_positions = attribs_to_dicts(msp)
|
||||
all_inserts, all_positions = attribs_to_dicts(msp)
|
||||
res_sens, res_schaltschrank_elemente = extract_input_positions(all_inserts, all_positions, error_collector)
|
||||
|
||||
output_results['sensors'] = res_sens
|
||||
output_results['schaltschrank_elemente'] = res_schaltschrank_elemente
|
||||
#output_results['cables'] = res_cables
|
||||
|
||||
|
||||
if args.console:
|
||||
print(to_json(res_sens))
|
||||
|
||||
@@ -893,10 +834,7 @@ if __name__ == '__main__':
|
||||
print(to_json(res_mappings))
|
||||
|
||||
# Distributoren auslesen (generisch über Entities)
|
||||
if use_iter:
|
||||
entities = iterdxf.modelspace(dxf_path)
|
||||
else:
|
||||
entities = msp.query('MTEXT')
|
||||
entities = msp.query('MTEXT')
|
||||
# die Infos aus den Texten (alter Stil)
|
||||
res_dist = get_subdistributor_positions_from_entities(entities, res_mappings)
|
||||
# die Infos aus den Blöcken
|
||||
@@ -907,10 +845,7 @@ if __name__ == '__main__':
|
||||
print(to_json(res_dist))
|
||||
|
||||
# Tunnel auslesen (generisch über Entities)
|
||||
if use_iter:
|
||||
t_entities = iterdxf.modelspace(dxf_path)
|
||||
else:
|
||||
t_entities = msp.query('MTEXT')
|
||||
t_entities = msp.query('MTEXT')
|
||||
# die Infos aus den Texten (alter Stil)
|
||||
res_tunnel = get_tunnel_positions_from_entities(t_entities)
|
||||
# die Infos aus den Blöcken (neuer Stil)
|
||||
@@ -921,10 +856,7 @@ if __name__ == '__main__':
|
||||
print(to_json(res_tunnel))
|
||||
|
||||
if args.rack:
|
||||
if use_iter:
|
||||
res_rac = get_rack_positions_iter(dxf_path)
|
||||
else:
|
||||
res_rac = get_rack_positions(msp)
|
||||
res_rac = get_rack_positions(msp)
|
||||
|
||||
output_results['racks'] = res_rac
|
||||
|
||||
|
||||
Reference in New Issue
Block a user