FreeCAD 乐高积木

产品设计最初是商业术语,但在3D世界中,它通常意味着对具有3D打印或更一般地由机器(例如3D打印机或CNC机器)制造的想法进行建模。

在3D中打印对象时,最重要的是对象是实体。因为它们将成为真实的,坚固的物体,这是显而易见的。当然,没有什么能阻止它们在里面空洞。但是你总是需要清楚地知道材料内部的哪个点,以及哪个点在外面,因为3D打印机或CNC机器需要确切地知道什么是材料和什么不是。因此,在FreeCAD中,PartDesign Workbench是构建此类部件的完美工具,因为它始终会照顾您的对象保持坚固和可构建。

为了说明PartDesign Workbench的工作原理,让我们为这款着名的Lego模型进行建模:

运动乐高01.jpg

乐高积木的酷炫之处在于,尺寸很容易在互联网上获得,至少对于标准件而言。这些非常容易在3D打印机上进行建模和打印,并且有点耐心(3D打印通常需要大量调整和微调),您可以制作完全兼容的部件并完美地点击原始乐高积木。在下面的例子中,我们将制作比原件大1.5倍的作品。

我们现在将专门使用SketcherPartDesign工具。由于Sketcher Workbench中的所有工具也包含在Part Design Workbench中,我们可以保留Part Design,我们不需要在两者之间来回切换。

零件设计对象完全基于草图。Sketch是一个2D对象,由线性段(线,圆弧或椭圆弧)和约束组成。这些约束可以应用于线性段或其端点或中心点,并将强制几何采用某些规则。例如,您可以在线段上放置垂直约束以强制它保持垂直,或者在端点上放置位置(锁定)约束以禁止它移动。当草图具有确切数量的约束时,禁止草图的任何点再次移动,我们将讨论完全约束的草图。当存在冗余约束时,可以在不允许移动几何体的情况下移除它,将其称为过度约束。应该避免这种情况,如果出现这种情况,FreeCAD会通知您。

草图具有编辑模式,可以更改其几何和约束。当你与编辑完成,退出编辑模式,速写表现得像任何其他FreeCAD对象,并且可以用作所有零件设计工具积木,而且在其他工作台,如部分拱门。该工作台草案也有一个工具,将对象转换为素描草稿,反之亦然。

  • 让我们首先建模一个立方体形状,它将成为我们乐高积木的基础。稍后我们将雕刻内部,并在其上添加8个点。因此,让我们通过制作一个矩形草图然后挤出来开始:
  • 切换到PartDesign Workbench
  • 单击“ 新建草图”按钮。将出现一个对话框,询问您想要在哪里放置草图,选择XY平面,即“地面”平面。将创建草图并立即切换到编辑模式,并且将旋转视图以正交查看草图。Sketcher NewSketch.png
  • 现在我们可以通过选择矩形工具并单击2个角点来绘制矩形。您可以将这两个点放在任何位置,因为它们的正确位置将在下一步中设置。草绘器CreateRectangle.png
  • 您会注意到我们的矩形中已经自动添加了一些约束:垂直线段已经接收到垂直约束,水平线条约束为水平约束,每个角落都是一个点对点约束,将这些线段粘合在一起。您可以尝试通过使用鼠标拖动线来移动矩形,所有几何体都将遵守约束条件。

运动乐高02.jpg

  • 现在,我们再添加三个约束:
    • 选择一个垂直线段并添加垂直距离约束。它的尺寸为23.7毫米。草绘器ConstrainDistanceY.png
    • 选择其中一个水平线段并添加水平距离约束。使它47.7毫米。草绘器ConstrainDistanceX.png
    • 最后,选择一个角点,然后选择原点(红轴和绿轴交叉处的点),然后添加一个重合约束。然后矩形将跳转到原点,草图将变为绿色,这意味着它现在已完全受约束。你可以尝试移动它的线或点,什么都不会移动。草绘器ConstrainCoincident.png

运动乐高03.jpg

请注意,最后一个点对点约束并非绝对必要。您永远不会被迫使用完全约束的草图。但是,如果我们打算用3D打印这个块,则需要将我们的块保持在原点附近(这将是打印头可以移动的空间的中心)。通过添加该约束,我们确保我们的作品将始终“锚定”到该原点。

  • 我们的基本草图现已准备就绪,我们可以通过按任务面板顶部的关闭按钮离开编辑模式,或者只需按退出键即可。如果稍后需要,我们可以通过双击树视图中的草图随时重新进入编辑模式。
  • 让我们使用Pad工具挤出它,并给它14.4mm的距离。其他选项可以保留其默认值:PartDesign Pad.png

运动乐高04.jpg

