# 操作手册

> 铝型材衣柜 **2000 × 2490 × 700 mm**（净高 2610 做到顶），3 格，
> 40×40 欧标铝型材框架。本文是完整操作手册。

**阅读顺序**：`01-方案说明.md`（先看尺寸）→ 本文 → 其他按需。

---

## 0. 当前设计速览

| 项 | 数值 |
|---|---|
| 柜体外形 | **2000 × 2490 × 700** |
| 净高（到顶） | **2610** = 地脚 20 + 柜体 2490 + 收口板 100 |
| 深度 | 700（内空 Z 40~660） |
| 分格 | 叠放区 **613** / 长衣区 **614** / 短衣区 **613** |
| 中间立柱 | **X = 673 / 1327** |
| 型材 | **24 根 / 34.70 m**（布帘版 27 根 / 36.54 m） |
| 板材 | **10 块 / 3.204 ㎡**（木基板 2.943 ㎡ + 收口板 0.260 ㎡） |
| 可调地脚 | **8 个** |

### 高度分区（相对框架底面，实际离地 +20）

| 位置 | 高度 | 说明 |
|---|---|---|
| 底框梁轴 | 40 | |
| 叠放区层板 | **367 / 693 / 1020 / 1347 / 1673** | 均分，间距 ≈327 |
| 顶层层板 | **2000** | 被褥区地板 |
| 长衣区挂衣杆 | **1932** | 净高 1892（离地 1952） |
| 短衣区上杆 / 下杆 | **1932 / 1032** | 净高 上900 / 下992（离地 1952 / 1052） |
| 被褥区 | 450 | **固定值**，不随净高变 |
| 顶框梁轴 | 2450 | |
| 柜体顶面 | 2490 | |
| 收口板 | 2490 ~ 2588 | 与天花留 2mm 打胶 |
| 天花板 | 2610 | |

### 下料

| 件 | 长度 | 数量 |
|---|---|---|
| 前后横梁 | **2000** | 4 |
| **立柱** | **2410** | 8 |
| 左右横梁 + 支撑梁 | **620** | 9 |
| 挂衣杆 | 614 / 613 | 1 / 2 |
| 层板 | **603×610** / **604×610** | 7 / 1 |
| 收口板 | **2000×98** / **656×98** | 1 / 1 |
| 收口板压条 | 2000 / 656 | 各 2 条 |
| 可调地脚 | M8（国产） | 8 |

---

## 1. 三套方案

| | 方案 | 配置 | 场景文件 |
|---|---|---|---|
| ① | **全开放 + 收口板** | 框架 + 层板 + 顶部前/左收口板 + 8 地脚 | `wardrobe.scene` |
| ② | **布帘 + 收口板** | ①+ 每格 1 根帘杆（布料外购） | `wardrobe_curtain.scene` |
| ③ | **布帘 + 全包布** | ②+ 背面/两侧/顶面用布蒙 | `wardrobe_curtain_布包blrt.scene` |

```powershell
python wardrobe_builder.py --variant open                     # ①
python wardrobe_builder.py --variant curtain                  # ②
python wardrobe_builder.py --variant curtain --lining all     # ③
```

> **收口板是基础配置**，三套都带。收口板覆盖哪些边可用 `--top-filler` 改：
> `front` / `back` / `left` / `right` 逗号分隔，`ring` = 四边，`none` = 改回可调顶撑。
> 当前假设**背面 + 右侧靠墙**，所以只封前 + 左。相邻两条板会自动互相让位，不会在四角重叠。

---

## 2. 生成器

```powershell
python wardrobe_builder.py --variant open              # 生成 .scene + 采购清单
python verify_scene.py    --variant open              # 验证
```

### 改尺寸

```powershell
--width 2400        # 外形宽（会按 --bays 自动等分分格，不会出残格）
--bays 2            # 分格数（2 或 3）
--mid 700,1300      # 手动指定中间立柱位置
--ceiling 2680      # 实测净高
--ceiling none      # 关掉顶天立地
--top-filler front  # 收口板只封正面
--lining back,left  # 包布蒙哪几面
```

