ZWD11 / house-plan-designer
git clone https://github.com/ZWD11/house-plan-designer.git
一张户型图,一句话,Agent 就把它还原成可 2D/3D 直接设计的装修设计器网页(单文件 HTML,离线可用)。适用于任何支持 Skill 的 Agent|注:要想达到满血效果不推荐使用诸如豆包等大模型
+40
stars, 24h · #959
+~149
stars, 7 days · #1,450
+128
stars, 30 days · #5,796
128
★ total · +149% this week
21
forks · 2 open issues
Star history (as recorded here)
LanguageHTML
LicenseMIT
Created2026-10-06 (17d ago)
Last push1d ago
Watchers0
OwnerUser
Links
README excerpt
# 户型图设计器 Skill **一张户型图(或一份 CAD 图纸),一句话,Agent 就把它还原成可 2D / 3D 直接设计的装修设计器网页。** 把户型图交给 Agent,它会自动量墙、看懂图纸、补全门窗和房间、摆好家具和水电,最后交给你一个**双击就能打开的单文件 HTML**。 打开就是你的户型:2D 布置、3D 漫游、定制家具、水电 / 吊顶 / 铺装 / 拆改、算量报价、整套施工图,还能**导出符合国标的 CAD 图纸(DXF)**。 适用于任何支持 Skill 的 Agent(Claude Code 等)。 | 输入:一张户型图 | 输出:设计器里的 2D 布置 | 同一份数据的 3D 鸟瞰 | |:---:|:---:|:---:| | | | | | 独栋别墅 · 沙盘效果图 | 晚上一键开灯,三层一起亮 | 智能中控:分层查看,设备图标浮在 3D 上 | |:---:|:---:|:---:| | | | | ## 目录 - 用法 - 能读哪些图 - 它是怎么做到的 - 生成的设计器能做什么 - 导出 CAD 图纸(DXF) - 实测 - 安装 - 仓库结构 - 整栋楼(多楼层)与楼梯 - 独栋别墅 - 适用范围与局限 - 更新记录 - 开发:更新设计器模板 ## 用法 对你的 Agent 说: [code] 再附上户型图(图片、截图、PDF、DXF 都行)。Agent 会按 `SKILL.md` 的流程工作,最后在图片旁边生成 ` -装修设计器.html`,并附上 2D、3D 截图和识别说明(哪些尺寸按标注、哪些按图形量、图纸自己哪里前后矛盾)。 可以顺带提要求,Agent 会写进方案里: [code] ## 能读哪些图 | 输入 | 识别路线 | 精度 | |---|---|---| | 彩色户型图(酷家乐、贝壳、房天下、售楼处)、手绘带尺寸的平面图 | `scripts/analyze.py` 用 OpenCV 提取墙体 + 按尺寸标注定比例 | 按标注逐段定位,通常 ≤ 10 mm | | 黑底 CAD 截图、扫描件、只有位图的 PDF | 同上,深色背景自动反相;墙只画双线(不填充)时 Agent 按标注手写墙 | 按标注 | | **CAD 导出的矢量 PDF、DXF**(原始结构图、建筑平面图、拆改图,含黑底打印) | `scripts/cadvec.py` 直接读图元坐标,不经过像素 | 墙厚、墙段、洞口和标注数字一致(≤ 1 mm) | | **整栋楼**:一页并排好几层平面(别墅、自建房、联排),或描边墙在交接处全断开的量房图(PDF / SVG / DXF) | `scripts/cadsplit.py` 按楼层切开、识别描边墙和门窗、各层自动对齐,输出整栋楼初稿 + 楼梯 / 电梯 / 开洞候选 | SVG / DXF 与标注一致;PDF 约 ±20 mm(受出图比例限制) | | **位图里并排几层**(截图、照片,每层比例可以不同)、挑高复式 / LOFT | 每层按自己的分段尺寸定比例,各层相同的尺寸链对齐到同一坐标系;`scripts/gridmm.py` 给每层叠毫米网格逐块读 | 按标注 | | DWG | 请先另存为 DXF,或用看图软件导出 SVG / 打印成 PDF | — | CAD 路线按国标 GB/T 50001 / 50104 和装修图惯例理解画法:涂黑 = 钢筋混凝土 / 承重,砖纹填充 = 新砌墙,两条线 = 隔墙,3~4 条平行线 = 窗,开启弧线 = 平开门(弧心定门轴、弧侧定开向),错开两扇 = 推拉门,空断口 = 门洞,彩色框 = 新开洞口,⊠ = 烟道 / 管井,⊕ = 地漏,45° 斜杠 = 尺寸起止符号。 DXF 还按图层名(WALL / 墙、WINDOW / 窗、DOOR / 门、AXIS / 轴、DIM / 尺寸;家具、洁具、图框、标题栏层排除)、门窗编号(M0921、C1515)、房间名文字、DIMENSION 标注对象识别,中文 `\U+XXXX` 转义也能读。详见 `reference/cad-conventions.md`。 **尺寸以标注为准**:图上有尺寸标注时,cadvec 读出每段标注数字(没有文字层也能读:同一张图同一个数字字形完全一样,按字形聚类再用长度投票“破译”),把所有标注当成刻度间距约束做加权最小二乘,墙面、洞口边吸到对应刻度。图纸自身前后矛盾的标注(分段加起来 ≠ 总尺寸等)会逐条列出。 ## 它是怎么做到的 1. **量墙**:矢量图纸用 `cadvec.py` 直接读坐标;图片用 `analyze.py` 提取墙体(承重 / 非承重按墙芯颜色聚类,分不开时按厚度猜并标出待确认),找出尺寸线刻度,配合 `axismap.py` 按标注数字把像素换成毫米。 2. **看懂图纸**:Agent 对照原图和带像素标尺的识别图,补全漏掉的墙(被窗打断的墙、很细的隔墙、只画双线的墙),分清门窗类型和开向,认出每个房间,写出户型描述 JSON(格式见 `reference/spec-format.md`)。 3. **自己检查**:`build.py` 生成网页,`check.mjs` 用无头浏览器打开,检查房间是否闭合、有没有悬空的墙、门窗是否被丢掉,算出外围三道尺寸和每个房间的开间 × 进深和图上标注逐个对数,并把生成结果半透明叠回原图截图。不对就改,循环到墙墙重合。 4. **自动布置**:按房间功能摆好家具和家电,放上地漏和下水口;户型描述写 `"autoElec": true`,设计器自动布好全套水电并把开关关联到灯,再跑一遍方案检查(重叠、挡门、通道宽度、马桶坑距……)。 ## 生成的设计器能做什么 **户型与结构** - 画墙、拆墙、改门窗,面积实时重算;墙体转角 / 丁字口按相交墙厚度精确接合,房间面积按墙面精确计算 - 外围三道尺寸、每段墙净长、房间开间 × 进深,改墙后实时重算;左侧可显示原图底图对照 - 门窗 12 种:单开、双开、子母、推拉、折叠、隐形推拉门、门洞;平开、推拉、落地(带护栏)、高窗、飘窗 - 薄墙在直线上接厚墙(隔墙接承重墙、外墙段变薄)时自动让墙面齐平,不会两边各错开半个厚度差;露台女儿墙、楼梯栏板只砌到栏板高 **家具与定制** - 家具家电库 160+ 件:各种床、沙发(U 形 / 弧形 / L 形)、餐桌卡座、酒柜展示柜、卫浴洁具、空调热水器油烟机洗碗机、窗帘绿植、健身宠物用品,别墅用的车、充电桩、车棚、泳池、凉亭、台球桌、茶台、桑拿…… - **定制家具参数化**(现实里能定做的都能改,冰箱洗衣机等成品家电保持标准尺寸): - 橱柜:一字 / L / U 形、地柜进深、台面高度厚度颜色、水槽和灶台在哪一段的哪个位置和宽度、单双盆、灶眼数、吊柜(高 / 深 / 离地)、油烟机、电器高柜;水槽灶台间距、灶台离墙不足时提示 - 定制柜:每列宽度和类型(门板 / 抽屉 / 开放格 / 挂衣 / 玻璃门 / 中空 / 上门下抽)、L 形转角柜、顶柜、踢脚、拉手、平开 / 推拉门、一键顶天立地 - 浴室柜单双盆 / 悬空