的行为非常像挤出,我们在前面的章节中使用的工具。但是,有一些不同之处,主要是垫不能移动。它永远附在它的草图上。如果要更改打击垫的位置,则必须移动基本草图。在目前的情况下,我们希望确保什么都不会失去位置,这是一个额外的安全措施。

  • 我们现在将使用Pocket工具雕刻块的内部,Pocket工具是Part Cut的PartDesign版本。为了制作口袋,我们将在块的底面创建一个草图,用于移除块的一部分。PartDesign Pocket.png
  • 选择底面后,按“ 新建草图”按钮。Sketcher NewSketch.png
  • 在脸上画一个矩形。

运动乐高05.jpg

  • 我们现在将相对于底面约束矩形。为此,我们需要使用外部几何工具“导入”面的某些边缘。在底面的两条垂直线上使用此工具:Sketcher External.png

运动乐高06.jpg

您会注意到此工具只能添加基面的边。创建选定面的草图时,会在该面与草图之间创建关系,这对于进一步操作非常重要。您可以随后使用“ 地图草图”工具将草图重新映射到另一个面。 Sketcher MapSketch.png

  • 外部几何体不是“真实的”,当我们离开编辑模式时它将被隐藏。但我们可以用它来设置约束。放置以下4个约束:
    • 选择矩形的左上角和导入线的顶点,并添加1.8mm 的水平距离约束草绘器ConstrainDistanceX.png
    • 再次选择矩形的左上角和导入线的顶点,并添加1.8mm 的垂直距离约束草绘器ConstrainDistanceY.png
    • 选择矩形的右下角和右侧导入线的底点,并添加1.8mm 的水平距离约束草绘器ConstrainDistanceX.png
    • 再次选择矩形的右下角和右侧导入线的底点,并添加1.8mm 的垂直距离约束草绘器ConstrainDistanceY.png

运动乐高07.jpg

  • 离开编辑模式,我们现在可以执行口袋操作:选择草图后,按Pocket按钮。给它一个12.6毫米的长度,这将使我们的垫的上表面厚度为1.8毫米(记住,我们的垫的总高度是14.4毫米)。PartDesign Pocket.png

运动乐高08.jpg

  • 我们现在将攻击顶面上的8个点。要做到这一点,因为它们是相同特征的重复,我们将使用Part Design Workbench 的方便的线性图案工具,它允许模拟一次并重复形状。PartDesign LinearPattern.png
  • 首先选择块的顶面
  • 创建一个新草图Sketcher NewSketch.png
  • 创建两个圆圈Sketcher Circle.png
  • 对于每个圆,选择它并为每个圆添加3.6毫米的半径约束草绘器ConstrainRadius.png
  • 使用“ 外部几何图形”工具导入基准面的左边缘。Sketcher External.png
  • 在每个圆的中心点和导入边的角点之间放置两个垂直约束和两个6mm的水平约束,因此每个圆的中心距离面的边界6mm:

运动乐高09.jpg

  • 请注意,当您锁定草图中所有内容的位置和尺寸时,它会再次受到完全约束。这样可以确保您的安全。您现在可以更改第一个草图,之后我们所做的一切都会保持紧张。
  • 离开编辑模式,选择这个新草图,并创建一个2.7毫米的PartDesign Pad.png

运动乐高10.jpg

  • 请注意,与之前的口袋一样,由于我们使用基块的顶面作为此最新草图的基础,因此我们对此草图执行的任何PartDesign操作都将正确构建在基本形状之上:两个点是它们不是独立的物体,而是直接从我们的砖上挤出来的。这是使用Part Design Workbench的巨大优势,只要您始终在前一个步骤之上构建一个步骤,您实际上正在构建一个最终的实体对象。
  • 我们现在可以复制两个点,所以我们得到八个。选择我们刚创建的最新Pad。
  • 线性图案按钮。PartDesign LinearPattern.png
  • 在“水平草图轴”方向上给它36mm的长度(这是我们希望我们的副本适合的总“跨度”),并使其出现4次:

运动乐高11.jpg

  • 再一次,看到这不仅仅是一个对象的重复,它是我们形状的*特征*已被复制,最终对象仍然只是一个实体对象。
  • 现在让我们研究填充我们在底面上创建的空隙的三个“管”。我们有几种可能性:创建一个带有三个圆圈的草图,将其填充然后将其装入口袋三次,或者在另一个内部创建一个带有一个圆圈的基础草图并将其填充以形成完整的管道,甚至是其他组合。与FreeCAD一样,有很多方法可以实现相同的结果。有时一种方式不会按照我们想要的方式运作,我们必须尝试其他方式。在这里,我们将采取最安全的方法,一步一步做事。
  • 选择我们之前在块内雕刻的空心空间底部的面。
  • 创建一个新草图,添加一个半径为4.8825mm的圆,导入面的左边框,并将其垂直和水平约束在距离面的上角10.2mm处:

运动乐高12.jpg

  • 离开编辑模式,并以12.6mm的距离填充此草图
  • 从最后一个垫创建一个线性图案,给它一个24毫米的长度和3次出现。我们现在有三个填充管填充空心空间:

