You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LightWork3D/docs/superpowers/specs/2026-05-29-face-contact-sna...

65 lines
3.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 面贴合装配辅助设计
## 背景
CAD 用户在 FreeCAD 中摆放导轨、线槽和设备时需要让两个接触面刚好贴合避免穿模或悬空。FreeCAD 原生 `变换` 可以移动旋转对象,但不会自动判断面接触;`Assembly` 工作台可以做装配约束,但对当前 QET 演示流程偏重。
## 目标
`QET模板 -> 3D手动布线` 面板增加一个轻量装配辅助按钮:`贴合到选中面`。
用户先选择目标承载面,再选择要移动对象的接触面,点击按钮后:
- 沿第一个目标面的法向移动第二个对象,使第二个选择面落到目标面的同一平面上。
- 尽量让第二个选择面的法向与第一个选择面的反向对齐。
- 保持第二个对象原来的切向位置,不把对象横向拉到目标面的拾取点。
- 操作完成后恢复当前 QET 工程为活动文档。
- 不写数据库,不改 2D/3D 绑定表,不影响导线任务。
## 适用场景
- 导轨背面贴合机柜安装板。
- 线槽背面或底面贴合机柜安装板。
- 设备背面或卡扣接触面贴合导轨安装面。
## 交互
推荐流程:
1. 在 3D 视图中选择机柜、导轨或线槽上的目标安装面。
2. 点击 `设为贴合目标面`
3. 选择要移动对象上的接触面。
4. 点击 `贴合到选中面`
5. 对同一个目标面连续摆放多个设备时,只重复第 3、4 步。
兼容流程:
1. 同时选择两个面,第一个是目标面,第二个是要移动对象的接触面。
2. 点击 `贴合到选中面`
如果用户只选中了一个对象而没有选中具体面,系统会尝试使用该对象面积最大的平面作为贴合面。这是为了降低机柜板、导轨、线槽这类规则模型的选面难度;复杂设备仍建议精确选择真实安装面。
如果方向不理想,用户可以先用 FreeCAD 旋转视图、隐藏遮挡物或透明化对象来选面。不要为了选面而旋转模型本体。
第一版只接受两个面。多选多个设备、多个面时,系统不能唯一判断哪个对象应该移动、哪个面是目标、是否要同时满足多个约束,因此会直接提示错误。多面贴合属于完整 Assembly 约束求解范围,不放进这个轻量按钮。
第一版不做多约束求解,不自动识别“哪个面是背面”,也不保存永久装配约束。它只执行一次几何位姿调整。
## 错误处理
- 少于两个面:提示用户先选目标面,再选移动对象接触面。
- 多于两个面:提示只能选择两个面。
- 第二个选择对象没有可移动 `Placement`:提示对象不能移动。
- 无法读取面中心或法向:提示请选择有效模型面。
- 已设置目标面后又选中多个移动面:提示只选择一个接触面。
## 测试
- 选择两个面后,移动对象应只沿目标面法向平移,消除法向间距。
- 多选三个或更多面时应报错。
- 已设置目标面后,只选择一个接触面即可贴合。
- 选择内部子零件面时,应移动 QET 设备或载体根对象,而不是只移动内部 Shape。
- 贴合后应重新选中被移动的根对象,保证后续 FreeCAD `变换` 从新坐标开始。
- 只选对象时,可用最大平面作为辅助贴合面。
- 导入类操作或贴合操作后,`App.ActiveDocument` 仍应是当前 QET 工程。