tan's blog

FreeCAD Assembly4 教程 2

本篇教程翻译自 Assembly4 开发者编写的 FreeCAD_Examples,介绍了通过使用 Assembly4 进行 top-down 设计的方法。

翻译遵从原文的 CC0 1.0 Universal 许可证发布。如有翻译错误和改进可以联系我。


教程 2

在本教程中,我们将在单个 FreeCAD 文档中装配三个零件,并在主草图中建立运动动画:

  • 底座被固定并包含两个轴
  • 圆盘中心绕其中一轴装配
  • 摇臂可绕底座的另一轴摆动
  • 圆盘上设有一凸柄并卡入摇臂槽中
  • 所有三个零件和装配体将保存到单个 FreeCAD 文件中

先决条件

假定您已完成 Assembly4 第一部分教程,并且具有使用 FreeCAD 进行设计的经验,特别是使用 PartDesign 和 Sketcher 工作台的经验。

新建文档与零件:

我们从空白的 FreeCAD 文档开始:

  • 新建文档:文件 > 新建 (或者 ctrl-n)
  • 在此文档中新建一个 Assembly4 Model:Assembly > Create a new Model (或者 ctrl+m)
  • 再新建三个零件:Assembly > Create a new Part,并命名为
    • base (底座)
    • disk (圆盘)
    • arm (摇臂)
  • 请注意这三个零件位于 Parts 组中
  • 保存文档并命名为 asm_tuto2.fcstd

成果: 现在文档已经可用于 Assembly4 作业了。

主草图

我们首先创建装配体的功能结构,之后才设计组成装配体的零件。功能结构由草图和基准对象组成并包含在装配体的根目录处,它们的组成位置为实际功能位置,譬如旋转轴、平面、固定点、平移轴等等……

我们在此提出一种装配方法——一种基于 功能 的装配方法而非基于 几何体 的装配方法——这种装配方法基于各零件对于装配体的实际机械功能,而非其几何外形。有意思的是,在本质上,所有这些装配方法其实都是基于功能的装配方法,只是基于几何体的装配方法是在逆向计算出零件的几何特征对于装配体所实现的机械功能而已。换句话说,譬如,零件上有一个——几何 特征意义上的——轴孔用于支撑轴,那是因为零件设计者知道这里将有一个——功能 实现意义上的——旋转功能,而不是因为一些幸运的魔法。

这种基于功能的装配方法也被称作 自顶而下的 设计方法,有别于装配已完成零件的 自底而上的 设计方法。

乍一看,这种基于功能的装配方法——或者说自顶而下的设计方法——可能看起来不如大多数 CAD 软件所实现的基于几何体的装配方法那么直观,但是一旦你开始熟悉这种方法,它会显得更自然,而且表现得更强大:譬如说,你可以为旋转机构定义一个基准轴而无需了解如何实现旋转的具体机械细节,而且你还可以围绕这个基准轴来装配零件。因此,这就提供了一种将具体零件设计拆分给不同设计者进行并行设计的可能,并且还能保证设计出来的所有零件能够正确地组装到一起。

变量

我们将为我们的装配体新建一些变量。首先,创建一个变量来表示圆盘在底座上的旋转角度:

  • 新建一个新变量: Assembly > Add variable
  • 选择值的类型: Float (表示为十进制浮点型)
  • 命名为:Angle_disk
  • 设置默认值为 30.00
  • 单击 OK

用相同方法创建其他两个变量来代表圆盘半径 (R_disk 取值 100.00) 和距枢轴距离 (Dist_pivot 取值 300.00)。

成果: 我们已经在 App::FeaturePython 对象中创建了一些数值变量,称为 Variables (详见 Model 目录树),它们可以表示为 表达式求值引擎 (ExpressionEngine) 中的任意参数,现在文档中包含的变量有:Variables.Angle_diskVariables.Dist_pivot 以及 Variables.R_disk

草图

现在我们将要给我们的装配体创建合适的主草图:

  • 在 model 目录树中选中 Model
  • 新建草图:Assembly > New sketch
  • 命名为 Sketch_master
    • 这将启动草图的附属对话框
  • 作为第一个参考,在 model 目录树中选择 LCS_0 (或者手动输入 LCS_0 字段)
  • 选择附属模式为 Object’s XY
  • 单击 OK

成果: 我们在 Assembly4 Model 中创建了一张空草图并平铺到 X-Y 平面上。现在我们可以在草图上绘图了:

  • Sketch_master 项上右击并选择 Edit sketch
  • 从原点开始绘制第一条直线
    • 这条线代表 disk 的旋转方向
  • 在直线和 X 轴之间创建角度约束
  • 点击输入框边缘的 f(x) 标记将会弹出表达式求值引擎编辑器
  • 输入 Variables.Angle_disk (会有自动补全提示)
  • 单击 OK

