znlgis 博客

GIS开发与技术分享 — GDAL · GeoServer · PostGIS · QGIS · OpenLayers · Cesium · FreeCAD · NPOI

第08章:装配设计 Assembly

1. 装配的目标

装配设计用于组织多个零件的空间关系。单个零件解决”形状是什么”,装配解决”零件之间如何定位、连接、运动和替换”。

从 FreeCAD 1.1.0 起,Assembly 工作台从第三方插件升格为核心工作台,内置在官方安装包中,无需额外安装。工作台采用 Joint 约束系统,提供固定约束、旋转关节、圆柱关节、滑动关节、球关节、距离约束、平面贴合、角度约束等约束类型,取代旧版 A2plus 等的独立装配方案。

装配常见任务:

  • 将多个 Body 或外部文件组成产品。
  • 定义零件之间的约束或连接关系。
  • 检查干涉、间隙和运动范围。
  • 组织零件坐标系和层级。
  • 为工程图、BOM 和导出准备结构。

2. Assembly 工作台界面

切换到 Assembly 工作台后,界面主要包含以下区域:

  • 工具栏:提供创建装配、插入零部件、各类型 Joint 约束、干涉检测等按钮。
  • 装配浏览器(Assembly Explorer):树视图面板,显示装配层级结构——装配根节点、子装配、零部件列表和对应的约束关系。
  • 3D 视图:标准三维视图区,约束操作在此完成。

创建装配文档的方法:

  1. 通过菜单栏 Assembly → 创建装配,或在 Assembly 工具栏点击”创建装配”按钮。
  2. 文档中会出现一个 Assembly 容器对象,作为装配的根节点。

向装配中插入零部件有两种方式:

  • 从当前文档插入:点击”插入零部件”按钮,在弹出的对话框中勾选当前文档中的 Body 对象,确认后零部件即添加到装配中。
  • 从外部文件插入:点击”插入零部件”按钮,在对话框中选择”浏览文件”,支持 FreeCAD 原生格式(.FCStd)和 STEP、IGES 等通用交换格式。外部零件以链接方式引用,修改源文件后装配会自动更新。

装配浏览器的使用要点:

  • 右键点击零部件可进行隐藏/显示、删除、编辑等操作。
  • 在浏览器中选中零部件,其关联的约束会高亮显示,便于排查约束关系。
  • 双击约束节点可编辑约束参数(偏移距离、角度值、运动范围等)。
  • 拖拽零部件可调整其在装配层级中的位置,用于建立子装配分组。

3. 装配前的零件准备

高质量装配从零件建模开始:

  • 每个零件有清晰原点和主基准。
  • 安装孔、轴线、接口面位置稳定。
  • 参数命名一致。
  • 文件名、对象 Label 和版本清晰。
  • 避免在零件中保留大量无关草图和临时对象。

如果零件原点随意,装配时需要大量补偿 Placement,后续维护困难。

4. 约束类型与操作

Assembly 工作台使用 Joint(关节约束)系统来定义零件间的空间关系。添加约束的一般流程为:按住 Ctrl 依次选中两个零件上的目标几何元素(面、边、轴、点)→ 点击对应约束按钮 → 在弹出的任务面板中调整参数 → 点击确定。

设计时要避免过约束——一个零件应有足够约束来定位,但不要重复限定同一自由度。固定基准件后再逐个装入其他零件,是避免约束冲突的基本原则。

Fixed Joint(固定约束)

将零件完全固定,消除其所有六个自由度。第一个插入装配的零件通常需要添加 Fixed Joint 作为装配基准,否则整个装配缺少定位锚点。

  • 操作:选中零件上的任意面或边 → 点击 Fixed Joint → 确认。零件被锁定在当前空间位置,不会被其他约束推动。

Planar Joint(平面贴合)

将两个平面对齐贴合。约束两平面共面(Z 轴同向),保留平面内的平移自由度和绕法向的旋转自由度。常用于底板与立板的安装面贴合。

  • 操作:按住 Ctrl 选中第一个零件的底面和第二个零件的顶面 → 点击 Planar Joint → 在面板中可设置”偏移距离”(Offset),正值为拉开,负值为压入。

Revolute Joint(旋转关节)

