ZWD11/house-plan-designer
ZWD11/house-plan-designer has 669 GitHub stars and 131 forks. GitHot measured +37 stars in 24 hours. Last checked 2026-11-15 14:14 UTC. Last push 2026-11-13.
측정된 스타 증가
- in 24h
- +37
- in 7 days
- 기록 수집 중
- in 15 days
- 기록 수집 중
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
소개
一张户型图,一句话,Agent 就把它还原成可 2D/3D 直接设计的装修设计器网页(单文件 HTML,离线可用)。适用于任何支持 Skill 的 Agent|注:要想达到满血效果不推荐使用诸如豆包等大模型
창작 및 미디어README.md
Original户型图设计器 Skill
一张户型图(或一份 CAD 图纸),一句话,Agent 就把它还原成可 2D / 3D 直接设计的装修设计器网页。
把户型图交给 Agent,它会自动量墙、看懂图纸、补全门窗和房间、摆好家具和水电,最后交给你一个双击就能打开的单文件 HTML。 打开就是你的户型:2D 布置、3D 漫游、定制家具、水电 / 吊顶 / 铺装 / 拆改、算量报价、整套施工图,还能导出符合国标的 CAD 图纸(DXF); 插座、照明、网线、冷热水、排水每一根线、每一根管自动排好,5 类管线分开看、分开导出;写实建模和光线追踪出图。
新:换个环境、换张图也能一次跑通,而且不靠你逐处指错。 Windows / macOS / Linux / 云端容器(含无显卡)直接跑;黑底 CAD 截图自动找轴网定比例、读尺寸数字;“原图 + 装修布置图”两张图自动对位;交付前自动做墙体、尺寸链、家具摆放三个对账。
新:吊顶、灯带、自由造型、户外场地。 7 种吊顶做法(平顶 / 边吊 / 回字叠级 / 悬浮 / 铝扣板 / 木饰面)一键切换,勾“灯槽”自动放灯带;LED 灯带、磁吸轨道灯、线性灯沿线画;自由造型工作台:在地面或任意面上画草图 → 推拉、挖洞、旋转成型、放样、抽壳、多选整组操作,捏出餐椅、书架、电视柜、吊灯;草坪、碎石、水景、花境任意轮廓铺;中央空调、新风等 40 多件新家具;水电开关按“门把手一侧、不装门后”的施工规矩自动布,交付前逐房间审计。
新:家具揉捏变形、只看某个回路、灯距自定义。 斜墙夹角里的柜子一端斜切、梯形台面、平行四边形地台:拖四个角点或一键「贴合斜墙」,2D / 3D / 碰撞 / 通道 / CAD 全部按真实形状算;水电管线太多看混时,点回路表的一行就只看这一路;无主灯筒灯阵列按横纵间距、离墙距离排,选中一盏灯点数字就能挪到位;阳台洗衣柜、百叶帘、壁龛、适老扶手、翻板床等 8 件新家具。
办公 / 培训 / 商业楼层。 装修公司给的整套 CAD 布置图 DXF 也能还原:核心筒、公共卫生间厕位、阶梯培训厅、几百件家具按图块一件件摆好,再和原图逐条对账。
适用于任何支持 Skill 的 Agent(Claude Code 等)。
| 输入:一张户型图 | 输出:设计器里的 2D 布置 | 同一份数据的 3D 鸟瞰 |
|---|---|---|
![]() |
![]() |
![]() |
| 独栋别墅 · 沙盘效果图 | 晚上一键开灯,三层一起亮 | 智能中控:分层查看,设备图标浮在 3D 上 |
|---|---|---|
![]() |
![]() |
![]() |
| 商业楼层:1019 ㎡ 办公培训层整层还原 | 四级台阶培训厅,118 座按图块角度摆 | 公共卫生间:厕位隔断、小便斗隔板 |
|---|---|---|
![]() |
![]() |
![]() |
| 管线手画 + 纠错,能修的一键修 | 家具拖边只改宽 / 深,3D 同步 | 漫游:开关标记,准星对上按空格开灯 |
|---|---|---|
![]() |
![]() |
![]() |
| 家具库:19 个空间、大图浏览 | 一键整套换风格 | 漫游视高 / 视距可调 |
|---|---|---|
![]() |
![]() |
![]() |
| 自由造型工作台:草图推拉、抽壳、旋转体、放样,模板起手 | 回字叠级吊顶 + 灯槽灯带 + 石膏线(夜景) |
|---|---|
![]() |
![]() |
| 水电管线自动排布(2D) | 3D 管线透视:按真实高度走地 / 走顶 | 光线追踪出图 |
|---|---|---|
![]() |
![]() |
![]() |
目录
- 用法
- 能读哪些图
- 两张图:墙按原图、家具按设计图
- 三个对账:不靠用户逐处指错
- 办公 / 培训 / 商业楼层(布置图 DXF)
- 它是怎么做到的
- 生成的设计器能做什么
- 异形家具与斜墙
- 吊顶与灯带
- 自由造型工作台
- 水电管线自动排布
- 写实建模与光线追踪
- 导出 CAD 图纸(DXF)
- 实测
- 安装
- 仓库结构
- 整栋楼(多楼层)与楼梯
- 独栋别墅
- 交付验收:每个功能都实际点一遍
- 适用范围与局限
- 更新记录
- 开发:更新设计器模板
用法
对你的 Agent 说:
把这张户型图做成装修设计器网页
再附上户型图(图片、截图、PDF、DXF 都行)。Agent 会按 SKILL.md 的流程工作,最后在图片旁边生成 <户型名>-装修设计器.html,并附上 2D、3D 截图和识别说明(哪些尺寸按标注、哪些按图形量、图纸自己哪里前后矛盾)。
可以顺带提要求,Agent 会写进方案里:
客厅铺 800×800 灰色大板,主卧人字拼木地板;风格要奶油风;城市是杭州
厨房做 L 形橱柜,水槽在窗下;主卧衣柜做到顶
能读哪些图
| 输入 | 识别路线 | 精度 |
|---|---|---|
| 彩色户型图(房产平台、家装设计平台、售楼处)、手绘带尺寸的平面图 | scripts/analyze.py 用 OpenCV 提取墙体 + 按尺寸标注定比例 |
按标注逐段定位,通常 ≤ 10 mm |
| 黑底 CAD 截图(模型空间截屏,彩色线) | scripts/cadshot.py 按线色分图层、自动找轴号圆圈和轴线、按轴线尺寸定比例;analyze.py --wall-color cyan 按青色双线认墙;dimocr.py 读位图尺寸数字 |
实测比例残差 0.9 mm;尺寸链逐刻度对账 |
| 扫描件、只有位图的 PDF | 同彩色户型图,深色背景自动反相;尺寸数字可用 dimocr.py 读 |
按标注 |
| CAD 导出的矢量 PDF、DXF(原始结构图、建筑平面图、拆改图,含黑底打印) | scripts/cadvec.py 直接读图元坐标,不经过像素 |
墙厚、墙段、洞口和标注数字一致(≤ 1 mm) |
| CAD 认不出墙(墙只有描边、只靠颜色 / 线宽分图层、数字炸成线条,多页 PDF 每页一层) | scripts/cadpair.py 按“线色 + 线宽 + 描边 / 填充”分图层,平行线配对成墙(2 线 = 实墙、3~4 线 = 窗 / 玻璃),灰 / 黑实心块认柱,多页共用原点 |
初稿,配合 wallaudit.py 全楼对账 |
| 原图 + 装修平面布置图两张图 | dimticks.py 自动找尺寸线刻度,align2.py 按同一道尺寸链把设计图对到原图毫米坐标 |
实测均方根误差 4 / 13 mm |
| 整栋楼:一页并排好几层平面(别墅、自建房、联排),或描边墙在交接处全断开的量房图(PDF / SVG / DXF) | scripts/cadsplit.py 按楼层切开、识别描边墙和门窗、各层自动对齐,输出整栋楼初稿 + 楼梯 / 电梯 / 开洞候选 |
SVG / DXF 与标注一致;PDF 约 ±20 mm(受出图比例限制) |
| 位图里并排几层(截图、照片,每层比例可以不同)、挑高复式 / LOFT | 每层按自己的分段尺寸定比例,各层相同的尺寸链对齐到同一坐标系;scripts/gridmm.py 给每层叠毫米网格逐块读 |
按标注 |
| 整套布置图 DXF(装修公司 / 设计院:一个文件里好几张图、块套块、中文乱码),办公 / 培训 / 商业楼层 | scripts/dxf_prepare.py 展开块、修乱码、裁出一张;dxfinventory.py 清点家具块 / 文字 / 门弧;dxfaudit.py 精确取数 + 逐项对账 |
实测 160 条墙尺寸标注 109 条 ≤ 5 mm;门图层 42 樘门全部对上 |
| 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 读出每段标注数字(没有文字层也能读:同一张图同一个数字字形完全一样,按字形聚类再用长度投票“破译”),把所有标注当成刻度间距约束做加权最小二乘,墙面、洞口边吸到对应刻度。图纸自身前后矛盾的标注(分段加起来 ≠ 总尺寸等)会逐条列出。
两张图:墙按原图、家具按设计图
用户常同时给“户型原图”和“装修平面布置图”:结构以原图为准,家具、定制柜、改墙以设计图为准。
python scripts/align2.py spec.json 设计图.jpg --x-segs 240 1220 240 2740 230 2370 240 3820 240 --y-segs 240 3260 120 2480 240 1780 230 4570 240 --x-start -120 --y-start -120 --out align
python scripts/furnoverlay.py spec.json --image 设计图.jpg --mm-per-px <k> --origin <x> <y> # 家具外框叠到设计图上逐件核对
不用再手工找刻度像素:在设计图上自动找尺寸线刻度,按你给的一道尺寸链(各段 mm)找出比例对得上的那串刻度,最小二乘拟合出比例和原点;图被转过方向就加 --rotate 180。原图上也有同一道链时自动定起点。冲突时按哪张为准、公共区(电梯厅、井道)还原不还原,见 reference/route-dual.md。
三个对账:不靠用户逐处指错
交付前固定跑三个对账,结果和“待确认清单”一起交给用户:
| 对账 | 怎么做 | 能查出 |
|---|---|---|
墙体 wallaudit.py |
沿每段墙每 150 mm 横切原图,数墙厚范围内几条线(2 = 实墙、3~4 = 窗 / 玻璃、0 = 洞口、灰填 = 柱),和建模比;墙边的衣柜、床头板先用家具外框遮掉 | 玻璃建成实墙、门洞补成墙、窗位置不对;每处一张放大图 |
尺寸链 spec 的 dims / expectDims |
check.mjs 把图上每一道尺寸链放回模型,每个刻度找最近的墙中线 / 墙面 / 洞口边,差 > 30 mm 报出;ref: "center" 只认墙中线(轴线尺寸) |
墙放错 120 mm、墙厚不对;图纸自己前后矛盾的单独列出 |
| 家具摆放 设计器自查 | 窗帘前 150 mm 内不放高于 600 的落地家具、推拉门洞前不压家具、高于窗台的柜子 / 冰箱不挡窗、楼梯踢面 ≤ 180 / 踏面 ≥ 220 | 书桌贴窗帘、高柜压推拉门、洗衣池挡门 |
另外:读图前先出「图上符号 → 建模」清单(立管、地漏、管井、电箱表箱、空调外机、百叶都要建,不认识的问用户);识图拿不准的(推断的承重墙、估的层高、看不出窗台高的玻璃)写成批注,打开设计器就在「批注」页逐条列出,推断的承重墙在属性栏标“待确认”。
办公 / 培训 / 商业楼层(布置图 DXF)
装修公司给的往往是整套 DXF:原始结构、平面布置、顶面、水电几张图上下排在一个文件里,家具是块套块,中文图层名和文字是 GBK 乱码。SKILL.md「2E 布置图 DXF 路线」按下面的步骤做:
- 挑出一张:
dxf_prepare.py把块展开、修好乱码,按 CAD 坐标框出“平面布置图”那一张。 - 清点:
dxfinventory.py列出每个家具块(图层、外框、旋转、镜像、缩略图)、全部文字、门弧线。 - 按图层认:活动家具、落地到顶柜、悬空吊柜、台面洁具、小便斗隔板、窗帘、吊顶条形风口、完成面、原墙柱 / 新砌墙;门槛石是地面分隔条,不当门。
- 朝向按图块算:家具朝向取图块的插入角度和镜像,不靠“离哪张桌子近”去猜(阶梯教室椅子坐反就是这么修好的);门轴和开向从门弧读。
- 阶梯教室:台阶边线 + 标高建成一级级能走上去的地台,桌椅放在各自那一级上。
- 逐项对账:
dxfaudit.py把模型和原图逐条比——- 墙:模型墙面 ↔ 原图墙线(±40 mm)
- 门:原图门图层每樘门都要有门洞
- 家具:原图家具图层的图形都要有模型家具对应,模型里也不能多出原图没有的
- 尺寸标注:两头落在墙线上的每条标注 ↔ 模型墙面 / 洞口边
- 每项列出没对上的条目,逐条处理或说明原因
新增的房间类型:核心筒(电梯厅、电梯井、消防楼梯、前室、强弱电间、管井)、公共卫生间(厕位隔断、小便斗隔板)、培训厅、会议室、讨论室、开放工位、前台、茶水间、玻璃幕墙外墙;家具库补了办公、培训、卫浴、设备类家具。
完整示例:reference/example-gen-office-dxf.py(1019 ㎡ 办公培训层:460 件家具、118 座四级阶梯培训厅)。
它是怎么做到的
- 量墙:矢量图纸用
cadvec.py直接读坐标;图片用analyze.py提取墙体(承重 / 非承重按墙芯颜色聚类,分不开时按厚度猜并标出待确认),找出尺寸线刻度,配合axismap.py按标注数字把像素换成毫米。 - 看懂图纸:Agent 对照原图和带像素标尺的识别图,补全漏掉的墙(被窗打断的墙、很细的隔墙、只画双线的墙),分清门窗类型和开向,认出每个房间,写出户型描述 JSON(格式见
reference/spec-format.md)。 - 自己检查:
build.py生成网页(每层墙数比上次少会报警:生成脚本的注释吞掉一面墙也能发现),check.mjs用无头浏览器打开,检查房间是否闭合、有没有悬空的墙、门窗是否被丢掉,算出外围三道尺寸和每个房间的开间 × 进深和图上标注逐个对数,并把生成结果半透明叠回原图截图。不对就改,循环到墙墙重合。交付前再用qa.mjs把设计器的每个功能实际操作一遍(见交付验收)。 - 自动布置:按房间功能摆好家具和家电,放上地漏和下水口;户型描述写
"autoElec": true,设计器自动布好全套水电并把开关关联到灯,再跑一遍方案检查(重叠、挡门、通道宽度、马桶坑距……)。

