docs: add FreeCAD cabinet assembly guide

dev
Zhaowenlong 4 weeks ago
parent 3f6b07eb37
commit 556d7d6884

@ -0,0 +1,797 @@
# FreeCAD 机柜装配与布线操作文档
本文档说明如何在 LightWork3D / FreeCAD 中,从一个空机柜开始,逐步放置导轨、线槽、电流互感器、小型断路器、接线端子、接地排等设备,并完成端子生成和 3D 布线。
适用范围:
- 机柜内部 3D 装配
- FCStd 设备模板使用
- 导轨、线槽等柜内附件摆放
- 工程端子生成
- 手动布线与保存回写
- 自动布线的基础准备
本文档遵守当前第一版 2D/3D 协同约束:
- 3D 位姿和装配状态以 FreeCAD 文档 `scene.FCStd` 为准。
- 数据库第一版只保留最小绑定,不保存 3D 位姿。
- 有接线点的设备优先使用 `.FCStd` 设备模板。
- STEP 只作为几何输入或交换格式,不作为正式电气语义资产。
- 工程布线连接的是工程端子,不直接连接模板端子。
---
## 1. 先理解几个工作台分别做什么
### 1.1 `Assembly`
用途:机械装配。
用它处理:
- 空机柜作为基准件。
- 导轨安装到机柜背板。
- 线槽安装到导轨上下或柜内侧边。
- 断路器、互感器、端子排、接地排等设备摆放到导轨或安装板上。
- 对齐面、固定距离、移动/旋转设备。
不要用它处理:
- 端子语义。
- 电气连接关系。
- 导线任务回写。
你截图右侧出现的 `Gears` 是齿轮约束任务,适合齿轮运动,不适合机柜装配。遇到这种界面,先点 `Cancel` 退出。
### 1.2 `QET模板`
用途QET/FreeCAD 电气模板、端子和布线。
用它处理:
- 制作设备模板端子。
- 导入 FCStd 设备模板实例。
- 从模板端子生成工程端子。
- 打开 `3D手动布线` 面板。
- 打开 `3D自动布线` 面板。
- 保存并回写。
当前工具栏/菜单中常见命令:
| 命令 | 用途 |
| --- | --- |
| `设备模板端子制作` | 打开模板端子制作面板 |
| `添加模板端子` | 在模板里添加端子 LCS |
| `校验模板端子` | 检查模板端子是否有效 |
| `保存模板为 FCStd` | 保存可复用设备模板 |
| `导入模板实例` | 把 FCStd 设备模板导入当前工程场景 |
| `生成工程端子` | 把模板端子转换成当前工程里的可布线端子 |
| `连接选中端子` | 连接两个已选工程端子 |
| `3D手动布线` | 打开手动布线面板 |
| `3D自动布线` | 打开自动布线面板 |
### 1.3 `Draft`
用途:辅助建模和批量摆放。
推荐用它处理:
- 阵列复制端子片。
- 按固定间距复制相同设备。
- 辅助画线、点、草图路径。
- 对象移动、旋转、捕捉。
例如端子片宽度为 `5.2 mm`,可以用 Draft 阵列按 X 方向复制成端子排。
### 1.4 `Part` / `Part Design`
用途:模型检查和简单几何编辑。
推荐用它处理:
- 检查导入模型。
- 简单切割、合并、测量。
- 给 STEP 几何补一些基础外形。
不建议把日常机柜装配都放在 Part Design 里做。Part Design 更适合制作单个零件,不适合管理整柜装配关系。
---
## 2. 推荐总流程
完整流程建议按下面顺序做:
```text
准备资产
-> 创建或打开工程 scene.FCStd
-> 放置空机柜
-> 放置导轨和线槽
-> 放置设备
-> 为设备生成工程端子
-> 标记线槽/导轨/柜面
-> 手动布线或自动布线
-> 保存并回写
```
关键原则:
- `Assembly` 管“东西放哪儿”。
- `QET模板` 管“哪里能接线”。
- `3D手动布线` / `3D自动布线` 管“线怎么走”。
- `scene.FCStd` 是 3D 状态真相源。
---
## 3. 准备资产
### 3.1 空机柜
空机柜可以是:
- `.FCStd`
- `.step`
- `.stp`
空机柜通常不需要端子 LCS因为它不是电气接线设备。它主要作为装配基准。
建议机柜模型包含:
- 外壳
- 背板或安装板
- 门板
- 安装孔或安装条
- 柜内坐标方向清晰
### 3.2 导轨
导轨也通常不需要端子 LCS。它是安装基准件。
本仓库已有示例资产:
```text
data/examples/qet_cabinet_assets/qet_din_rail.FCStd
data/examples/qet_cabinet_assets/qet_din_rail.step
```
推荐用 `.FCStd`,因为 FreeCAD 打开后对象层级和颜色更清楚。
### 3.3 线槽
线槽通常不接线,但它是布线路径载体。
本仓库已有示例资产:
```text
data/examples/qet_cabinet_assets/qet_wire_duct.FCStd
data/examples/qet_cabinet_assets/qet_wire_duct.step
```
线槽需要在工程里标记为“线槽”,这样自动布线或路径分析才能把它当作走线路径参考。
### 3.4 有接线点的设备
下面这些设备建议做成 `.FCStd` 设备模板:
- 电流互感器
- 小型断路器
- 接线端子
- 接地排
- 继电器
- 电源模块
- PLC 模块
这些设备如果要参与布线,必须有模板端子 LCS。
模板端子至少包含:
| 属性 | 值 |
| --- | --- |
| `Role` | `Terminal` |
| `CanWire` | `true` |
| `QetTemplateSlotName` | 例如 `P1`、`P2`、`A1`、`PE` |
| `QetTerminalLabel` | 显示名称 |
| `QetTerminalType` | `generic`、`power`、`primary`、`ground` 等 |
模板端子禁止写入:
```text
QetProjectUuid
QetElementUuid
QetTerminalUuid
QetInstanceId
```
这些字段属于工程实例,不属于可复用设备模板。
---
## 4. 制作一个可接线设备模板
如果你手里只有 STEP 模型,例如一个小型断路器:
1. 打开 FreeCAD。
2. 导入该 STEP。
3. 切换到 `QET模板` 工作台。
4. 点击 `设备模板端子制作`
5. 在模型上选择真实接线孔、接线螺钉中心或附近的点。
6. 在面板中输入端子名,例如 `L1`、`L2`、`T1`、`T2`。
7. 点击 `添加端子`
8. 重复选择和添加,直到所有需要布线的位置都有端子。
9. 点击 `校验端子`
10. 校验通过后点击 `保存为 FCStd`
保存后的 `.FCStd` 就是正式设备模板。
建议命名:
```text
assets/devices/mini_breaker_2p.FCStd
assets/devices/current_transformer.FCStd
assets/devices/terminal_block_slice.FCStd
assets/devices/ground_bar.FCStd
```
---
## 5. 创建或打开机柜工程场景
### 5.1 从 QET 打开
正式流程建议从 QET 的 `3D视图` 打开 FreeCAD。
QET 会准备:
```text
<project>/.qet_freecad/2d_to_3d.json
<project>/.qet_freecad/scene.FCStd
```
并设置环境变量:
```text
QET_2D_TO_3D_JSON
QET_FREECAD_SCENE_FILE
```
FreeCAD 启动后会导入 2D 侧设备、端子和导线任务。
### 5.2 手动创建场景
如果只是验证装配,也可以手动:
1. FreeCAD 新建文档。
2. 保存为 `scene.FCStd`
3. 手动导入机柜、导轨、线槽和设备。
4. 后续用 `QET模板` 的命令生成工程端子和布线。
手动场景适合验证几何和摆放,不适合做可靠的 2D/3D 回写测试。
---
## 6. 放置空机柜
### 6.1 导入机柜
如果机柜是 STEP
1. 菜单 `文件 -> 导入`
2. 选择机柜 `.step` / `.stp`
3. 导入后保存文档。
如果机柜是 FCStd
1. 菜单 `文件 -> 打开`,或复制对象到当前 `scene.FCStd`
2. 保持机柜作为基准对象。
### 6.2 建议坐标约定
为了后续设备摆放、导轨阵列和布线更稳定,建议统一:
| 轴 | 含义 |
| --- | --- |
| X | 机柜左右方向 |
| Y | 机柜深度方向 |
| Z | 机柜高度方向 |
建议把机柜背板作为 `Y` 方向的基准面,把底部作为 `Z=0` 附近。
### 6.3 固定机柜
`Assembly` 中:
1. 选择机柜对象。
2. 使用固定/锁定基准件的操作。
3. 后续导轨、线槽、设备都相对机柜摆放。
如果只是快速摆放,也可以不用约束,直接在属性面板里设置 `Placement`
---
## 7. 放置导轨
### 7.1 导入导轨
推荐方式一:通过 `3D手动布线` 面板导入。
1. 切换到 `QET模板` 工作台。
2. 点击 `3D手动布线`
3. 在面板中设置 `载体长度`,例如 `600 mm`
4. 点击 `导入导轨`
5. 选择导轨模型,或使用默认示例导轨。
6. 导入后将其移动到机柜背板上。
推荐方式二:手动导入。
1. 菜单 `文件 -> 导入` 或打开 FCStd。
2. 选择 `qet_din_rail.FCStd` 或自己的导轨模型。
3. 调整 `Placement`
### 7.2 设置导轨位置
常见位置:
- 上排导轨:用于断路器、继电器、端子排。
- 中排导轨:用于互感器、接线模块。
- 下排导轨:用于接地排或辅助设备。
可以在属性面板中设置:
```text
Placement.Base.x
Placement.Base.y
Placement.Base.z
```
例如:
```text
X = 0
Y = 背板前方 5 mm
Z = 1200 mm
```
具体值取决于机柜模型尺寸。
### 7.3 使用 Assembly 对齐
如果希望精确装配:
1. 切换到 `Assembly`
2. 选择导轨安装面和机柜背板面。
3. 使用平面对齐或距离约束。
4. 设置导轨离背板的距离。
5. 使用水平/边线对齐,让导轨保持水平。
不要选择 `Gears`。导轨不是运动部件。
---
## 8. 放置线槽
### 8.1 导入线槽
推荐通过 `3D手动布线` 面板:
1. 切换到 `QET模板`
2. 点击 `3D手动布线`
3. 设置 `载体长度`,例如 `600 mm`
4. 点击 `导入线槽`
5. 选择线槽模型,或使用默认示例线槽。
6. 调整线槽位置。
### 8.2 标记线槽
导入或选择线槽后:
1. 在 3D 视图或树中选择线槽对象。
2. 在 `3D手动布线` 面板点击 `标记为线槽`
这一步会让 FreeCADExchange 把它识别为走线载体。
### 8.3 标记柜面
如果希望后续自动布线知道哪些面是柜内障碍或辅助区域:
1. 选择机柜背板或安装板对象。
2. 在 `3D手动布线` 面板点击 `标记为柜面`
### 8.4 调整线槽长度
`3D手动布线` 面板:
1. 输入 `载体长度`
2. 选择线槽或导轨对象。
3. 点击 `应用载体长度`
这适合快速把示例线槽改成现场需要的长度。
---
## 9. 放置设备
### 9.1 推荐导入方式
有端子语义的设备,优先使用:
```text
QET模板 -> 导入模板实例
```
操作:
1. 切换到 `QET模板`
2. 点击 `导入模板实例`
3. 选择设备 `.FCStd` 模板。
4. 导入后在树中会出现设备实例。
5. 移动设备到导轨或安装板上。
如果设备来自 QET 的 2D/3D 数据流QET 打开 3D 视图时会自动导入或更新设备实例。
### 9.2 摆放断路器
1. 导入小型断路器 FCStd 模板。
2. 移动到导轨前方。
3. 用 `Assembly` 对齐到导轨。
4. 多个断路器并排时,使用固定间距复制。
常见间距:
```text
1P 断路器宽度:约 18 mm
2P 断路器宽度:约 36 mm
3P 断路器宽度:约 54 mm
```
### 9.3 摆放接线端子
端子片可按固定间距复制。
例如本仓库生成的端子片:
```text
data/examples/qet_terminal_block/qet_terminal_slice.FCStd
```
宽度为:
```text
5.2 mm
```
操作建议:
1. 导入一个端子片。
2. 移动到导轨上。
3. 用 Draft 阵列或 Link 复制。
4. X 方向间距设为 `5.2 mm`
5. 需要端子排编号时,后续在 QET 2D 侧维护端子 UUID 和端子名称。
### 9.4 摆放电流互感器
电流互感器一般装在安装板或导轨附近。
建议:
1. 使用带 `P1/P2``S1/S2` 模板端子的 FCStd。
2. 放置到一次线穿过的位置。
3. 生成工程端子后,再接二次线。
### 9.5 摆放接地排
接地排建议做成 FCStd 模板。
端子命名可用:
```text
PE1
PE2
PE3
...
```
如果只是视觉资产,可以不加端子。若要接线,必须加端子 LCS。
---
## 10. 生成工程端子
设备放好以后,如果设备模板里有端子 LCS需要生成工程端子。
操作:
1. 切换到 `QET模板`
2. 如果只处理某个设备,先在树中选择该设备组。
3. 点击 `生成工程端子`
4. 查看报告视图或控制台输出。
成功时会看到类似信息:
```text
工程端子生成完成:设备 N 个,新增 X 个,更新 Y 个,本地端子 Z 个,跳过无模板设备 K 个。
```
说明:
- 有 QET 真实 `terminal_uuid` 时,会生成可回写的工程端子。
- 没有 QET 真实 `terminal_uuid` 时,手动生成的是 `local:*` 本地端子。
- 本地端子可以用于 3D 验证,但不能可靠回写到 QET 2D 端子。
工程端子通常在树中位于:
```text
QETExchangeDevices
QETDevice_<element_uuid>
QETTerminals_<element_uuid>
...
```
---
## 11. 手动布线
### 11.1 打开手动布线面板
1. 切换到 `QET模板`
2. 点击 `3D手动布线`
面板中常用按钮:
| 按钮 | 用途 |
| --- | --- |
| `选择导线任务` | 使用 QET 导入的某条导线任务 |
| `刷新任务` | 重新读取导线任务 |
| `端子出线长度` | 设置从端子出来的第一段长度 |
| `导入线槽` | 导入线槽资产 |
| `导入导轨` | 导入导轨资产 |
| `应用载体长度` | 修改选中线槽/导轨长度 |
| `标记为线槽` | 把选中对象标记为线槽 |
| `标记为柜面` | 把选中对象标记为柜面 |
| `标记为导轨` | 把选中对象标记为导轨 |
| `设为起点` | 把选中工程端子作为起点 |
| `添加折点` | 添加一个路径折点 |
| `删除最后折点` | 删除最后一个路径折点 |
| `设为终点并生成` | 选择终点并生成导线 |
| `检查最近导线` | 诊断最近生成的导线 |
| `检查全部导线` | 检查所有导线 |
| `清除草稿` | 清除当前布线草稿 |
| `保存并回写` | 保存 scene.FCStd 并生成回写 JSON |
### 11.2 通过导线任务布线
如果 QET 已导入导线任务:
1. 打开 `3D手动布线` 面板。
2. 在任务列表中选择一条任务。
3. 点击 `选择导线任务`
4. 面板会根据任务记录起点/终点端子。
5. 在 3D 视图中添加必要折点。
6. 点击 `设为终点并生成`
7. 点击 `检查最近导线`
8. 没问题后点击 `保存并回写`
### 11.3 手动选择两个端子布线
如果没有导线任务,或者只是验证:
1. 在树中或 3D 视图选择一个工程端子。
2. 点击 `设为起点`
3. 根据需要选择线槽附近的点或对象。
4. 点击 `添加折点`
5. 重复添加折点,让线沿线槽走。
6. 选择另一个工程端子。
7. 点击 `设为终点并生成`
8. 检查导线。
9. 保存并回写。
注意:必须选择工程端子,不要选择模板端子。
---
## 12. 自动布线
自动布线适合在端子和走线网络准备好后使用。
### 12.1 打开自动布线面板
1. 切换到 `QET模板`
2. 点击 `3D自动布线`
常用按钮:
| 按钮 | 用途 |
| --- | --- |
| `扫描端子/网络` | 统计端子、导线任务、走线路径 |
| `从线槽实体生成中心路径` | 从线槽实体生成可走线路径 |
| `从线槽/草图创建路由路径` | 从选中线槽或草图生成路径 |
| `从选中面创建辅助路由区域` | 生成辅助路由区域 |
| `测试布线选中两个端子` | 对两个选中端子做单条自动布线测试 |
| `按导线任务自动布线全部` | 根据 QET 导线任务批量布线 |
| `清除自动布线` | 删除自动生成导线 |
| `清除走线路径` | 删除路由载体 |
| `保存` | 保存文档和回写结果 |
### 12.2 自动布线前置条件
自动布线前建议先满足:
1. 设备已经摆放到位。
2. 工程端子已经生成。
3. 线槽已经导入并标记。
4. 已从线槽生成中心路径。
5. QET 导线任务存在,或手动选中了两个工程端子。
### 12.3 生成线槽中心路径
1. 选择线槽对象。
2. 打开 `3D自动布线` 面板。
3. 点击 `从线槽实体生成中心路径`
4. 点击 `扫描端子/网络`
如果扫描结果显示有 carrier / segment / node说明走线网络已建立。
### 12.4 批量自动布线
1. 确认 QET 已导入导线任务。
2. 点击 `扫描端子/网络`
3. 点击 `按导线任务自动布线全部`
4. 查看状态中的 routed、collision_warnings、missing_terminals。
5. 若有 missing terminals说明某些 2D 端子没有对应工程端子。
6. 保存。
---
## 13. 保存和回写
### 13.1 保存 FreeCAD 文档
装配和布线后必须保存:
```text
scene.FCStd
```
因为当前第一版 3D 位姿、装配状态、线几何都以 FreeCAD 文档为准。
### 13.2 回写给 QET
`3D手动布线` 面板中点击:
```text
保存并回写
```
或在自动布线面板点击:
```text
保存
```
FreeCADExchange 会生成 3D -> 2D 的回写结果。
第一版回写重点是最小绑定和导线结果,不把完整 3D 位姿写回数据库。
---
## 14. 推荐实际操作顺序示例
下面是从空机柜开始的一个典型操作:
1. 从 QET 点击 `3D视图` 打开 FreeCAD。
2. 保存或确认当前场景为 `scene.FCStd`
3. 导入空机柜。
4. 切到 `Assembly`,固定空机柜。
5. 切到 `QET模板 -> 3D手动布线`
6. 输入导轨长度,点击 `导入导轨`
7. 移动导轨到机柜背板。
8. 选择导轨,点击 `标记为导轨`
9. 输入线槽长度,点击 `导入线槽`
10. 移动线槽到导轨上方或下方。
11. 选择线槽,点击 `标记为线槽`
12. 用 `QET模板 -> 导入模板实例` 导入断路器、互感器、端子排等 FCStd 模板。
13. 用 `Assembly``Placement` 把设备摆到导轨上。
14. 点击 `QET模板 -> 生成工程端子`
15. 打开 `3D手动布线`
16. 选择导线任务,或手动选起点端子。
17. 沿线槽添加折点。
18. 选择终点端子并生成导线。
19. 点击 `检查最近导线``检查全部导线`
20. 点击 `保存并回写`
---
## 15. 常见问题
### 15.1 为什么设备导入后没有端子?
常见原因:
- 设备不是 FCStd 模板。
- 模板里没有 LCS 端子。
- LCS 没有 `Role="Terminal"`
- LCS 没有 `CanWire=true`
- 没有点击 `生成工程端子`
处理:
1. 打开设备模板。
2. 使用 `设备模板端子制作` 添加端子。
3. 校验端子。
4. 保存为 FCStd。
5. 回到工程场景重新导入或更新设备。
6. 点击 `生成工程端子`
### 15.2 为什么不能布线?
常见原因:
- 选中的是普通几何,不是工程端子。
- 选中的是模板端子,不是工程端子。
- 起点或终点没有 `CanWire=true`
- 导线任务里的 `terminal_uuid` 在 3D 场景里找不到。
处理:
1. 在树中找到 `QETTerminals_*` 分组。
2. 选择其中的工程端子。
3. 再执行 `设为起点` / `设为终点并生成`
### 15.3 为什么自动布线找不到路径?
常见原因:
- 没有导入线槽。
- 线槽没有标记为线槽。
- 没有从线槽实体生成中心路径。
- 端子离线槽太远,缺少过渡路径。
处理:
1. 选择线槽,点击 `标记为线槽`
2. 打开 `3D自动布线`
3. 点击 `从线槽实体生成中心路径`
4. 点击 `扫描端子/网络`
5. 再尝试自动布线。
### 15.4 为什么保存后 QET 看不到 3D 位姿?
这是当前第一版设计决定的。
第一版不把 3D 位姿写入数据库。3D 位姿、装配状态和导线几何保存在:
```text
scene.FCStd
```
QET 侧只依赖最小绑定字段找到对应设备和端子。
### 15.5 当前截图里的 `Gears` 应该怎么处理?
这是 Assembly 的齿轮约束任务,不适合机柜装配。
处理:
1. 点击右侧任务面板的 `Cancel`
2. 回到正常选择状态。
3. 机柜装配使用固定、平面对齐、距离、同轴/共线等约束。
4. 如果只是摆放,直接编辑 `Placement` 更快。
---
## 16. 推荐使用习惯
1. 先粗摆,再精确约束。
2. 常用设备都整理成 FCStd 模板。
3. 有接线点的设备一定补模板端子。
4. 导轨、线槽、机柜可作为纯几何资产。
5. 端子排优先用单片端子复制,不要每次重建。
6. 每完成一段装配就保存一次 `scene.FCStd`
7. 布线前先生成工程端子。
8. 自动布线前先建立线槽中心路径。
9. 不要手动改工程绑定 UUID。
10. 不要依赖旧 3D 场景表保存位姿。
---
## 17. 一句话总结
机柜装配用 `Assembly` 把设备放准;端子语义用 `QET模板` 写进 FCStd 模板;工程中点击 `生成工程端子` 后,再用 `3D手动布线``3D自动布线` 连接工程端子;最终保存的是 `scene.FCStd`,它是 3D 装配和布线状态的真相源。
Loading…
Cancel
Save