实现轴同心 + 面共面,保留一个绕轴的旋转自由度,用于铰链、轴承、门轴等连接。由两个约束组成:两轴同心 + 两参考面共面。

  • 操作:按住 Ctrl 选中第一零件的圆柱面(或圆形边)和第二零件的圆柱面(或圆形边)→ 点击 Revolute Joint → 系统自动检测轴心对齐。可在面板中设置旋转角度和角度范围。

Cylindrical Joint(圆柱关节)

两轴同心,允许沿轴向滑动和绕轴旋转,共两个自由度。用于活塞杆与缸体、滑动轴套等场景。

  • 操作:按住 Ctrl 选中两零件的圆柱面 → 点击 Cylindrical Joint → 可设置轴向移动范围和旋转角度范围。

Distance Joint(距离约束)

保持两个元素之间固定的距离值,不限制方向。适合孔距定位、零件间隔控制。

  • 操作:按住 Ctrl 选中两零件的面(或边/点)→ 点击 Distance Joint → 输入距离值。距离可以是正数(沿法向正方向)或负数。

Angle Joint(角度约束)

保持两个平面或轴线之间固定的夹角。适合加强筋的倾斜角度、支撑架的斜撑定位。

  • 操作:按住 Ctrl 选中两零件的平面(或边线)→ 点击 Angle Joint → 输入角度值(单位:度)。

其他约束类型

  • Slider Joint(滑动关节):两零件沿一条轴直线滑动,禁止旋转。操作方式类似 Cylindrical Joint,但锁定旋转自由度,仅保留一个轴向平移。用于导轨、抽屉滑轨等。
  • Ball Joint(球关节):两点重合,允许三个旋转自由度。选中两零件的顶点或球面中心点 → 点击 Ball Joint。用于球头连杆、万向节等。

5. 组织方式

常见装配组织方式:

  • 单文件多 Body:适合小型产品和教学案例。
  • 主装配引用外部零件:适合真实项目,便于分工和复用。Assembly 工作台对外部零件的引用以链接方式管理,修改源文件后装配自动更新。
  • Std Part 层级:在单个文件内用于坐标层级和子系统分组。
  • Assembly 容器:Assembly 工作台的核心对象,承载零部件链接和约束关系。

项目越大,越应该使用清晰的文件结构,例如 parts/assemblies/drawings/exports/

6. Top-down 与 Bottom-up

两种常见装配设计方法:

  • Bottom-up:先建零件,再装配。适合标准件和已有零件组合。
  • Top-down:先定义总体骨架、接口和空间,再派生零件。适合产品开发。

FreeCAD 中 Top-down 可借助 Spreadsheet、Master Sketch、ShapeBinder 和外部引用实现,但需要严格控制引用方向,避免循环依赖。

7. 干涉与间隙检查

装配完成后应检查:

  • 零件是否相互穿透。
  • 运动范围内是否碰撞。
  • 螺栓、垫圈、螺母是否有足够空间。
  • 装配工具是否可达。
  • 加工和安装公差是否考虑。

Assembly 工作台内置干涉检测工具:在工具栏点击”干涉检测”按钮,选择两个或多个零部件,工具会计算并高亮显示重叠区域。对于运动机构,可拖动关节的角度/位移滑块,在运动范围内分段检查碰撞。

此外,FreeCAD 还可通过布尔 Common、剖切视图、透明显示、测量工具辅助检查。

8. 标准件管理

标准件不建议每次手工建模。可采用:

  • 建立本地标准件库。
  • 使用参数化螺栓、螺母、轴承模型。
  • 从供应商下载 STEP 后转换和清理。
  • 用统一命名记录规格、材料和标准号。

标准件模型应适度简化。过于精细的螺纹和倒角会拖慢装配重计算和图形显示。

9. 装配导出

装配可导出为 STEP、3MF、STL 或图纸。注意:

  • STEP 保留精确几何,适合协作和制造。
  • STL 只保留网格,适合 3D 打印预览。
  • 导出前确认可见对象和选择对象。
  • 外部链接零件应全部可解析。
  • 对外共享前清理隐藏实验对象。

导出 STEP 时,在菜单中选择 Assembly → 导出装配为 STEP,可选择导出所有零件或仅导出选中零部件。导出后的 STEP 文件在第三方 CAD 软件中打开时,各零件保持独立实体,装配结构被保留。

10. 装配实践案例

以”电机安装支架装配”为例,完整演示 Assembly 工作台的操作流程。