请注意: 尺寸颜色已由红色改为橙色 (这取决于你的设置)

成果: 我们已将变量 Angle_disk 绑定到这条线与 X 轴之间的夹角上。

  • 同样的,绑定线长值为 R_disk
    • 线的端点表示滑动于 摇臂 槽的凸柄在 圆盘 上的位置
  • 在线的端点与 X 轴之间添加另一条线
    • 这条线代表 摇臂 的方向
  • 将第二条线在 X 轴上的端点与 Y 轴之间的距离绑定为 Dist_pivot

请注意: 如果 FreeCAD 草图被完全约束,那么线条颜色将从白色变为绿色 (这取决于你的设置)。

  • 关闭草图工作台

成果: 我们的主草图已完成。

请注意: 需重点注意的是,给一个装配体结构建立主草图会有很多种方法,所以建议你先花一些时间去建立一个对后续工作有利的草图,然后再去进行零件的详细形体设计。在我们的例子中,其运动学原理非常简单,所以我们的主草图设计也非常简单。通常来说,任何能简化为一个 2D 几何模型的问题都能用这种方法轻松建模。一些拥有 3D 空间结构的装配体也可以通过一系列的主草图建模,当然,还有一些可能会很难,譬如:六角架。

创建附属 LCS

现在我们将创建两个 LCS 来附属到运动的 圆盘摇臂底座 将被固定到已在装配体文件中存在的 LCS_0 上。这些坐标系统 (类型为 PartDesign::CoordinateSystem) 将以 Assembly4 的方式附属装配零件为装配体。

请注意: 三个 (空的) 零件的默认坐标系统可以用这种方法轻松选取。因此,暂时隐藏所有三个零件将会非常有帮助。当隐藏时,对象在 Model 目录树中的图标将变灰。通常,不需要犹豫是否有必要显示或者隐藏零件:有时,让所有零件显示会更好,而有时,只看到单个对象会更好。

  • 选中 Assembly4 Model 并创建一个新的坐标系统:Assembly -> New Coordinate System
  • 命名为 LCS_disk
    • 这一步会激活附属对话框
  • 选择 Sketch_master 中的原点作为第一参考对象
  • 选择 Sketch_master 中的第一条线作为第二参考对象
  • 选择 Align O-X-Y 作为附属模式
  • 单击 OK

成果: LCS_disk 现在沿 Sketch_master 中的第一条线绑定

我们现在对另一个坐标系统做相同的事,将其命名为 LCS_arm 并附属到在主草图中代表摇臂的线上。

作为零件设计前的最后一次检查,你可以建立主草图动画来确认 LCS 是否确实按预期运动 (详见本教程下一节) 。你也可以改变变量 Dist_pivotR_disk 的值来检查一切是否按照预期运行。最后保存。

成果: 我们现在创建了三个坐标系统,并将其放置到了三个零件应处的位置,且保证各自坐标变换朝向正确:

  • LCS_0 用于 底座
  • LCS_disk 用于 圆盘
  • LCS_arm 用于 摇臂

主草图动画

在进行更进一步操作之前,我们将通过动画来检查草图是否按照预期工作:

  • 单击 Animate Assembly 按钮 (或在菜单寻找 Assembly -> Animate Assembly)
  • 选中变量 Angle_disk
  • 选择 40 到 400 作为 BeginEnd 变量
  • 选择 1 作为 Step 而 0 作为 Sleep
  • 单击 Run

成果: 检查 Sketch_master 中的直线是否按照预期带着 LCS 移动。如果不是,检查哪里出现了问题并修复好它。

零件

现在我们开始设计用于装配的三个零件。为了避免混淆,建议隐藏除正在设计的零件之外的其他零件。

我们将使用 PartDesign 工作台进行几何形体设计。我们假定你已熟悉如何使用 FreeCAD 设计零件,这里不再详述过程方法。

底座部分

  • 隐藏零件 disk (圆盘)arm (摇臂) 与装配体 Model
  • 在 Model 目录树中选中 base (底座)
  • 在 Assembly4 工作台上创建新实体 (Body) (请勿 通过 PartDesign 工作台创建!请通过 Assembly4 工作台在选中零件目录内创建实体。)
  • 在新建的实体上右击并选择 Toggle Active Body
    • 这将跳转到 PartDesign 工作台 (现在才可以使用)
  • 创建下图几何体:
    • 两枢轴间距离绑定为变量 Dist_pivot

成果: 零件 底座 完成

圆盘部分

  • 选中零件 disk (圆盘)
  • 创建新实体并激活编辑
  • 创建下图几何体:
    • 沿 X 轴绑定凸柄到原点距离为 R_disk

成果: 零件 圆盘 完成