**自动联动**：改净高会重算立柱净长、收口板高度、层板间距、挂衣杆高度；
改宽度会重算立柱位置。被褥区**恒定 450**，不随净高变。

---

## 3. 验证器

`verify_scene.py` 把生成的 `.scene` 按 MayCAD 的加载逻辑**反解回几何**，逐项断言：

| 段 | 内容 |
|---|---|
| A/B | 文件头、版本、单位 |
| C | 实体数量与类型 |
| D | 型材端点反解（要求误差 **0.000000 mm**） |
| D2 | 配件位置反解 |
| E | 外形尺寸（收口板不计入柜体外形） |
| F | 干涉检查 |
| G | 主流规范区间（层板间距、被褥区、长衣/短衣净高） |
| H | 统计对账 |
| I | 包布尺寸与压条长度 |

> 多套配置（方案 × 净高 × 宽度 × 分格 × 收口边 × 包布面）均已通过。

---

## 4. 顶天立地：为什么用收口板

### 行业惯例

**行业里柜体不做"升降"，只做"找平 + 收口"**：定制衣柜标配可调脚，
调整量只有 10~30mm，作用是**找平**和**防潮**，不是"升降柜体"。

"到顶"的五种主流做法：

| 做法 | 适用条件 | 缝隙处理 |
|---|---|---|
| **收口板**（行业标准） | 通用 | 与天花 **≤5mm 打胶** |
| 直接顶到天花 | 无吊顶 + 误差≤3mm + 层高<2.7m + 精装现房 | 留 2~3mm 打胶 |
| 配合吊顶嵌入式 | 毛坯房，木工与定制配合 | 嵌凹槽 |
| 石膏线绕柜 | 老房、异形顶 | 石膏线遮挡 |
| 留空收纳 | 层高>2.8m、工业风 | 缝隙 + 防尘帘 |

**行业不建议"直接顶到天花"** —— 楼房沉降会把柜顶挤变形，甚至导致柜门卡住。

### 板式柜 vs 铝型材柜

| | 板式定制柜 | 本项目 |
|---|---|---|
| 顶部 | **顶封板**（8~12cm 板条） | 收口板 **或** 可调顶撑 |
| 能否"硬顶" | ❌ 会把顶板顶变形 | ✅ 铝型材刚性好 |
| 可调量 | 10~30mm | **±40mm**（顶撑方案） |

### 两种顶部方案

```powershell
python wardrobe_builder.py --variant open --ceiling 2610                     # 默认：收口板
python wardrobe_builder.py --variant open --ceiling 2610 --top-filler none   # 改回顶撑
```

| | 收口板（当前） | 可调顶撑 |
|---|---|---|
| 顶部预留 | 100mm | 20mm |
| 配件 | **只有 8 地脚** | 8 地脚 + 8 顶撑 |
| 承载 | **不承力，只遮缝** | 顶紧天花板 |
| 适应天花不平 | 现场裁斜边 | 螺纹微调 |
| 风险 | 几乎无 | **顶穿吊顶**（若顶非承重） |

### ⚠️ 三个必须注意的点

1. **收口板要现场裁斜边**。天花不平是常态，别想着整块硬塞。
2. **顶部务必另外用角码固定到墙**。收口板和顶撑**都不抗水平推力**，
   2.5m 高的开放柜重心高，必须防倾倒。
3. **吊顶不能承重**。如果天花是石膏板吊顶，用顶撑必须打穿到楼板或圈梁，
   否则装一两年会把吊顶带塌。**这种情况直接用收口板**。

---

## 5. 支撑与调节

### 支撑落在哪

**8 根立柱全部落地**，每根柱底 1 个可调地脚。俯视看就是 8 个落点：

```
        X=20      X=673    X=1327    X=1980
Z=20 前  ● 左前柱   ● 中1前柱   ● 中2前柱   ● 右前柱
        │         │         │         │
Z=680后  ● 左后柱   ● 中1后柱   ● 中2后柱   ● 右后柱
        └─────────┴─────────┴─────────┘
            613        614        613
```

