feat: 显示布线路径网络断点位置

dev
Zhaowenlong 3 weeks ago
parent af660af339
commit 1802ef5992

@ -1622,6 +1622,19 @@ def _format_distance_mm(value):
return "未知距离" return "未知距离"
def _format_point_text(point):
if not isinstance(point, dict):
return "未知位置"
try:
return "({0:.1f}, {1:.1f}, {2:.1f})".format(
float(point.get("x", 0.0)),
float(point.get("y", 0.0)),
float(point.get("z", 0.0)),
)
except Exception:
return "未知位置"
def _diagnostic_terminal_text(item): def _diagnostic_terminal_text(item):
if not isinstance(item, dict): if not isinstance(item, dict):
return "未知端子" return "未知端子"
@ -1667,7 +1680,10 @@ def format_routing_path_network_report(diagnostic):
sample = possible_breaks[0] sample = possible_breaks[0]
carrier = sample.get("carrier", {}) if isinstance(sample.get("carrier", {}), dict) else {} carrier = sample.get("carrier", {}) if isinstance(sample.get("carrier", {}), dict) else {}
carrier_text = carrier.get("label") or carrier.get("name") or "未知线槽" carrier_text = carrier.get("label") or carrier.get("name") or "未知线槽"
message += "\n线槽端点疑似断开:{0}。请补齐相邻线槽、开口或辅助路径。".format(carrier_text) message += "\n线槽端点疑似断开:{0} @ {1}。请补齐相邻线槽、开口或辅助路径。".format(
carrier_text,
_format_point_text(sample.get("point")),
)
isolated = _dict_items(diagnostic.get("isolated_components", []) or []) isolated = _dict_items(diagnostic.get("isolated_components", []) or [])
if isolated: if isolated:

@ -1033,6 +1033,28 @@ class AutoRoutingTest(unittest.TestCase):
self.assertIn("布线路径网络检查发现", message) self.assertIn("布线路径网络检查发现", message)
self.assertIn("首个问题external_issue", message) self.assertIn("首个问题external_issue", message)
def test_format_routing_path_network_report_calls_out_wire_duct_break_point(self):
_install_fake_freecad()
terminal_objects, _wiring_objects, routing_network, auto_routing = _reload_modules()
app = sys.modules["FreeCAD"]
doc = FakeDocument()
terminal_objects.ensure_root_group(doc, "project-1")
routing_network.create_route_carrier(
doc,
[app.Vector(0, 0, 20), app.Vector(100, 0, 20)],
label="线槽A",
project_uuid="project-1",
kind="WireDuct",
)
result = auto_routing.check_eplan_routing_path_network(doc, project_uuid="project-1")
message = auto_routing.format_routing_path_network_report(result["diagnostic"])
self.assertIn("线槽端点疑似断开", message)
self.assertIn("线槽A", message)
self.assertIn("(0.0, 0.0, 20.0)", message)
self.assertIn("补齐相邻线槽", message)
def test_generate_routing_path_network_skips_far_terminal_access_to_protect_view_bbox(self): def test_generate_routing_path_network_skips_far_terminal_access_to_protect_view_bbox(self):
_install_fake_freecad() _install_fake_freecad()
terminal_objects, _wiring_objects, _routing_network, _auto_routing = _reload_modules() terminal_objects, _wiring_objects, _routing_network, _auto_routing = _reload_modules()

Loading…
Cancel
Save