摇臂部分

  • 选中零件 arm (摇臂)
  • 创建新实体并激活编辑
  • 创建下图几何体:
    • 设置槽沿 X 轴长度为 R_disk 的两倍
    • 将枢轴孔距原点距离与 Dist_pivot 绑定
  • 转到 Assembly4 工作台
  • 选中零件 arm (摇臂)
  • 新建坐标系统,命名为 LCS_pivot
    • 这个 LCS_pivot 必须放置到零件 摇臂 的根目录 而不是 放置到 Body 的目录中
  • 使用 Object’s X Y Z 模式将 LCS_pivot 附属到零件 摇臂 的源 LCS 上 (在我们的设计中被称作 LCS_1002,这可能在你的使用中不同)
    • 在表达式求值引擎的 AttachmentOffset 面板中将 X 值绑定为 Dist_pivot
  • 单击 OK

成果: 零件 摇臂 完成

保存文档。

装配

现在我们完成了主草图的创建和所有零件的设计工作,可以着手装配了。

因为通常在 Assembly4 中,由装配孔 (App::Link) 链接零件 (App::Part),而不是零件间互相装配——即使这些零件位于同一个文档中——所以,使用同一文档中的零件进行装配与使用外部文档中的零件进行装配处理方式完全相同。实际上,我们可以随意混用这两种方法。

唯一的不同是,因为每个 FreeCAD 文档只能包含一个 Assembly4 Model,所以如果所有部件都在同一个文档中的话只能包含一层装配。这对于大型装配体来说是一个严重的限制。因此,为了编辑嵌套式装配体——即装配体由子装配体装配成,而子装配体又由其子装配体装配成——就需要多个文档。教程 1 中有如何用外部文档零件来实现装配的说明。

装配底座部分

  • 隐藏零件 base (底座)disk (圆盘)arm (摇臂) ,并显示装配体 Model
  • 插入零件 base (底座)
  • 将其 LCS_1 附属到 LCS_0

请注意: 因为 FreeCAD 文档中所有对象都需要有不同的名称,所以我们对零件所插入的链接不能有与源零件相同的名称。FreeCAD 会自动重命名 base 的链接为 base_001。这是也单文档装配体的另一个限制。

装配圆盘部分

  • 为了便于观察,将变量 Angle_disk 值设为 45
  • 插入零件 disk (圆盘)
  • 将其 LCS_1001 附属到 LCS_disk

装配摇臂部分

  • 插入零件 arm (摇臂)
  • 将其 LCS_pivot 附属到 LCS_arm
    • 你可能需要旋转 Z 与 Rot Z 之间的夹角来正确定位摇臂

调整高度

现在我们已经将所有零件附属到各自的坐标系统当中,它们应当已经正确放置和定位。然而,如果你仔细观察会发现它们运动时将会发生碰撞,因为我们没有考虑装配高度。这必须要通过链接的 AttachmentOffset 面板调整属性:

  • 选中实例 arm001
  • 将 AttachmentOffset 面板中 Z 轴位置属性调整到 10

建立装配体动画

这是最后一步:建立装配体动画来检查所有零件是否按照预期运动:

  • 单击 Animate Assembly 按钮 (或者菜单寻找 Assembly -> Animate Assembly)
  • 选中变量 Angle_disk
  • 选择 40 和 400 作为 BeginEnd 的值
  • 选择 4 作为 Step 而 0 作为 Sleep
  • 单击 Run

下载

你可以在此处下载本教程中所介绍的 FreeCAD 文档源文件:asm_tuto2.FCStd

反馈

本教程对您有帮助吗?或者您有什么想要分享的吗?您可以到 FreeCAD 论坛专用板块 提交工单或讨论本教程。您也可以向我们提交您的建议改动。

祝装配愉快!


翻译完成于 2020年3月19日

遵从 CC0 1.0 Universal 许可证发布

2 评论

  1. freecad动画仿真

    还是看不懂

    • tan

      2021年4月6日 在 上午10:58

      Assembly4 并不是 FreeCAD 自带的插件,需要在 工具>插件管理器 中添加,项目地址为 https://github.com/Zolko-123/FreeCAD_Assembly4
      这个插件主要功能是用来支持自顶而下的设计方法,动画功能是在此基础上顺带实现的。这种思路下建立装配和 SolidWorks 之类软件中常见的设计零件然后通过零件间的约束来装配是不同的,你可以看到教程中先用线建立了运动的骨架,然后再在线上绑定零件。
      所以如果你已经完成零件设计并希望通过零件间的几何约束来装配,可以试试其他装配插件;如果你愿意试试建立运动骨架然后在骨架上绑定零件这种方法,可以试试 Assembly4 。
      FreeCAD 相比商业软件还有不少功能上的缺失,易用性也远不如商业软件。目前装配功能的实现依然需要依靠社区的各种插件,所以轮子多而杂。
      希望能够帮助到你 : )

发表回复