|
|
|
|
@ -29,6 +29,7 @@ DEFAULT_OPTIONS = {
|
|
|
|
|
# 线槽网络相关参数。
|
|
|
|
|
"use_routing_network": True,
|
|
|
|
|
"network_entry_max_distance": 1000.0,
|
|
|
|
|
"adjoining_duct_tolerance": RoutingNetwork.DEFAULT_ADJOINING_DUCT_TOLERANCE,
|
|
|
|
|
"bend_penalty": 25.0,
|
|
|
|
|
# EPLAN/SOLIDWORKS 风格:线槽/路由路径最优先,辅助面域只作为过渡/兜底区域。
|
|
|
|
|
"carrier_kind_cost_factors": {
|
|
|
|
|
@ -824,6 +825,7 @@ def build_network_route(start_terminal, end_terminal, route_index=0, options=Non
|
|
|
|
|
"network": {
|
|
|
|
|
"carriers": int(network.get("carrier_count", 0)),
|
|
|
|
|
"segments": int(network.get("segment_count", 0)),
|
|
|
|
|
"bridged_segments": int(network.get("bridged_segment_count", 0)),
|
|
|
|
|
"blocked_segments": int(network.get("blocked_segment_count", 0)),
|
|
|
|
|
"nodes": len(network.get("nodes", {})),
|
|
|
|
|
"entry_distance": float(start_distance or 0.0),
|
|
|
|
|
@ -843,12 +845,19 @@ def build_network_route(start_terminal, end_terminal, route_index=0, options=Non
|
|
|
|
|
blocked_bboxes = [obstacle["bbox"] for obstacle in obstacles if obstacle.get("bbox")]
|
|
|
|
|
|
|
|
|
|
if blocked_bboxes:
|
|
|
|
|
obstacle_aware_network = RoutingNetwork.build_route_graph(doc, blocked_bboxes=blocked_bboxes)
|
|
|
|
|
obstacle_aware_network = RoutingNetwork.build_route_graph(
|
|
|
|
|
doc,
|
|
|
|
|
blocked_bboxes=blocked_bboxes,
|
|
|
|
|
adjoining_duct_tolerance=float(opts.get("adjoining_duct_tolerance", 0.0) or 0.0),
|
|
|
|
|
)
|
|
|
|
|
route_data = route_on_network(obstacle_aware_network, obstacle_aware=True)
|
|
|
|
|
if route_data is not None:
|
|
|
|
|
return route_data
|
|
|
|
|
|
|
|
|
|
network = RoutingNetwork.build_route_graph(doc)
|
|
|
|
|
network = RoutingNetwork.build_route_graph(
|
|
|
|
|
doc,
|
|
|
|
|
adjoining_duct_tolerance=float(opts.get("adjoining_duct_tolerance", 0.0) or 0.0),
|
|
|
|
|
)
|
|
|
|
|
return route_on_network(network, obstacle_aware=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|