📈 GH Trending Explorer 🎲 Surprise me

← all repos

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)

2026-10-20 · 64 ★ 2026-10-23 · 128 ★
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 形转角柜、顶柜、踢脚、拉手、平开 / 推拉门、一键顶天立地
 - 浴室柜单双盆 / 悬空