运动乐高13.jpg

  • 现在让我们来做最后的漏洞吧。选择我们三个“引脚”中第一个的圆形面
  • 创建一个新草图,导入我们的面的圆形边框,创建一个半径约束为3.6mm的圆,并在导入的圆的中心和我们的新圆之间添加点约束点。我们现在有一个完美的中心圆,并再次完全受限:草绘器ConstrainCoincident.png

运动乐高14.jpg

  • 离开编辑模式,并从此草图创建一个口袋,长度为12.6毫米
  • 从这个口袋创建一个线性图案,长度为24毫米,出现3次。这是最后一步,我们的乐高现在已经完成了,所以我们可以给它一个漂亮的颜色来纪念我们的胜利!

运动乐高15.jpg

您会注意到我们的建模历史(树视图中显示的内容)已经变得很长。这很宝贵,因为我们所做的每一步都可以在以后改变。将这个模型适用于另一种砖,例如一个2x2点,而不是2x4,这将是一块蛋糕,我们只需要改变几个维度和线性模式中出现的次数。我们可以轻松地创造原始乐高游戏中不存在的更大的棋子。

但是我们也可以想要摆脱历史,例如,如果我们要用这块砖模拟城堡,我们不希望在我们的文件中重复这整个历史500次。

有两种简单的方法可以摆脱历史,一种是使用Part Workbench中Create simple copy工具,它将创建一个不再依赖历史记录的作品副本(之后可以删除整个历史记录) ),另一种方法是将该块导出为STEP文件并重新导入。

组装

但两个世界中最好的也存在,这就是Assembly2 Workbench,一个可以从FreeCAD-addons存储库安装的插件。这个Workbench被命名为“2”,因为还有一个正在开发的官方内置Assembly Workbench,尚未准备就绪。但是,Assembly2 Workbench已经很好地构造了程序集,并且还具有一些对象到对象约束,您可以使用这些约束来约束一个对象相对于另一个对象的位置。但是,在下面的示例中,使用“ 草稿移动”和“ 草稿旋转”比使用Assembly2约束更快更容易地定位块。 草稿Move.png Draft Rotate.png

  • 保存文件,就像现在一样
  • 安装Assembly2 Workbench并重新启动FreeCAD
  • 创建一个新的空文档
  • 切换到Assembly2工作台
  • 按下从另一个FreeCAD文档按钮导入零件
  • 选择我们上面保存的文件
  • 最后一块将在当前文档中导入。Assembly2工作台将自动确定我们文件中需要使用的最终部分是什么,并且新对象保持链接到文件。如果我们返回并修改第一个文件的内容,我们可以按下更新部件导入到组件按钮以更新这些部分。
  • 通过多次使用从另一个FreeCAD文档按钮导入零件,移动和旋转零件(使用草图工具或通过操纵它们的放置属性),我们可以快速创建一个小装配:

运动乐高16.jpg

下载

阅读更多

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Module developer’s guide to FreeCAD source code by Qingfeng Xia http://www.iesensor.com • 2015-09-18 version 0.1 for FreeCAD version 0.16-dev • 2016-09-18 version 0.2 for FreeCAD version 0.17-dev License of this book This ebook is licensed the same as FreeCAD document license CC-BY 3.0 http://creativecommons.org/licenses/by/3.0/Contents 1 FreeCAD overview and architecture 7 1.1 Introduction to FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Key features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Software architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.1 Key software libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.2 Mixed python and c++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.3 GPL code will not be included into installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 How 3D model are renderred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.1 Selection of 3D visualization libarary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.2 Discussion of 3D rendering library selection on FreeCAD Forum . . . . . . . . . . . . . . . . . . . . . 8 1.5 Roadmap of FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Keep updated with main components: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 C++11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3 Pyside 2 project for Qt 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Organisation of FreeCAD source code 11 2.1 Build system for FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 Analysis of src/cMake/SMesh.cMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 List of files and folders in FreeCAD source folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 List of modules in FreeCAD Mod folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Learning path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5 Learning OpenInventor/Coin3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.1 OpenInventor in FreeCAD’s ViewProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.2 Important classes in OpenInventor/Coin3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.3 Window System integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.4 Pivy: Coin3D ’s Python wrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3 Base, App and Main module 19 3.1 List of header files in Base folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1 Frequently included headers files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Correct way of using Sequencer in try-catch block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.3 String enconding utf8 and conversion into wchar_t QString . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Type, BaseClass, PyObjectBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 Type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 src/Base/BaseClass.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.3 src/Base/PyObjectBase.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.4 src/Base/Persistence.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.5 GeoFeature: Base class of all geometric document objects . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Unit scheme for physial quantity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.1 src/Base/Unit.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.2 src/Base/Quantity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 List of header files in App folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5 Property framewrok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.1 Naming of property and PropertyEditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.2 src/App/PropertyStandard.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.3 PropertyEnumeration, see src/App/Enumeration.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.4 Geometry related property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.5 File related property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值