零件组成:底板(base_plate)、立板(vertical_plate)、加强筋(rib)、螺栓(M8×20,4 个)。

步骤 1:创建装配文档

新建 FreeCAD 文档,切换到 Assembly 工作台。点击工具栏”创建装配”按钮(或菜单 Assembly → 创建装配),文档树中出现 Assembly 节点。保存文件为 motor_bracket_asm.FCStd

步骤 2:插入底板并添加 Fixed Joint

点击”插入零部件”,选择底板(base_plate)所在的文件或当前文档中的 Body。底板插入后,按住 Ctrl 在 3D 视图中选中底板的任意一个面,点击工具栏 Fixed Joint 按钮(锁形图标),在弹出的面板中确认。底板即成为装配基准,位置锁定。

步骤 3:插入立板,使用 Planar Joint + Distance Joint 定位

插入立板(vertical_plate)。按住 Ctrl 选中底板的顶面(大平面)和立板的底面,点击 Planar Joint,偏移量设为 0(完全贴合)。

定位水平方向:按住 Ctrl 选中底板侧边和立板侧边,点击 Distance Joint,输入距离值(例如 20 mm),将立板定位在底板的指定位置。此时立板被充分约束。

步骤 4:插入加强筋,使用 Planar Joint + Angle Joint 固定

插入加强筋(rib)。按住 Ctrl 选中加强筋的一个侧面和底板的顶面,点击 Planar Joint。按住 Ctrl 选中加强筋的斜面(与立板接触的面)和立板的侧面,点击 Angle Joint,输入角度 0°(两面平行贴合)。如需偏移,可在 Planar Joint 的面板中设置 Offset 值。

步骤 5:插入螺栓(外部 STEP 文件),使用 Cylindrical Joint + Planar Joint

4 个螺栓从外部 STEP 文件导入。点击”插入零部件”→ 浏览文件,选择螺栓的 STEP 文件。将第一个螺栓移到安装孔附近。

按住 Ctrl 选中螺栓的圆柱面和底板上安装孔的圆柱面,点击 Cylindrical Joint(轴同心)。按住 Ctrl 选中螺栓头底面和立板外表面,点击 Planar Joint,设置偏移使螺栓头与立板表面贴合。重复操作插入其余 3 个螺栓。

步骤 6:干涉检查

点击工具栏”干涉检测”按钮,在弹出的对话框中按住 Ctrl 选中底板、立板、加强筋和 4 个螺栓,点击”计算”按钮。工具列出所有干涉体积。如有干涉区域(如螺栓直径大于孔径),在列表中点击对应结果,3D 视图中干涉区域以红色高亮显示。根据结果调整孔径或螺栓规格。

步骤 7:导出装配体为 STEP

菜单选择 Assembly → 导出装配为 STEP,命名文件 motor_bracket_asm.step。导出时可选择是否包含隐藏零件。在另一台 CAD 软件中导入验证,确认装配结构完整。

11. 常见问题

约束冲突如何诊断

如果约束面板中某条约束以红色边框标记,或在状态栏提示”Solver failed(求解失败)”,说明存在约束冲突。在装配浏览器中逐条检查约束的几何引用——常见原因包括:重复约束了同一自由度、引用几何在模型修改后失效、零件被两个互相矛盾的约束定位。解决方法是逐条停用约束(右键 → 禁用),定位到冲突约束后删除或修改。

外部文件更新后装配不同步

Assembly 工作台对外部零件采用链接引用。如果修改了外部零件文件,重新打开装配文件时,FreeCAD 会提示”外部文件已变更,是否更新”。点击”更新”即可同步。如果未弹出提示,可在装配浏览器中右键零部件 → 更新链接,手动触发同步。

避免约束冗余

约束冗余是指用过多约束去限定同一自由度——例如已经用 Planar Joint 贴合了两个面,再用额外的 Fixed Joint 锁定同一零件,或者距离约束与角度约束产生矛盾。一条经验法则:每添加一个零件后,检查该零件是否还能在期望之外的方向移动;如不能移动且约束数量超出必要值,就存在冗余。

大型装配体性能建议

当装配体包含几十个以上零件时,可在菜单 视图 → 显示模式 中选择”简易表示”(Simplified representation),降低图形负载。对于暂不编辑的零部件,右键 → “冻结”可将其排除在重计算之外。标准件(螺栓、垫圈)使用简化模型(去除螺纹和倒角)能显著提升性能。