|
|
|
|
@ -1580,6 +1580,76 @@ def check_eplan_routing_path_network(doc, project_uuid="", options=None):
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _format_distance_mm(value):
|
|
|
|
|
try:
|
|
|
|
|
return "{0:.1f} mm".format(float(value))
|
|
|
|
|
except Exception:
|
|
|
|
|
return "未知距离"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _diagnostic_terminal_text(item):
|
|
|
|
|
if not isinstance(item, dict):
|
|
|
|
|
return "未知端子"
|
|
|
|
|
return (
|
|
|
|
|
item.get("terminal_uuid")
|
|
|
|
|
or item.get("label")
|
|
|
|
|
or item.get("name")
|
|
|
|
|
or "未知端子"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _dict_items(value):
|
|
|
|
|
if not isinstance(value, list):
|
|
|
|
|
return []
|
|
|
|
|
return [item for item in value if isinstance(item, dict)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def format_routing_path_network_report(diagnostic):
|
|
|
|
|
"""Return an actionable Chinese summary for routing path network diagnostics."""
|
|
|
|
|
if not isinstance(diagnostic, dict):
|
|
|
|
|
return "布线路径网络检查失败:诊断结果无效。"
|
|
|
|
|
|
|
|
|
|
summary = diagnostic.get("summary", {}) if isinstance(diagnostic.get("summary", {}), dict) else {}
|
|
|
|
|
issues = _dict_items(diagnostic.get("issues", []) or [])
|
|
|
|
|
if not issues:
|
|
|
|
|
return "布线路径网络检查通过:{0} 条 carrier / {1} 段 / {2} 个节点。".format(
|
|
|
|
|
summary.get("carriers", 0),
|
|
|
|
|
summary.get("segments", 0),
|
|
|
|
|
summary.get("nodes", 0),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
message = "布线路径网络检查发现 {0} 类问题。".format(len(issues))
|
|
|
|
|
unconnected = _dict_items(diagnostic.get("unconnected_terminals", []) or [])
|
|
|
|
|
if unconnected:
|
|
|
|
|
sample = unconnected[0]
|
|
|
|
|
message += "\n端子未接入:{0},距离最近网络 {1}。请重新生成布线路径网络,或补一段线槽/辅助路径到该端子。".format(
|
|
|
|
|
_diagnostic_terminal_text(sample),
|
|
|
|
|
_format_distance_mm(sample.get("nearest_network_distance_mm")),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
possible_breaks = _dict_items(diagnostic.get("possible_breaks", []) or [])
|
|
|
|
|
if possible_breaks:
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
isolated = _dict_items(diagnostic.get("isolated_components", []) or [])
|
|
|
|
|
if isolated:
|
|
|
|
|
sample = isolated[0]
|
|
|
|
|
carriers = sample.get("carrier_labels") or sample.get("carrier_names") or []
|
|
|
|
|
carrier_text = "、".join([str(item) for item in carriers[:3]]) if carriers else "未知 carrier"
|
|
|
|
|
message += "\n存在孤立路径网络:{0}。请用线槽/辅助路径把孤立网络接入主网络。".format(carrier_text)
|
|
|
|
|
|
|
|
|
|
if not (unconnected or possible_breaks or isolated):
|
|
|
|
|
first_issue = issues[0]
|
|
|
|
|
message += "\n首个问题:{0} ({1})。".format(
|
|
|
|
|
first_issue.get("code", "unknown"),
|
|
|
|
|
first_issue.get("count", 0),
|
|
|
|
|
)
|
|
|
|
|
return message
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_eplan_routing_path_network(doc, project_uuid="", options=None, selection_ex=None):
|
|
|
|
|
"""Update the routing path network before EPLAN-style Route."""
|
|
|
|
|
return generate_eplan_routing_path_network(
|
|
|
|
|
|