Files
cad-agent/dwg_review/phases/planning.py
T

39 lines
1.2 KiB
Python
Raw Normal View History

"""阶段 1:全局规划。
收集图纸概览 + 识别图框,按阅读顺序排序,产出审查计划。
"""
from ..mcp_client import result_json
def _sort_frames(frames):
"""按阅读顺序排序:先上后下(max_y 降序)、再左后右(min_x 升序)。"""
def key(frame):
bbox = frame.get("bbox") or [0, 0, 0, 0]
return (-round(float(bbox[3]), 3), round(float(bbox[0]), 3))
return sorted(frames, key=key)
def plan(ctx):
"""返回 {drawing_info, layers, layouts, frames}。"""
drawing_info = result_json(ctx.tools.call("get_drawing_info", {}), {})
layers = result_json(ctx.tools.call("get_layers", {"count_entities": True}), {})
layouts = result_json(ctx.tools.call("get_layouts", {}), {})
frames_data = result_json(
ctx.tools.call("detect_drawing_frames", {"min_confidence": 0.3}), {}
)
frames = frames_data.get("items", []) if isinstance(frames_data, dict) else []
frames = _sort_frames(frames)
if ctx.max_frames > 0:
frames = frames[: ctx.max_frames]
return {
"drawing_info": drawing_info,
"layers": layers,
"layouts": layouts,
"frames": frames,
}