From 1802ef5992c39c5e4eeffd125a9eb6daeb1541aa Mon Sep 17 00:00:00 2001 From: Zhaowenlong Date: Sat, 30 May 2026 17:18:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=98=BE=E7=A4=BA=E5=B8=83=E7=BA=BF?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E7=BD=91=E7=BB=9C=E6=96=AD=E7=82=B9=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Mod/FreeCADExchange/AutoRouting.py | 18 ++++++++++++++- .../freecad_exchange_auto_routing_test.py | 22 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/Mod/FreeCADExchange/AutoRouting.py b/src/Mod/FreeCADExchange/AutoRouting.py index 9437829..5f15cc1 100644 --- a/src/Mod/FreeCADExchange/AutoRouting.py +++ b/src/Mod/FreeCADExchange/AutoRouting.py @@ -1622,6 +1622,19 @@ def _format_distance_mm(value): 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): if not isinstance(item, dict): return "未知端子" @@ -1667,7 +1680,10 @@ def format_routing_path_network_report(diagnostic): sample = possible_breaks[0] carrier = sample.get("carrier", {}) if isinstance(sample.get("carrier", {}), dict) else {} 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 []) if isolated: diff --git a/tests/python/freecad_exchange_auto_routing_test.py b/tests/python/freecad_exchange_auto_routing_test.py index bc77a15..c7c6dde 100644 --- a/tests/python/freecad_exchange_auto_routing_test.py +++ b/tests/python/freecad_exchange_auto_routing_test.py @@ -1033,6 +1033,28 @@ class AutoRoutingTest(unittest.TestCase): self.assertIn("布线路径网络检查发现", 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): _install_fake_freecad() terminal_objects, _wiring_objects, _routing_network, _auto_routing = _reload_modules()