Install
openclaw skills install @lisong2003-lgtm/cad-clash-checkopenclaw skills install @lisong2003-lgtm/cad-clash-check用户视角一句话:把图纸塞给它,它把各个专业碰撞、打架的地方标出来。
--clash-tol,默认 800)→
碰撞候选,按位置桶归组(一根管穿一排梁合并为一条),给坐标 + 双方构件名/属性;.json(机器可读)+ .md(人读)+ *_construct_plan.json/md(施工计划模板);
每条碰撞带 sheet / floor / axis / 专业A/B坐标 / 类型。axis_networks[] 且能组成轴格时,
先把 bbox 映射到轴格区间,只比较落入同轴格的异专业构件,坐标为佐证不单独成依据;
一侧缺轴网/轴格不可用时如实降级回坐标判定并标 axis_missing=degraded,不冒充 pass。# 一条龙:图纸直进
python3 scripts/cad_clash_check.py 结构.dwg 室外管网.dwg -o 报告/clash
# 离线:已有识图产物(*.structural.json / *.municipal.json)
python3 scripts/cad_clash_check.py a.detail.municipal.json b.detail.structural.json -o 报告/clash
# 调参:--clash-tol 碰撞距离上限(图面单位);--place-tol 一致性位置容差
依赖:cad-file-reader(识图引擎,显式依赖;找不到时设
CAD_FILE_READER_HOME 指向其 scripts 目录)。
entities(圆实体,cad-file-reader 0.39.0+
--with-geom 自动提取)→ kind=entity 成员(bbox=圆外接框,名=类别/etype 构造)。
碰撞候选只认 entity 参与;同系统/同名同位剔除计数
(dup_pairs);线×线平面交叉计数(line_line_pairs,正常关系不可判)。
全量统计不截断(scan_clashes),明细最多 2000 项。final_quantity=false:不输出工程量;碰撞引擎与适配器自 cad-suite/cross/(engine.py / adapt.py)移植为本 skill 的
clash_engine.py / clash_adapt.py(差异:线段 geometry 保留两端 bbox);
cad-suite 侧为公共库形态,本 skill 为独立交付形态,行为以单测双向钉住。
cd scripts && python3 -m unittest discover -s tests