生成的设计器能做什么
户型与结构
- 画墙、拆墙、改门窗,面积实时重算;墙体转角 / 丁字口按相交墙厚度精确接合,房间面积按墙面精确计算
- 外围三道尺寸、每段墙净长、房间开间 × 进深,改墙后实时重算;左侧可显示原图底图对照
- 门窗 12 种:单开、双开、子母、推拉、折叠、隐形推拉门、门洞;平开、推拉、落地(带护栏)、高窗、飘窗
- 薄墙在直线上接厚墙(隔墙接承重墙、外墙段变薄)时自动让墙面齐平,不会两边各错开半个厚度差;露台女儿墙、楼梯栏板只砌到栏板高
家具与定制
- 家具库(按空间分 20 类、二级按家具类型,320 多件 / 210 种):搜索、9 种风格(现代简约、北欧、新中式、轻奢、日式原木、美式、工业风、奶油风、侘寂),一键把方案里已有的家具整套换成某个风格(腿型、扶手、床头、木色、金属色、面料一起换);列表单独滚动,左栏可以拖宽,还能开「大图浏览」窗口挑
- 自由造型工作台(顶栏「造型」):草图画在地面或任意面上,推拉成体、往里推挖洞、旋转成型、放样、抽壳、布尔挖空、多选整组移动 / 旋转 / 复制 / 镜像、阵列,每个部件单独选材质;9 个家具模板起手;做好的存进“我的造型”反复用(见自由造型工作台)
- 自由模型:方块、圆柱、拱门、弧形墙、格栅、台阶、拉伸体等 18 种造型,画轮廓拉伸,改材质、圆角、倾斜、阵列;可以设成“能站上去”(地台、舞台、台阶)
- 新家具:中央空调(风管机、线性出风口 / 侧出风口 / 回风口、天花机、多联机外机)、新风主机、温控面板、空气能热泵、净水 / 前置过滤 / 除湿、地暖盘管;吸顶灯、线性吊灯、泡泡吊灯、风扇灯、庭院灯、地埋灯、户外壁灯(都能点亮);集成灶、洗烘套装、嵌入式冰箱、智能马桶、背光浴镜、投影仪;绿篱、花坛、棕榈、竹子、景观石、花架廊、户外沙发、吊床、滑梯、狗屋、火盆
- 户外场地:草坪(自带草丛)、碎石、石材铺装、户外木平台(能站上去)、水景鱼池、花境(自带花),都按任意轮廓画
- 选中家具,家具库自动定位到它的分类并高亮;打开“点款式替换”点另一款就地替换(位置、朝向不变,背面贴墙)
- 家具改尺寸:拖四边只改宽或深(对边不动),拖四角一起改(Shift 等比);尺寸牌上点数字直接输入宽 / 深 / 高,拖 ↕ 调高度;「宽度 / 进深撑满两墙」一键塞满墙垛之间
- 揉捏变形:任意家具拖四个角点变成梯形、斜切、平行四边形,「贴合斜墙」自动贴到斜墙上(见异形家具与斜墙)
- 常用补充:阳台洗衣柜(洗衣机位 + 台盆 + 吊柜,自带水电点位)、百叶帘 / 卷帘、壁龛(带灯带)、适老安全扶手、翻板床(平面画出放下后的床位)、保险柜、马桶上方置物柜、猫砂盆
- 家具家电种类:井道和室外设备(立管、空调外机、百叶、电表箱)、斜角开放展示格、模块沙发 + 脚踏、室内飘窗台、毛绒玩偶 / 花瓶 / 书摆,各种床、沙发(U 形 / 弧形 / L 形)、餐桌卡座、酒柜展示柜、卫浴洁具、空调热水器油烟机洗碗机、窗帘绿植、健身宠物用品,别墅用的车、充电桩、车棚、泳池、凉亭、台球桌、茶台、桑拿……
- 定制家具参数化(现实里能定做的都能改,冰箱洗衣机等成品家电保持标准尺寸):
- 橱柜:一字 / L / U 形(U 形两侧可以不等长)、地柜进深、台面高度厚度颜色、水槽和灶台在哪一段的哪个位置和宽度、单双盆、灶眼数、吊柜(高 / 深 / 离地)、油烟机、电器高柜;水槽灶台间距、灶台离墙不足时提示
- 定制柜:每列宽度和类型(门板 / 抽屉 / 开放格 / 挂衣 / 无门挂衣区 / 玻璃门 / 中空 / 上门下抽)、L 形转角柜、顶柜、踢脚、拉手、平开 / 推拉门、一键顶天立地
- 浴室柜单双盆 / 悬空 / 镜柜,淋浴房方形 / 钻石形 / 弧扇形 / 一字形,中岛水槽 / 灶台 / 吧台出挑
- 2D、3D、立面图、报价(橱柜按延米、高柜按投影面积)、自动水电点位全部同步
3D 与效果
- 2D 平面、3D 鸟瞰、第一人称漫游、720° 全景;🔒 锁定防误触;左右面板可收起 / 展开(
[/])、拖边缘调宽,漫游视角面板可收起(H);鸟瞰时吊顶上的东西随顶面一起隐藏,不挡视线 - 漫游找东西:附近(没被墙挡住)的开关、插座、小物件头上浮出标记,开关标记随灯亮变色;点标记直接操作,准星对着的按空格操作,T 显示 / 隐藏;视高(儿童 / 成人 / 高个 / 高处)、视距(第一人称 / 近跟随 / 远跟随)、视角都能调
- 灯多的平面里每盏灯都会真的照亮房间(以前只有前 22 盏有真实光源,大平面里很多开关按了不亮)
- 写实建模(不用外部 glb 模型,全部程序生成):乳胶漆 / 木纹 / 布纹 / 地板细微纹理和凹凸、鼓包软垫带包边、被子褶皱、家具小倒角;漫游有接触阴影、窗户面光源(拉上窗帘房间变暗)、房间反弹光、窗外城市远景,顶面不漏光;光线追踪出图;画质三档(见写实建模与光线追踪)
- 3D 可交互:点墙上的开关开关它关联的灯(双控、调光、三开分路),门能开关、平开窗 / 推拉窗能打开、窗帘能拉、电视能开、台灯能点亮;漫游时门窗窗帘和灯会真实改变室内光影
- 动效平滑:门窗、窗帘(一褶一褶收拢)、灯光淡入淡出、电视、楼层切换都用临界阻尼弹簧推进,起停都缓、中途反向不顿
- 智能中控(3D 视图「🏠 智能中控」,单层套房和多层都能用):白色半透明墙、开灯在地面打出光池;问候 / 日期农历 / 日出日落、灯光空调窗帘开启数、室内环境曲线(模拟);楼层切换和 ALL 爆炸视图;灯光 / 环境 / 设备 / 扫地机 / 安防五类设备图标浮在 3D 上,点开控制卡片——灯的色温亮度和场景、窗帘开合百分比、空调温度模式风速摆风(3D 出风气流)、设备开关、扫地机器人(栅格避障不穿模、关门进不去、受阻绕行、低电量回充充满续扫,留下清扫轨迹;没放基站时自动放一个虚拟的)、门窗开关和门锁;切换楼层时别的层滑开淡出,挑高层娃娃屋剖切。 中控是 3D 里的模拟演示(环境数据为模拟、状态不存进方案、不连接真实设备),用途是装修前的预演:灯放哪、空调窗帘怎么配、扫地机能不能扫到每个角落,住进去之前先用一遍
- 真实日照:按城市纬度、月份、时间算太阳位置,晚霞星空月光,一键日照演示
- 视觉风格:写实 / 彩平图(正上方俯视,一键导出 4000 像素高清 PNG)/ 沙盘效果图(微缩模型感),方案原色 + 12 套主题配色
装修设计
- 布置 / 水电 / 顶面 / 铺装 / 拆改五种图层;墙顶地材质、吊顶(7 种做法 + 灯槽 + 窗帘盒 + 石膏线 + 局部吊顶造型)、灯带 / 轨道灯 / 线性灯、踢脚线、立面图
- 自定义铺砖:砖的长宽、灰缝、8 种铺法、6 种纹理、起铺点、任意铺贴角度(「对齐斜墙」砖缝和斜墙平行),一块块铺,报价按整砖 + 切砖片数算
- 排灯:房间或筒灯属性里设灯型、横纵间距、离墙距离(按间距居中 / 首尾离墙均分)、是否保留主灯,一键重新排,开关自动改控新灯,以后一键水电也按它排;选中一盏灯,平面上显示到墙面(蓝)和相邻灯(绿)的距离,点数字输入就挪到位
- 独栋别墅:车库(电动卷帘门、车、充电桩、储物架)、庭院(围墙 + 车道口、大门、草坪、汀步、泳池、凉亭、车棚、乔木、草坪灯、烧烤台、景墙)、挑空客厅 + 水晶吊灯、电梯、茶室 / 影音室 / 台球室 / 桑拿、设备间(壁挂炉、分集水器、软水机);一键水电会按车库、庭院、分层配电的规则布
- 智能中控:每盏主灯、吊灯单独一个图标,同房间的筒灯 / 壁灯 / 一排吸顶灯合成一组,2D 里加删灯、挪家具、改门窗都会自动同步
- 水电管线自动排布:插座 / 照明回路、网线、冷热水、排水的每一根线和管,回路表、材料清单,5 类分开看、分开导出(见水电管线自动排布)
- 水电点位 33 种(含沿线画的灯带、磁吸轨道灯、线性灯),一键布置水电(按功能区布灯:餐桌 / 岛台吊灯、沙发区、厨房操作区、玄关走廊,再全屋覆盖检查补筒灯不留暗区;门边开关、多门口和楼梯双控、床头双控;插座沿墙补齐、每间网口、电视位;橱柜冷热水、排水、燃气、空调孔、强弱电箱)
- 方案检查:家具重叠、挡门、通道太窄、马桶离下水口太远、家电附近缺插座或水点、吊柜挡窗、楼梯着地端 / 到达端 / 头顶净高等
- 自动算量报价;导出整套 A3 施工图 PDF、CAD 图纸 DXF、彩平图 PNG、分享文件;多方案管理与对比,自动保存
异形家具与斜墙
现实里很多地方不是 90° 夹角:斜墙边的柜子一端要斜切,转角台面是梯形,地台、地毯顺着斜墙走。
- 揉捏:选中家具 → 属性栏「形状 · 揉捏变形」→「揉捏」,平面上拖橙色角点单独挪一个角、拖边中点整条边一起挪;角点自动吸附墙面(Alt 不吸)
- 贴合斜墙:后沿、两端、前沿 600 mm 内有墙面就自动贴上去;也可以直接输入左 / 右端斜切角度、前后沿错位;「复原矩形」随时回去
- 真实形状:3D 里整件家具(柜门、台面、抽屉、灯带)按双线性映射一起变形;碰撞、通道、嵌墙、门边开关避让、点选吸附、DXF 导出都按变形后的轮廓;spec 里写
"quad": [8 个数]直接还原图上的异形柜 - 其他跟着斜墙走的:家具靠近斜墙自动转到和墙平行;铺砖任意角度、一键对齐斜墙;「宽度 / 进深撑满两墙」
吊顶与灯带
顶面图层里点房间,属性里选做法,2D 顶面图、3D、报价同步:
| 做法 | 说明 |
|---|---|
| 平顶 / 铝扣板 / 木饰面 | 整间下吊;铝扣板(厨卫)按 300 板画,木饰面按格栅画 |
| 边吊 | 四周一圈下吊,中间原顶 |
| 回字形叠级 | 外圈、第二圈逐级下吊,中间原顶 |
| 悬浮 | 中间整块下吊,四周一圈缝里藏灯带 |
- 灯槽:勾上就沿每一级台阶自动放 LED 灯带(挡板后面藏着,光打到上面的顶),改吊顶尺寸灯带跟着走,自动挂到房间的开关上,3D 里开关、调色温
- 窗帘盒(150 / 200 / 250)、石膏顶角线、顶面颜色;顶面图注标高 ▽2.650;灯具、吸顶设备装在所在那一格的顶面上
- 局部吊顶造型:家具库「吊顶」里画任意轮廓(可带一圈灯带)、圆形吊顶、木梁、木格栅片;只在顶面图层显示和拖动,布置图里画一圈淡虚线提示
- 沿线灯具:LED 灯带、磁吸轨道灯、线性灯逐点画;安装位置可选贴顶、柜底、踢脚、床底、镜后,显示长度、功率和驱动电源
- 报价新增叠级 / 悬浮 / 铝扣板 / 木饰面吊顶、石膏线、窗帘盒、灯带、线性灯、轨道灯
自由造型工作台
顶栏「造型」打开独立的 3D 建模窗口,捏出库里没有的家具和造型:
- 草图:矩形、圆、多边形,可以画在地面上,也可以直接画在已有部件的任意一个面上(台面上画圆往下推 = 开孔,墙面上画矩形往外推 = 凸起造型)
- 推拉:画完拖动鼠标定厚度,往里推就是挖洞;推拉工具点任意面改尺寸(多边形侧面整条边平移);输入数字回车 = 精确尺寸
- 旋转成型(花瓶、灯座、桌腿)、放样(石膏线、踢脚线、圆管、扶手等截面沿路径扫出来)、抽壳(柜体、抽屉、花盆)、布尔挖空
- 多选(Shift + 点)整组移动 / 旋转 / 缩放 / 复制 / 镜像 / 删除,阵列;每个部件单独选材质颜色;撤销重做;右上角显示整体尺寸
- 模板起手:实木餐椅、茶几、圆边几、五层书架、悬空电视柜、两抽床头柜、吊灯、花盆、木格栅背景墙,放进来后每个部件都能再改
- 「完成」放进方案(平面、3D、拖动、旋转、改尺寸、报价都通用),属性里随时回到工作台再编辑;「存入造型库」以后在「自由模型 → 我的造型」里拖出来用
- 不适合:布艺鼓包褶皱、雕花这类有机曲面(用家具库成品或导入 GLB 模型)
水电管线自动排布
水电图层在点位之上自动排出每一根线、每一根管(100 mm 网格 A* 寻路,只走横平竖直,少拐弯,优先从门洞过墙,尽量不穿承重墙,同类管线并排成束)。规则和依据见 reference/mep-rules.md:
| 系统 | 怎么排 |
|---|---|
| 强电插座 | 按房间分回路(每路 ≤ 12 个点),厨房、卫生间、空调、电热水器、充电桩各自独立回路;断路器、线径按 GB 50096(插座回路 30 mA 漏保,进户 ≥ 10 mm²);默认走地,可切走顶;厨卫回路一律走顶 |
| 照明 | 每路 ≤ 16 盏,固定走顶,开关线接到它控制的最近一盏灯 |
| 网线 | 弱电箱到每个网口 / 电视口各拉一根,不和强电平行贴着走(300 mm 内只垂直交叉) |
| 冷热水 | 从进户总阀、热水器出发树状接到每个用水点,干管 PPR De25、支管 De20;默认走顶(漏水好查),可切走地 |
| 排水 | 墙排、地漏接同一房间的立管 / 下水口,PVC De50、2.6% 坡度(GB 50015),离立管太远会提示起点要垫高多少 |
| 别墅 / 复式 | 总箱在入户层,其他层分层配电箱(自动算干线);给水、热水立管从入户层接上来;挑空、楼梯井上不走地面管线;首层排水直接出户 |
- 6 个视图:全部 / 强电 / 照明 / 网线 / 给水 / 排水,单独看一类时只显示这一类的点位和图例
- 只看某几个回路:回路表点一行只看这一路(再点恢复,Ctrl / Shift 多选),其他回路的线和点位淡显或完全隐藏;选中管线、插座、灯也能「只看回路 S1」;2D、3D 管线、导出的图片和 DXF 都只出这几路
- 导出:当前视图 PNG / DXF;「5 类管线分别导出 CAD」一次出 5 份 DXF(按系统分图层 MEP-POWER / LIGHT / WEAK / COLD / HOT / DRAIN);整套 PDF 每类一页;回路表 + 材料清单 CSV(BV 线按三色 × 1.1 损耗、线管、底盒、网线、PPR、弯头三通、PVC)
- 开关位置按施工规矩:门把手一侧离门框 150~200;那边紧贴墙角就装到墙角另一面墙上;再不行沿墙找门扇盖不住的地方,不装门后;阳台门两边全是窗时装到客厅一侧;卫生间、阳台开关装门外;入户门旁必须有开关;厨房台面插座不少于 4 个,卫生间插座一律防水
- 走法按家装行业做法:墙面横平竖直、地面可点对点,厨卫电线全走顶,水走顶,电上水下不同槽,强弱电间距 ≥ 300 mm,排水 45° 弯头、坡度 ≥ 2.6%
- 手动编辑:选系统逐点画,吸附到点位自动结束;勾「自动寻路」只点起点和终点;拖顶点、拖线段、双击加拐点,Delete 删除;点中一段管线拖动平移,「恢复自动走线」撤回;选中插座 / 灯可以改它所属的回路
- 纠错:自动线和手改线都按施工规矩检查(悬空没接上、穿承重墙、强弱电贴太近、厨卫电线走地……),能自动处理的给出一键修复(重新走线 / 恢复 / 删除 / 接上 / 吸附 / 换走顶)
- 3D「⚡ 管线」:管线按真实高度放进模型(走地贴地、走顶贴顶棚,到点位竖直上下墙),墙变半透明
管线排布是按国标常用做法自动生成的方案,用于装修前规划和沟通;正式施工前以现行规范原文和电工、设计师的核算为准。
写实建模与光线追踪
- 建模:全部由代码程序生成(不依赖外部 glb)。软装是细分后“鼓起来”的填充感垫子,带包边;被子有褶皱;柜体、桌面有小倒角;墙面乳胶漆、木纹、布纹、地板都有世界坐标的细微纹理和凹凸,远处自动淡出不闪;布艺用丝绒光泽、烤漆用清漆层
- 漫游光影:GTAO 接触阴影、窗户是面光源(窗帘拉上会暗)、房间光照探针模拟反弹光、窗外城市远景(夜里亮窗)、室内摄影调色、抗锯齿;墙段之间严丝合缝、不重叠,鸟瞰和漫游都不闪烁、不漏光
- 画质三档:流畅 / 均衡 / 高画质,第一次打开按显卡自动选(核显 → 均衡,独显 → 高画质),在「🎨 风格 → 画质」里手动切换并记住
- 光线追踪出图:☀ 面板「方式」选光线追踪(three-gpu-pathtracer + 自写的法线 / 深度 / 本色引导降噪),有进度条和剩余时间,可以随时“提前结束并保存”。实测 1920×1080、512 采样在 Intel UHD 630 核显上约 3 分 40 秒(含首次约 1~1.5 分钟的着色器编译)
导出 CAD 图纸(DXF)
设计器「导出图纸」菜单里有三种 DXF:平面布置图(国标三道尺寸)、平面布置图(装修四道尺寸)、水电点位图。 主流 CAD 软件和常见看图软件都能直接打开;按 GB/T 50001-2017《房屋建筑制图统一标准》/ GB/T 50104《建筑制图标准》的出图习惯组织:
| 项目 | 做法 |
|---|---|
| 格式 | DXF R2007(AC1021),文字 UTF-8,中文不乱码;模型空间 1:1,单位 mm |
| 图幅 / 比例 | 自动选(优先 1:100,A3 放不下换 A2 再降比例),图框(装订边 25)+ 标题栏 |
| 图层 / 线宽 | 墙、柱、门、窗、家具、水电、轴线、轴号、尺寸、文字、图框分层;线宽组 b = 0.5:墙柱 0.5、门窗 0.25、家具尺寸 0.13 |
| 图例 | 承重墙涂黑、新砌墙 45° 斜线(ANSI31)、拆除墙虚线;平面门开启线细实线 |
| 尺寸 | 国标三道(门窗洞口 / 轴线 / 总尺寸)或装修四道(多一道墙厚 + 净距);第一道离外轮廓 10 mm、各道间距 10 mm;45° 建筑斜线;短段数字错开 + 引出线 |
| 标注对象 | 每段尺寸都是真正的 DIMENSION(标注样式 GB,DIMSCALE = 比例),数字由 CAD 按定义点量,和图形永远一致,可拖动编辑 |
| 轴线 | 承重墙 / 厚墙和柱的中线,单点长画线;轴号圆 8 mm,横向 1、2、3…,竖向 A、B、C…(不用 I、O、Z) |
| 门窗 | 编号 M / TLM / DK / C / GC / TC + 洞口宽高(分米),同类型同尺寸同窗台高才同号,撞号加 a、b;门窗表写毫米实数、数量、窗台高 |
| 水电点位图 | 单独一张(平面布置图不含点位),图例列出符号、名称、数量、安装高度 |
| 对象组织 | 每段墙、每樘门窗、每根柱是编组(点一下选中整组);每件家具是图块(同款共用块定义) |
| 文字 | 字体 gbenor.shx + gbcbig.shx(宽度 0.7 ≈ 长仿宋),汉字 ≥ 3.5 mm、数字 ≥ 2.5 mm;房间名自动避开家具和门窗编号;指北针、图名 + 比例 |
导出的 DXF 可以再用 cadvec.py 读回来(实测墙体、门窗全部一致)。说明:DXF 存不了建筑 CAD 插件那种参数化“墙对象”,在 CAD 里拉一段墙不会带动相接的墙——要改墙回设计器里改,再导出。
实测
| 案例 | 输入 | 结果 |
|---|---|---|
| 三室两卫 12340 × 11940(上面那张图) | 彩色户型图 | 按宽 / 按深比例 17.65 / 17.61 mm/px;21 面墙(8 面由 Agent 补全)、8 门 7 窗、8 个房间全部识别;外轮廓误差 10 mm |
| 装修公司原始结构图 | 矢量 PDF(字体炸成轮廓) | 101 段标注读出 100 段,94 段与设计器尺寸差 ≤ 1 mm,其余 6 段是图纸自身矛盾;墙厚和标注一致 |
| 建筑 CAD 插件导出的 DXF(图层、门弧、填充、标注) | DXF | 往返 16 / 16 个洞口,墙体 0 误差 |
| 设计器导出的 DXF 再读回 | DXF R2007 | 34 / 34 面墙、16 / 16 个门窗,71 段标注对象读回 69 段 |
| 二层平面图、四室两卫 | 黑底 CAD 截图(墙为双线) | 按标注逐段写墙,外围四道总尺寸和分段与标注一致;图纸自身前后矛盾的标注逐条列出 |
| 三层独栋别墅(车库 + 庭院) | 示例户型描述 example-gen-villa.py |
双车位车库 + 电动卷帘门、庭院围墙 + 车道口、车棚、泳池、凉亭、挑空客厅、U 形楼梯 + 电梯全部建出;一键水电三层分别 40 / 19 / 17 盏灯,晚上一键开灯三层同时亮;智能中控每层一台扫地机,各扫各的 |
| 办公培训中心(商业楼层) | 装修公司整套布置图 DXF | 套内 1019.42 ㎡、460 件家具、118 座四级阶梯培训厅;160 条墙尺寸标注 109 条 ≤ 5 mm、151 条 ≤ 60 mm(其余 9 条量的是梁线、窗帘盒、柜边、壁龛);门图层 42 樘门全部有门洞;自查 0 warn,验收 105 / 105,导出 22 / 22 |
| 三室两厅 + 公共核心筒(第三次实战) | 黑底 CAD 截图 4096 × 4433 | 自动找到 4 根竖轴 + 8 根横轴,比例 5.902 mm/px、残差 0.9 mm;6 道尺寸链逐刻度对账;把书桌挪到窗帘前、把一面墙挪 120 mm,自查都能报出;验收 105 / 105,导出 22 / 22 |
| 两室两厅两卫:原图 + 装修布置图(第一次实战) | 两张位图 | 设计图左侧、顶部各 9 段尺寸链自动匹配,两方向比例差 0.11%,均方根误差 4 / 13 mm,叠图墙体重合 |
| AH26110 六层别墅(第二次实战) | 6 页矢量 PDF(数字炸成线条) | cadpair.py 负二 / 负一层 11 根柱各认出 10 根(另有少量误报);把二层玻璃全写成实墙,wallaudit.py 8 处全部报出;"site" 一行生成地下土层 + 草坪地坪 |
| 挑高复式(一张图左一层右二层,两层比例不同) | 装修平面图截图 | 两层按相同尺寸链对齐;数出 30 级踏步 → 一层挑高 4.98 m、四跑三拐角楼梯(三处扇形转角踏步),两层平面与原图一致;漫游从起步走到二层过厅、从梯段底下进主卧门全部走通 |
完整示例:reference/example-spec.json(户型描述)、reference/example-gen.py(图片路线生成脚本)、reference/example-gen-precise.py(按标注精确定位)、reference/example-gen-cad.py(CAD 路线:读入 draft.json 再补改)、reference/example-gen-building.py(整栋楼)、reference/example-gen-duplex.py(挑高复式、多跑楼梯)、reference/example-gen-villa.py(三层独栋别墅:车库、庭院、泳池、挑空、电梯)+ reference/example-walk-route.json(漫游走查路线)。
安装
把本仓库放进你的 Agent 的 skills 目录,例如 Claude Code:
git clone https://github.com/ZWD11/house-plan-designer ~/.claude/skills/house-plan-designer其他 Agent 放到各自约定的 skills 目录即可。
安装依赖:
pip install numpy pillow opencv-python pymupdf ezdxf pypdf # 后三个给 CAD 图纸和导出文件检查用 cd scripts && npm install # 只装 puppeteer-core,不下载浏览器package-lock.json用官方源;国内网络慢可以临时npm install --registry=https://registry.npmmirror.com。浏览器:所有脚本由
scripts/browser.mjs自动找——CHROME_PATH→ 系统 Chrome / Edge / Chromium(Windows、macOS、Linux)→ Playwright / Puppeteer 自带的浏览器(npx playwright install chromium装一个就行)。Linux 以 root 运行或在容器里会自动加--no-sandbox,不用写包装脚本。没有显卡时验收自动进慢速模式,见reference/env-cloud.md。
仓库结构
SKILL.md Agent 读的总流程(约 90 行:开工前确认、选路线、对账、交付),各路线细节在 reference/
assets/template.html 设计器模板(单文件,three.js 已内联,约 1 MB)
scripts/browser.mjs 公共浏览器启动(跨平台找浏览器、容器 --no-sandbox、检测显卡、下载目录)
scripts/imgio.py 读图公共函数(按 EXIF 方向摆正、底图旋转、线色分层)
scripts/analyze.py 图片识别墙体 → 比例 + 尺寸线刻度 + HouseSpec 初稿(--wall-color:黑底彩色线截图)
scripts/cadshot.py 黑底 CAD 截图:按线色分图层、自动找轴网、按轴线尺寸定比例
scripts/dimocr.py 位图尺寸数字识别(字形聚类 + 长度投票,不装 OCR 库)
scripts/dimticks.py 自动找尺寸线和刻度像素(白底 / 黑底)
scripts/align2.py 双图对齐:设计图按尺寸链对到原图毫米坐标
scripts/cadpair.py CAD 兜底:线色线宽分图层、平行线配墙、实心块认柱、多页共用原点
scripts/wallaudit.py 全楼墙体对账:横切原图数线,和建模比对,每处出放大图
scripts/axismap.py 按尺寸标注把像素换成毫米(逐段,不用整体比例)
scripts/cadvec.py CAD 矢量 PDF / DXF 识别 → 按标注定坐标的 HouseSpec 初稿
scripts/cadsplit.py 整栋楼 / 描边墙:一页多层自动切分 + 识别 + 各层对齐 → building_draft.json
scripts/dimtext.py 没有文字层时破译尺寸数字(字形聚类 + 长度投票)
scripts/dxf_prepare.py 整套 DXF:展开块、修 GBK 乱码、按坐标裁出一张图
scripts/dxfinventory.py 布置图 DXF 清点:家具块(含旋转 / 镜像)、文字、门弧线、毫米底图
scripts/dxfaudit.py 布置图精确取数 + 对账:墙 / 门 / 家具 / 尺寸标注逐条和原图比
scripts/gridmm.py 给户型图任意一块叠毫米网格并放大,按毫米直接读位置(位图多楼层用)
scripts/build.py 户型描述 JSON + 原图 → 设计器网页
scripts/check.mjs 无头浏览器自查:报告 + 2D / 叠图 / 3D 截图
scripts/walktest.mjs 漫游走查:按路线走一遍,验证楼梯、扶手、门(--floors 只测改过的层)
scripts/closeup.mjs 3D 近景截图:站在 (x, y) 朝某个方向拍一张漫游画面
scripts/clicktest.mjs 2D 点选测试:在某点点一下,看选中的是什么
scripts/qa.mjs 交付验收:真显卡把设计器每个功能实际操作一遍,出报告 + 截图
scripts/qa_files.py 检查 qa.mjs 导出的文件能否正常打开
scripts/elecaudit.mjs 水电逐房间审计:灯 / 开关 / 插座、关联关系、安装高度、开关在门把手一侧不在门后(--auto 先一键布置再审)
scripts/qa_furniture.mjs 家具库逐件拍 3D,人工核对模型
scripts/qa_styles.mjs 风格款家具 + 自由模型逐件拍 3D(一行一个风格)
scripts/wallfit.py 按原图量每面墙的两个墙面,核对墙中线和厚度
scripts/furnoverlay.py 把 spec 里的家具画回原图,逐件核对“家具一比一还原”
scripts/dev/ 开发回归工具:
make_test_dxf.py 把确认无误的户型画成 DXF,再用 cadvec 识别回来
compare.py 识别结果和标准答案逐项比对
dumprooms.mjs 导出每个房间的精确面积和矩形拆分,和按标注手算的面积核对
mk_dxf_template.py 生成设计器 DXF 导出用的骨架(图层 / 线型 / 标注样式)
shot3d.mjs / birdshot.mjs 漫游 / 鸟瞰机位截图(birdshot 还量相机微动时的闪烁像素)
ptshots.mjs / uitest.mjs 光线追踪出图回归
walk_lights.mjs / swinfo.mjs 漫游开关灯实测(夜里走到开关前按空格,看灯和点位标记)
fps.mjs / libshot.mjs 3D 帧率、家具库面板截图
sharetest.mjs 保存 / 分享文件往返:改方案 → 刷新 → 导出分享文件 → 干净浏览器打开,逐项核对
reference/route-*.md 各识别路线:image(图片 / 黑底截图 / OCR)、cad(含 cadpair 兜底、承重判定)、building(整栋楼、楼梯、场地)、dual(双图)、dxf-layout、office、villa
reference/workflow-check.md 生成自查、尺寸链对账、墙体对账、摆放检查
reference/furnishing.md 家具水电布置、图上符号清单、家具库补齐
reference/delivery.md 交付验收、待确认清单、zip 打包
reference/env-cloud.md Windows / macOS / Linux / 云端 / 无显卡环境说明
reference/mep-rules.md 管线排布规则与规范依据(回路、线径、管径、走线方式、导出)
reference/catalog-sizes.json 家具库尺寸表(自动从设计器同步)
reference/spec-format.md 户型描述格式(墙、门窗、房间、家具含定制参数、水电、铺砖、整栋楼与楼梯)
reference/cad-conventions.md CAD 图纸画法、结构形式与承重判定、平面布置图图例(30 个符号)、核对清单、导出 DXF 的规则
reference/example-* 完整示例(example-gen-building.py = 整栋楼模板,example-gen-duplex.py = 挑高复式,example-gen-villa.py = 独栋别墅,example-gen-furnished.py = 照图一比一还原家具的大平层,example-gen-office-dxf.py = 布置图 DXF 还原办公培训层)
整栋楼(多楼层)
设计器支持任意层数:每层单独编辑,2D 各层平铺 / 单层,3D 整栋 / 平铺 / 单独看某一层(可含下层剖切),风格和配色对每种看法都生效;
楼板开洞(楼梯井、挑空、下沉区)、家用电梯;漫游时可以走楼梯、坐电梯上下楼;报价可以全楼汇总;撤销 / 重做跨楼层。
只有一层时和以前完全一样。户型描述格式见 reference/spec-format.md“整栋楼”。
楼梯
- 类型:双跑扇形转角楼梯(
stairDogleg,一个 key:两跑并排、转角踏步从立柱放射、内侧扶手绕立柱连续)、U 形(双跑折返、三跑)、直跑、休息平台、扇形转角踏步(照图上的放射线分块,90° 拐角和 180° 掉头都行),可以拼成 L 形、多跑盘旋楼梯;直跑段可以指定踏步数 - 读图:按国标楼梯平面画法理解——首层只画剖切面以下的着地段、45° 折断线、以上虚线;顶层透过洞口看到整部楼梯、只标“下”;洞口里的斜线是楼板开洞,拐角的放射线是转角踏步。 先分清着地端(下层图的实线起点、“上”字)和到达端(上层图洞口边接上层地面、“下”字起点),再数踏步推算层高:1619 级是普通层高,2634 级是挑高复式,楼梯多跑盘旋、上一跑压在下一跑正上方,两层图看到的不是同一段梯子
- 2D 也按这个画:本层被剖切的梯段画折断线、以上虚线;上层洞口里自动画出下层整部楼梯并标“下”
- 扶手:外沿悬空的地方自动装;按高度判断有没有依靠(旁边是墙、或另一段梯段 / 平台高差在一步之内才算接上),上下叠着的两跑照样装;漫游时扶手、栏板、女儿墙都挡人,从高段梯段底下可以走过去、进出门
- 自动检查:最低一级离地 ≤ 一级且踩在本层地面上;最高一级 = 楼面到楼面、外侧是上层地面;梯段头顶净空 < 2 m 的地方上层必须开洞
scripts/walktest.mjs按一条路线在漫游里把楼梯真走一遍(脚高、楼层、是否被挡),交付前验证用
地下室 / 场地:整栋 spec 写一行 "site": {"grade": 0, "soil": true, "lawn": 1800},地下层四周自动画半透明土层、地坪外圈铺草坪,楼层条上标“地下”;这些场地块点选优先级最低、不报“不在房间内”、不改外墙尺寸。叠放的自由模型自动错开 20 mm 不闪,自由模型按实际轮廓点选。
独栋别墅
别墅图和公寓图的区别是主楼外面还有车库、庭院、车棚、泳池,楼里常有挑空客厅、电梯、设备间和露台。Agent 按 SKILL.md“独栋别墅”一节认图:
- 车库:外墙上 2.4~6 m 的大洞口 → 电动卷帘门(门型
garage,3D 里点一下卷起 / 放下),车库里放车、壁挂充电桩、储物架 - 庭院:主楼外一圈围墙圈起来的地方,围墙按高度砌、车道口和人行门留通高洞口;草坪、汀步、乔木、草坪灯、烧烤台、景墙
- 车棚、泳池、凉亭:照图上的位置和尺寸摆
- 挑空、电梯:上层楼板开洞(挑空四周装栏板,可挂水晶大吊灯);电梯每层同一位置,漫游时能坐电梯上下楼
- 水电:车库按面积排灯、进屋门和车库门双控、每个车位一个充电桩电源、卷帘门电机插座;庭院 / 露台沿墙壁灯、防水插座、取水点
完整示例:reference/example-gen-villa.py。
交付验收:每个功能都实际点一遍
check.mjs 管户型对不对,qa.mjs 管设计器每个功能能不能用、显示对不对。SKILL.md 规定交付前必须全部通过:
node scripts/qa.mjs <设计器.html> <输出目录> # 约 20 分钟;--quick 跳过 PDF 和光线追踪
python scripts/qa_files.py <输出目录> # 导出的 PNG / DXF / PDF / CSV / JSON / 分享文件能不能正常打开(0 个文件判失败)
node scripts/elecaudit.mjs <设计器.html> [--auto] # 水电逐房间审计,✗ 必须为 0
node scripts/qa_furniture.mjs <设计器.html> <输出目录> # 改家具建模时:全部家具排成网格分块拍 3D,逐件看
用真显卡(无头 Chrome + D3D11)打开设计器,把 2D 编辑(画墙、房间、门窗、点位、批注、测量、拆墙、家具拖动旋转复制删除、撤销重做)、属性面板(墙、门窗、房间、点位、定制橱柜 / 柜体)、5 个图层、水电 6 个视图和拖动改线、全部导出、报价、方案管理与对比、楼层、保存后刷新、3D 风格 / 配色 / 画质 / 日照 / 漫游 / 全景 / 光线追踪 / 智能中控 5 类设备,以及 4 种电脑屏幕尺寸和手机尺寸,一项项实际操作
判失败:页面报错、界面出现 NaN / undefined、操作后状态没变、导出没下载到或打不开、3D 画面空白、按钮被挤出或重叠、夜里中控文字对比度不够、手机上平面超出屏幕
输出
report.md(每项 ✅ / ❌ + 原因 + 截图)和每一步的截图,自动检查之外再人工过一遍截图电脑性能一般也能跑:验收进程默认“低于正常”优先级(Chrome 跟着降),跑的时候电脑照常能用;常用参数:
node scripts/qa.mjs <设计器.html> <输出目录> --lite --quick # 1280×800、快速画质、超时放宽;1019 ㎡ 大平面约 11 分钟 node scripts/qa.mjs <设计器.html> <输出目录> --only walk # 只跑一组:2d / 3d / walk / smart / screen,或步骤名关键词(--only 管线,漫游),约 2 分钟 node scripts/qa.mjs <设计器.html> <新输出目录> --retry <输出目录>/report.json # 只重跑上次失败项所在的组不要和视频渲染、录屏、另一个验收同时跑:抢显卡会让 3D / 漫游 / 中控几十项一起超时
没有显卡(云端、虚拟机):自动检测到软件渲染就进慢速模式,超时放宽 4 倍,3D / 漫游 / 中控只因超时失败的记“⚠ 未验证”(人工看截图),不算失败
交付时
build.py --zip把 HTML、原图、生成脚本、spec、截图打成一个 zip示例户型实测:大平层四室 109 / 109、三层独栋别墅 112 / 112,导出文件 22 / 22 正常;6 套示例户型水电审计(原布置 + 重新一键布置)全部 0 问题
适用范围与局限
- 最适合带尺寸标注的图:彩色户型图、CAD 矢量图纸效果最好;黑底截图能自动定比例、认出大部分墙,但门窗、窗洞处的墙仍要 Agent 按图补。
- 位图尺寸数字识别是兜底:窄段(数字写在刻度外面)常读不出,读不出 / 和量出的长度对不上的段会标出来,要人工补。
cadpair.py是初稿:家具的黑线会配出少量假墙、个别实心块误认成柱,必须配合wallaudit.py对账。- 纯线稿、扫描件、拍歪的照片,自动识别的初稿会很差,主要靠 Agent 根据尺寸标注推算。
- 图上没有任何尺寸时,Agent 会问你要一个已知尺寸,或者按常见尺寸估算并注明。
- 承重墙:图片按颜色 / 厚度判断,CAD 按“涂黑 + 厚度”判断(原始结构图常把所有原墙涂黑),以物业结构图为准。
- 存档自动保存在浏览器本地;换电脑或发给别人时,用设计器里的“导出 → 分享文件”:整个方案(所有楼层、家具含自由造型、吊顶、灯带、水电、管线、批注)、用到的 GLB 模型、每层底图和“我的造型”库都会一起打包。分享文件只带当前方案,「方案管理」里的其他方案要分别导出;「导出方案文件 (.json)」只有方案本身。
- 导出的 DXF 是标准 CAD 图元(线、填充、标注、编组、图块),不含建筑 CAD 插件的自定义实体;揉捏变形过的家具按轮廓多段线导出,不是可整体移动的图块。
- 楼板开洞(楼梯井、挑空)还只能是横平竖直的矩形;斜墙房间的吊顶按 20 mm 网格生成,边缘有肉眼几乎看不出的细小锯齿。
更新记录
2026-11-09:家具揉捏变形(四角点 / 边中点拖拽、贴合斜墙、斜切角度和错位输入、撑满两墙;2D 分片仿射、3D 网格双线性变形,碰撞 / 通道 / DXF 同步;spec
quad);只看某几个回路(回路表点选、淡显 / 隐藏其他回路,2D / 3D / 导出同步);排灯(房间lighting:灯型、横纵间距、离墙距离、居中 / 均分,一键重新排并改挂开关;选中灯显示到墙、到相邻灯的可编辑距离);铺砖任意角度 + 对齐斜墙、靠斜墙自动摆正;8 件新家具(阳台洗衣柜、百叶帘、壁龛、适老扶手、翻板床、保险柜、马桶上方柜、猫砂盆);修正:「入户花园」按楼内有顶的入户门厅处理(不再当露天花园:开关、吊顶、地面、排水出户都对了),门紧挨丁字口时开关沿墙按离门框 150~400 放、不落进衣柜,管井检修门不算挡开关,门洞开在厚墙接薄墙处不报墙面错台;验收 108 / 109、导出 22 / 22、家具 325 件全有 3D 模型2026-11-05:吊顶(平顶 / 边吊 / 回字叠级 / 悬浮 / 铝扣板 / 木饰面,灯槽自动灯带、窗帘盒、石膏线、局部吊顶造型,顶面图注标高);灯带 / 磁吸轨道灯 / 线性灯沿线画;自由造型工作台(任意面上画草图、推拉挖洞、旋转成型、放样、抽壳、布尔、多选整组操作、9 个模板、我的造型库);户外场地(草坪、碎石、铺装、木平台、水景、花境)和 40 多件新家具(中央空调、新风、吸顶灯具、厨卫电器、庭院景观);界面:左右面板收起 / 拖宽、漫游视角面板收起、选中家具家具库自动定位 + 点款式替换、吊顶造型只在顶面图层编辑、鸟瞰时吊顶上的东西随顶面隐藏;水电自检修正:开关不装门后(门把手一侧 → 墙角另一面 → 门扇盖不住处 → 墙另一面)、入户门旁开关贴门放、厨房台面插座补到 4 个、卫生间按房间名换防水插座、网线车道改到离墙 600~700(和强电间距 ≥ 300)、穿承重墙按真实墙体判断(误报 25 处 → 3 处)、强弱电箱出线处不误报、边吊房间中间的灯装在原顶、新增“开关在门后”检查和
elecaudit.mjs逐房间审计;分享文件带上每层底图和“我的造型”库;验收 109 / 109、导出 22 / 222026-11-02:按三次实战(两室两厅双图、AH26110 六层别墅 PDF、黑底 CAD 截图三室两厅 + 核心筒)的问题清单优化:跨平台(公共
browser.mjs、容器--no-sandbox、无显卡慢速验收、下载目录修复、npm 官方源、EXIF 方向摆正);黑底截图(cadshot.py分色 + 自动轴网定比例、analyze.py --wall-color、dimocr.py位图尺寸数字识别);CAD 兜底cadpair.py;三个对账(wallaudit.py全楼墙体对账、specdims/expectDims尺寸链逐刻度对账并列出图纸自相矛盾、窗帘活动区 / 推拉门 / 高柜挡窗 / 楼梯踏步自查);双图对齐dimticks.py+align2.py、furnoverlay --image;closeup.mjs近景、clicktest.mjs点选测试、walktest --floors、build.py墙数比对和--zip;设计器:自动水电(浴室柜插座只放本房间一侧、手写电箱不再重复放、电箱不放公共电梯厅一侧、提示带家具和坐标),栏板洞口默认开到层高且不参与通道检查,小房间(弱电井、空调位)显示名字,spec 批注导入 + 推断承重墙标“待确认”,修复删掉配电箱首段走线后不报下游断电;家具库:stairDogleg双跑扇形转角楼梯、立管、空调外机、百叶、表箱、斜角开放格、模块沙发、飘窗台 /bayInner室内飘窗、摆件、U 形橱柜两侧不等长、无门挂衣区;场地site.grade / soil / lawn自动土层和地坪、地下楼层标签、自由模型按轮廓点选和叠放错开、矮墙不算外墙尺寸;文档:SKILL.md 拆分成总流程 + 各路线文件,新增图例 30 个符号、承重判定规则、开工前待确认清单、云端环境说明;验收 105 / 1052026-10-28:办公 / 培训 / 商业楼层(新户型类别:核心筒、公共卫生间厕位、阶梯培训厅、玻璃幕墙);布置图 DXF 路线(整套 DXF 挑一张还原,块套块、GBK 乱码;家具朝向按图块角度和镜像;按图层认柜 / 吊柜 / 台面 / 窗帘 / 风口);
dxfaudit.py和原图对账(墙、门、家具、尺寸标注逐条比);管线按家装行业做法重排,支持手画、拖改、删除、自动寻路和纠错一键修复;家具横竖改尺寸(拖边 / 拖角 / 输入 / 拖高度);漫游点位标记(开关、插座、小物件,空格开灯,T 显示隐藏)和视高 / 视距 / 视角调节;修复灯多的平面只有前 22 盏灯有光源、很多开关按了不亮;家具库按空间 19 类、9 种风格、一键整套换风格、拖宽左栏、大图浏览;自由模型 17 种造型;验收加--lite/--only/--retry和低优先级,新增“墙被吸歪”“门窗被藏住”两项自查;验收 105 项2026-10-22:水电管线自动排布(强电 / 照明回路、网线、冷热水、排水,参照 GB 50096 / 50311 / 50242 / 50015;回路表、材料清单;拖动改线;3D 管线透视;别墅分层配电和立管);5 类管线分开看、分开导出(PNG / DXF / PDF 每类一页);写实建模(软垫鼓包、被子褶皱、细微纹理凹凸、丝绒 / 清漆)和漫游光影(接触阴影、窗户面光源、反弹光、城市远景);光线追踪出图;画质三档;新增
qa.mjs全功能交付验收。修复:配色切换出现条纹、墙面闪烁和小白点、玻璃底边白点、房间名标签挡住墙和门窗点不中、日照演示后一直是夜景、夜里中控文字看不清、PDF 图签长图名溢出、手机上楼层条挡住按钮、窗口变窄平面跑出屏幕、餐桌模型自带吊灯与水电吊灯重复2026-10-17:智能中控(灯光 / 环境 / 设备 / 扫地机 / 安防,多层 ALL 爆炸视图和楼层切换,每层一台扫地机);独栋别墅(车库电动卷帘门、庭院围墙、车棚、泳池、凉亭、挑空、电梯,别墅家具 30 多件);一键水电重写(按功能区布灯,全屋覆盖检查补筒灯,插座沿墙补齐);门窗、窗帘、灯光、楼层切换改成弹簧动效;晚上一键开灯整栋所有楼层一起亮;修复床板闪烁、楼板多出一块、沙盘眩光、灯光卡片点不动
2026-10-15:整栋楼 / 挑高复式与楼梯:多跑楼梯、扇形转角踏步、国标楼梯画法、扶手碰撞、楼梯两端检查
2026-10-12:CAD 矢量识别、国标 DXF 导出、定制家具参数化
2026-10-09:尺寸精确、自定义铺砖、彩平图、漫游室内光影;沙盘效果图与 12 套配色、真实日照与月夜、家具库扩到 130 件;家电门窗补齐、一键布置水电、3D 可交互
开发:更新设计器模板
设计器源码是一个 TypeScript + Vite + three.js 项目(不在本仓库;布尔挖空用 three-bvh-csg)。改完功能后在项目里执行 npm run skill:sync:打包成单文件并复制到 assets/template.html。
读取预设户型的代码在项目的 src/model/spec.ts(planFromSpec、window.__PRESET__)和 src/app.ts;DXF 导出在 src/export/dxf.ts,其骨架由 scripts/dev/mk_dxf_template.py 生成。



