另有 **5 根支撑梁**（沿深度方向，托挂衣杆兼作横撑）：

| 名称 | X | Y | 托什么 |
|---|---|---|---|
| 长衣区左撑 | 673 | 1932 | 长衣区挂衣杆 |
| 长衣区右撑 | 1327 | 1932 | 长衣区挂衣杆 |
| 短衣区上杆右撑 | 1980 | 1932 | 短衣区上杆 |
| 短衣区下杆左撑 | 1327 | 1032 | 短衣区下杆 |
| 短衣区下杆右撑 | 1980 | 1032 | 短衣区下杆 |

### ⚠️ 底部为什么不能省成 4 个角

4040 型材 I≈10cm⁴、跨度 2720mm 时：

| 底部支撑 | 底梁最大下垂 | 结论 |
|---|---|---|
| 2 个（仅外侧两角） | ≈ 33 mm | ❌ 不可行 |
| **4 个（四角）** | **≈ 30 mm** | ❌ 层板会倾斜 |
| 6 个（四角 + 中1柱） | ≈ 5.3 mm | ⚠️ 勉强，但不对称 |
| **8 个（全部立柱）** | **< 1 mm** | ✅ 推荐 |

角柱在底梁两端、自己落地，底梁只承担**中立柱压下来的部分**（每根约总重 1/6），
作用在跨度中部 —— 简支梁中点受力，下垂 30mm 量级。

> 省这 4 个地脚只省约 ¥20，却要冒 30mm 下垂的风险。想省钱应该**换国产件**而不是减支撑点。

### 可调位置与调节顺序

收口板方案下**只有 8 个可调点**（柱底地脚），顶部靠收口板裁斜边、不调节。

1. **只装 8 个地脚**，把框架立起来（收口板先别装）
2. 调 **4 个角柱**地脚，把框架调平
3. 复核 **4 根中立柱**地脚 —— **刚好吃力即可**，别顶得比角柱高（会顶弯底框）
4. 装层板、挂衣杆、支撑梁
5. 装收口板：现场裁斜边，与天花留 2mm 打中性硅酮胶
6. **顶部用角码固定到墙**
7. 螺钉 1~2 个月复紧一次

---

## 6. 挡灰策略

**正面才是主力，但顶和侧面也要管。**

| 位置 | 面积 | 处理 |
|---|---|---|
| 正面开口 | 1920 × 2410 | 布帘 / 玻璃门 / 开放 |
| 顶面 | 2000 × 700 | **收口板封住四面缝隙**（靠墙时已封闭） |
| 背面 | 2000 × 2490 | 靠墙可不管；否则包布或背板 |
| 两侧 | 700 × 2490 | 外露的一侧包布或侧板 |

判断依据：

1. **背面和右侧靠墙吗**？靠墙 → 顶面那条 100mm 带四面被围住，是封闭空腔，灰进不去
2. **房间灰大吗**？灰大 → 正面用帘或门
3. **预算**？布包 < 板材

```powershell
--lining back,left,right,top   # 全包布（含顶）
--roof                          # 或加 4mm 刚性顶板
--top-filler ring               # 或收口板封一圈
```

---

## 7. 关键坑

| 坑 | 说明 |
|---|---|
| **M14 装不下** | 国产 4040 芯孔 6.8mm 只能攻 M8（10.2mm 攻 M12）。本设计默认 UID 是 M14（MayTec 件），**国内落地改用 M8 可调脚** |
| **顶撑顶穿吊顶** | 轻钢龙骨 + 石膏板**不能顶**。用收口板，或打穿到楼板/圈梁 |
| **顶天立地 ≠ 防倾倒** | 必须另加角码固定到墙 |
| **收口板要补压条** | 收口板 4mm < 槽宽 8mm，两侧各需 1 条压条。MayCAD 会自动生成并计入「铝型材」栏（每块 +2），**采购别漏** |
| **层板必须 ENF 级** | 框架是铝的不代表整件无醛，8 块 16mm 层板才是甲醛来源 |
| **被褥区会随净高变** | 已改为**从顶部反推**，恒定 450。若净高 < 2520 短衣区会挤，验证器会警告 |
| **MayCAD 无窗帘轨道/织物** | 帘杆用 `PROF20-2020` 自制；布料与包布是外购件，只在清单和效果图里体现 |

