feat: 摘要显示线槽桥接数量

dev
Zhaowenlong 3 weeks ago
parent cbd898f2ec
commit 2d7ad273ef

@ -87,7 +87,7 @@ terminal_uuid
相邻线槽端点允许存在小间隙。默认情况下,两个 `WireDuct` 端点距离不超过 5 mm 时会被视为相邻并自动桥接;自动布线选项 `adjoining_duct_tolerance` 可以按需要调大或调小,用于适配不同建模精度和线槽端部留缝。
FreeCAD 的 `3D 布线连接` 面板提供“线槽桥接容差 mm”数值框手动测试时可直接调整这个选项生成布线路径网络、检查布线路径网络和生成布线连接都会读取当前面板值。检查通过时,如果存在相邻线槽自动桥接,报告会显示自动桥接段数,便于确认当前容差是否生效。
FreeCAD 的 `3D 布线连接` 面板提供“线槽桥接容差 mm”数值框手动测试时可直接调整这个选项生成布线路径网络、检查布线路径网络和生成布线连接都会读取当前面板值。面板摘要和检查报告按当前容差显示自动桥接段数,便于确认当前容差是否生效。
同一面板还提供“端子接入最大距离 mm”和“端子出线长度 mm”。前者用于控制端子距离最近路由网络超过多少毫米时不再生成 `TerminalAccess`,避免设备还没摆放好时生成超长悬空接入线;后者用于控制端子沿 LCS 出线方向先走出的短线长度,避免导线从设备壳体内部或端子原点直接折返。

@ -107,7 +107,16 @@ class AutoRoutingController:
payload_wire_count = 0
if isinstance(payload, dict) and isinstance(payload.get("wires"), list):
payload_wire_count = len(payload.get("wires") or [])
network = RoutingNetwork.network_summary(doc)
network = RoutingNetwork.network_summary(
doc,
adjoining_duct_tolerance=float(
self.routing_options().get(
"adjoining_duct_tolerance",
RoutingNetwork.DEFAULT_ADJOINING_DUCT_TOLERANCE,
)
or 0.0
),
)
kinds = network.get("kinds", {}) if isinstance(network.get("kinds", {}), dict) else {}
kind_text = ""
if kinds:
@ -115,7 +124,10 @@ class AutoRoutingController:
"{0}={1}".format(key, value)
for key, value in sorted(kinds.items())
)
return "端子:{0};导线任务:{1}QET导线{2};路由网络:{3} 条 carrier / {4} 段 / {5} 节点{6}".format(
bridge_text = ""
if int(network.get("bridged_segments", 0) or 0) > 0:
bridge_text = ";桥接:{0}".format(network.get("bridged_segments", 0))
return "端子:{0};导线任务:{1}QET导线{2};路由网络:{3} 条 carrier / {4} 段 / {5} 节点{6}{7}".format(
terminal_count,
task_count,
payload_wire_count,
@ -123,6 +135,7 @@ class AutoRoutingController:
network.get("segments", 0),
network.get("nodes", 0),
kind_text,
bridge_text,
)
def generate_routing_paths(self):

@ -1681,6 +1681,33 @@ class AutoRoutingTest(unittest.TestCase):
self.assertEqual(1, report["routed"])
self.assertEqual(1, report["routes"][0]["network"]["bridged_segments"])
def test_auto_routing_controller_summary_uses_adjoining_duct_tolerance(self):
_install_fake_freecad()
terminal_objects, _wiring_objects, routing_network, _auto_routing = _reload_modules()
auto_routing_panel = importlib.import_module("AutoRoutingPanel")
app = sys.modules["FreeCAD"]
doc = FakeDocument()
app.ActiveDocument = doc
terminal_objects.ensure_root_group(doc, "project-1")
routing_network.create_route_carrier(
doc,
[app.Vector(0, 0, 20), app.Vector(44, 0, 20)],
project_uuid="project-1",
kind="WireDuct",
)
routing_network.create_route_carrier(
doc,
[app.Vector(56, 0, 20), app.Vector(100, 0, 20)],
project_uuid="project-1",
kind="WireDuct",
)
summary = auto_routing_panel.AutoRoutingController(
options={"adjoining_duct_tolerance": 15.0}
).summary()
self.assertIn("桥接1", summary)
def test_eplan_connection_route_rejects_far_network_entry_to_avoid_huge_render_bbox(self):
_install_fake_freecad()
terminal_objects, _wiring_objects, routing_network, auto_routing = _reload_modules()

Loading…
Cancel
Save