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