CAD 精准控线处理流程
概述
本 Skill 封装了建筑平面图墙体分类提取的完整工作流:从输入一张建筑/酒店客房平面图图像, 到输出分层标注 SVG 可视化图 + 结构化 HTML 控线清单 + Canny 边缘检测线稿图。
核心能力:
- 墙体分类识别 — 6 类构件(剪力墙 / 分户墙 / 钢架墙 / 龙骨墙 / 门洞 / 窗户)
- SVG 分层标注 — 分色可视化,暗色/亮色主题自适应
- HTML 控线清单 — 图层定义 + 构件 ID + 线宽/填充/标注规范 + 建模建议
- Canny 线稿提取 — 高斯模糊去噪 → Canny 边缘检测 → 反色 → 白底黑线 PNG
触发条件
当出现以下场景时触发本 Skill:
- 用户提供建筑/酒店客房平面图图片,要求提取墙体信息
- 用户要求生成控线清单、墙体分类图、分层标注图
- 用户要求对建筑图纸做 Canny 边缘检测、线稿提取
- 用户提及"CAD精准控线""墙体分类""剪力墙""分户墙""控线清单"等关键词
工作流程
阶段一:参考图分析与构件识别
- 读取用户提供的建筑平面图图像(使用 Read 工具查看图片)
- 按以下 6 类构件标准进行识别:
| 构件类别 | 英文标识 | 图纸特征 | ID 前缀 | |----------|----------|----------|---------| | 剪力墙 | WALL_SHEAR | 深色/黑色实心填充块 | SW- | | 分户墙 | WALL_PARTITION | 粗实线,无填充 | PW- | | 钢架墙 | WALL_STEEL | 细线,钢框+玻璃隔断 | ST- | | 龙骨墙 | WALL_KEEL | 细线,轻钢龙骨石膏板隔墙 | KL- | | 门洞 | DOOR | 弧线(开启方向)+ 直线(门扇) | D- | | 窗户 | WINDOW | 双线(窗框+窗台) | W- |
-
识别要点:
- 剪力墙:寻找深灰/黑色实心填充区域,注意端柱(矩形黑色块)和转角约束构件
- 分户墙:寻找最粗的实线墙体,通常为客房之间的主分隔墙
- 钢架墙:寻找钢框+玻璃隔断(如淋浴间隔断),细线表达
- 龙骨墙:寻找轻质隔墙(如衣帽间、玄关隔断),细线+浅色填充
- 门洞:寻找弧线(门扇开启轨迹),注意单扇/双扇、开启方向
- 窗户:寻找双线表达(窗框+窗台),注意落地窗、高窗等类型
-
为每个识别到的构件分配唯一 ID(如 SW-01, PW-01, D-01 等)
详细识别指南参见 references/wall_classification.md。
阶段二:生成 SVG 分层标注图
使用 show_widget 工具生成分色 SVG 可视化图,遵循以下颜色规范:
| 构件 | 颜色 | 表达方式 | |------|------|----------| | 剪力墙 | #1A1A1A | 实心填充矩形 | | 分户墙 | #D85A30 | 粗实线 (stroke-width: 6) | | 钢架墙 | #378ADD | 细线 (stroke-width: 2) | | 龙骨墙 | #1D9E75 | 细线 (stroke-width: 2) | | 门洞 | #639922 | 弧线 (Arc path) | | 窗户 | #7F77DD | 双线 (两组平行线) |
SVG 结构要求:
- viewBox 以 "0 0 680 " 开头
- 包含图例(Legend)区域,列出 6 类构件色块
- 包含北向标识(North Arrow)
- 根据当前 IDE 主题选择暗色/亮色背景
- 暗色主题:深色背景 + 浅色文字;亮色主题:浅色背景 + 深色文字
阶段三:生成 HTML 控线清单
使用 assets/checklist_template.html 模板,生成结构化 HTML 控线清单。
清单包含 8 个章节:
- 图层定义 — 6 个图层的名称、颜色、线型、线宽、用途
- 剪力墙构件清单 — ID、位置、类型、建议厚度、备注
- 分户墙构件清单 — ID、位置、走向、建议厚度、备注
- 钢架墙构件清单 — ID、位置、建议厚度、备注
- 龙骨墙构件清单 — ID、位置、建议厚度、备注
- 门洞清单 — ID、位置、类型、建议宽度、开启方向
- 窗户清单 — ID、位置、类型、建议尺寸、备注
- 控线规范 — 线宽梯度、填充规范、标注规范、建模建议
生成步骤:
- 读取
assets/checklist_template.html模板 - 将识别到的构件信息填入模板对应区域
- 替换标题、元信息(图纸编号、房型、日期等)
- 输出为独立 HTML 文件,保存到项目工作目录
详细的图层与线宽规范参见 references/layer_definitions.md。
阶段四:Canny 边缘检测线稿提取(可选)
当用户要求提取线稿、边缘检测时执行此阶段。
运行 scripts/canny_edge_detector.py 脚本:
python scripts/canny_edge_detector.py <input_image> <output_path> [--low 50] [--high 150] [--kernel 5]
处理流程:
- 读取原图(支持中文路径,使用
np.fromfile + cv2.imdecode) - 转灰度图
- 高斯模糊去噪(默认核大小 5x5)
- Canny 边缘检测(默认阈值 50/150)
- 反色(bitwise_not)→ 白底黑线
- 保存为 PNG(使用
cv2.imencode + np.tofile支持中文路径)
输出文件命名规则:{原文件名}-线稿版.png,保存到原图同目录。
参数调整建议:
- 线条过多噪音:提高 canny_low(如 75)或增大 kernel(如 7)
- 线条断裂不连续:降低 canny_low(如 30)或减小 kernel(如 3)
- 需要更细的线:canny_high 降到 100
- 需要更粗的线:canny_high 升到 200
交付物清单
每次完整执行输出 3 份交付物:
- SVG 分层标注图 — 通过
show_widget内联展示 - HTML 控线清单 — 独立文件,通过
present_files展示 - 线稿 PNG(可选)— 独立文件,通过
present_files展示
注意事项
- 构件坐标为示意值,精确建模需以原始 CAD 图纸尺寸为准
- 颜色规范已适配暗色主题 IDE(深色背景 + 高对比度文字)
- HTML 清单模板使用暗色主题样式(#1a1a1a 背景),如需亮色主题需修改 CSS 变量
- Canny 脚本依赖 opencv-python 和 numpy,需提前安装到 venv
- 中文路径需使用 numpy 中转读写,不能直接用 cv2.imread/imwrite
环境依赖
- Python 3.13+(managed runtime)
- opencv-python >= 4.5
- numpy >= 1.20
- 无需额外系统级依赖
Scan to join WeChat group