---

## 8. 在 MayCAD 里手动搭（可选）

> 一般不需要 —— 生成器已经产出 `.scene`。下面是界面里从零搭的步骤。

### 0. 单位
MayCAD 内部长度单位是**厘米**，界面填 mm。注意换算。

### 1. 底框 → 复制到顶框
- 前后梁：长 **2000**，沿 X，Y 在底/顶框轴线上
- 左右梁：长 **620**，沿 Z
- 顶框直接复制底框，抬到柜体顶部

### 2. 立柱（8 根）
- 长 **2410**（= 柜体高 2490 − 2×40），沿 Y
- 4 个角柱 + 中间立柱前后各一对，**X = 673 / 1327**

### 3. 挂衣杆支撑梁（5 根）
- 长 **620**，沿 Z，位置见第 5 节表格

### 4. 挂衣杆（3 根）
- `PROF30-3030L`，长 **614 / 613 / 613**
- 深度 Z=400（离背板留空，免得衣物外露）

### 5. 层板（8 块）
- **603×610 ×7** + **604×610 ×1**，四周留 10mm 安装间隙
- 高度：367 / 693 / 1020 / 1347 / 1673 + 顶层 2000

### 6. 收口板 + 地脚
- 收口板：前 **2000×98**、左 **656×98**，4mm
- 地脚：8 个，柱底

### 7. 校验
用 `测量 (Measure)` 核对：柜体 **2000 / 2490 / 700**，净高 **2610**。

### 8. 导出清单
`文件 → 导出` 或右侧「获取物料清单」。

> ⚠️ MayCAD 载入/编辑后会跑 `postprocess()` 自动生成连接件，
> 并把收口板的压条计入「铝型材」栏（每块 +2）。详见 `06-MayCAD格式.md` 第 10 节。

---

## 9. 效果图怎么看

`效果图.html` 双击用浏览器打开：

- **左上按钮**切换三套方案，按钮上直接标了型材根数
- **蓝色实线**量的是**柜体 2490**，**橙色虚线**量的是**净高 2610** —— 别混
- 滚轮缩放、拖动旋转、双击复位
- 勾选框可单独显示层板 / 覆盖件 / 铝型材 / 尺寸

```powershell
python export_html.py                      # 重新生成
python export_html.py --default lined      # 改默认显示哪套
```

---

## 10. 文件索引

| 文件 | 说明 |
|---|---|
| `01-方案说明.md` | **先看这个** —— 尺寸分解、分格、下料清单 |
| `02-操作手册.md` | 本文 |
| `03-布帘与包布.md` | 帘杆做法、布料用料、布包（软包）做法 |
| `04-环保与材料.md` | 环保评估 + 国标限值 |
| `05-成本与替代.md` | 成本账 + 国产替代 + 螺纹坑 + 采购渠道 |
| `06-MayCAD格式.md` | `.scene` 格式逆向文档 |
| `预算报告.md` / `预算明细.csv` | 预算（由 `export_budget.py` 生成） |
| `wardrobe*.scene` | 场景文件 |
| `采购清单_*.csv` | 下料单 + 五金 + 环保要求 |
| `效果图.html` | 交互式 3D 效果图 |
| `支撑位置图.svg` / `高度调节位置图.svg` | 位置图 |
| `wardrobe_builder.py` | 生成器 |
| `verify_scene.py` | 验证器 |
| `export_*.py` | 效果图 / 位置图 / 预算导出 |

---

## 11. 尚未包含（可选加装）

| 加装 | 说明 |
|---|---|
| 铝框玻璃门 | 生成器支持 `--doors`（MayCAD 目录里有铰链/拉手） |
| 抽屉 / 裤架 / 裤抽 | MayCAD 无实体，需自购 |
| 灯带 | 立柱槽内可走线 |
| 镜子 | 可挂在某扇门内侧 |
| 旋转穿衣镜 | 需另加五金 |
