feat: 同步支撑面布线网格数量

dev
Zhaowenlong 3 weeks ago
parent bb7cc7daf2
commit 57fd53dec1

@ -1831,8 +1831,30 @@ def create_surface_carriers_from_document(
kind=ROUTE_CARRIER_KIND_ROUTING_RANGE, kind=ROUTE_CARRIER_KIND_ROUTING_RANGE,
): ):
updated.append(carrier) updated.append(carrier)
source_created = []
label = getattr(source, "Label", "") or getattr(source, "Name", "") or "Support Surface"
for index, points in enumerate(grids[len(live_carriers):], start=len(live_carriers) + 1):
if len(points) < 2:
continue
carrier = create_route_carrier(
doc,
points,
label="QET Auto Support Surface Route {0} {1}".format(label, index),
project_uuid=project_uuid,
kind=ROUTE_CARRIER_KIND_ROUTING_RANGE,
)
source_created.append(carrier)
created.append(carrier)
for stale_carrier in live_carriers[len(grids):]:
_detach_from_groups(doc, stale_carrier)
try:
if doc.getObject(getattr(stale_carrier, "Name", "")) is not None:
doc.removeObject(stale_carrier.Name)
except Exception:
pass
current_carriers = updated + source_created
if updated: if updated:
_mark_support_surface_source(source, updated) _mark_support_surface_source(source, current_carriers)
try: try:
doc.recompute() doc.recompute()
except Exception: except Exception:

@ -889,6 +889,82 @@ class AutoRoutingTest(unittest.TestCase):
self.assertEqual(20.0, min(x_values)) self.assertEqual(20.0, min(x_values))
self.assertEqual(140.0, max(x_values)) self.assertEqual(140.0, max(x_values))
def test_auto_detect_support_surface_adds_missing_routing_range_lanes_after_resize(self):
_install_fake_freecad()
terminal_objects, _wiring_objects, routing_network, _auto_routing = _reload_modules()
doc = FakeDocument()
terminal_objects.ensure_root_group(doc, "project-1")
panel = doc.addObject("Part::Feature", "MountingPlateA")
panel.Label = "安装板A"
panel.Shape = FakeShape(FakeBoundBox(0, 120, 0, 5, 0, 100))
created = routing_network.create_surface_carriers_from_document(
doc,
project_uuid="project-1",
spacing=60.0,
offset=5.0,
margin=0.0,
)
panel.Shape = FakeShape(FakeBoundBox(0, 180, 0, 5, 0, 120))
created_again = routing_network.create_surface_carriers_from_document(
doc,
project_uuid="project-1",
spacing=60.0,
offset=5.0,
margin=0.0,
)
carriers = [
carrier
for carrier in routing_network.collect_route_carriers(doc)
if getattr(carrier, "QetRouteCarrierKind", "") == "RoutingRange"
]
x_values = [point.x for carrier in carriers for point in carrier.Points]
z_values = [point.z for carrier in carriers for point in carrier.Points]
self.assertEqual(6, len(created))
self.assertEqual(1, len(created_again))
self.assertEqual(7, len(carriers))
self.assertEqual(180.0, max(x_values))
self.assertEqual(120.0, max(z_values))
def test_auto_detect_support_surface_removes_stale_routing_range_lanes_after_resize(self):
_install_fake_freecad()
terminal_objects, _wiring_objects, routing_network, _auto_routing = _reload_modules()
doc = FakeDocument()
terminal_objects.ensure_root_group(doc, "project-1")
panel = doc.addObject("Part::Feature", "MountingPlateA")
panel.Label = "安装板A"
panel.Shape = FakeShape(FakeBoundBox(0, 120, 0, 5, 0, 100))
created = routing_network.create_surface_carriers_from_document(
doc,
project_uuid="project-1",
spacing=60.0,
offset=5.0,
margin=0.0,
)
panel.Shape = FakeShape(FakeBoundBox(0, 60, 0, 5, 0, 60))
created_again = routing_network.create_surface_carriers_from_document(
doc,
project_uuid="project-1",
spacing=60.0,
offset=5.0,
margin=0.0,
)
carriers = [
carrier
for carrier in routing_network.collect_route_carriers(doc)
if getattr(carrier, "QetRouteCarrierKind", "") == "RoutingRange"
]
x_values = [point.x for carrier in carriers for point in carrier.Points]
z_values = [point.z for carrier in carriers for point in carrier.Points]
self.assertEqual(6, len(created))
self.assertEqual(0, len(created_again))
self.assertEqual(4, len(carriers))
self.assertEqual(60.0, max(x_values))
self.assertEqual(60.0, max(z_values))
def test_eplan_connection_route_can_use_auto_detected_support_surface(self): def test_eplan_connection_route_can_use_auto_detected_support_surface(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