FreeCAD快速开始

前言

FreeCAD是一个三维参数化建模应用程序。它主要用于机械设计,但也适用于其他所有需要精确3D建模和控制模型历史的用途。
FreeCAD从2002年开始开发,提供了大量的功能,虽然功能还有待继续完善,但对于业余爱好者和小型工作室来说也已经足够了。FreeCAD forum社区用户活跃,你可以找到大量的高质量项目示例。如果要在生产中使用FreeCAD,建议看看这个。
像所有的自由软件项目一样,FreeCAD的发展离不开其社区的支持。如果你喜欢,你可以通过各种方式捐赠和帮助FreeCAD,比如写文档和翻译。

另请参见:

安装

首先,下载并安装FreeCAD。你也可以获取源码自己编译。

界面概览

在这里插入图片描述

上图为FreeCAD 0.19的标准UI布局。

  1. 主视图区域:包含不同的选项卡窗口,主要是三维视图
  2. 3D视图:显示文档中的几何对象
  3. 树形视图(组合视图的一部分):显示文档中的对象层级结构和构造历史。它还可以为激活命令显示任务面板。
  4. 属性编辑器(组合视图的一部分):查看和修改选中物体的属性
  5. 选择视图,查看选中对象及其子元素
  6. 报告视图:也叫做输出窗口,输出日志信息
  7. Python控制台:所有命令执行的结果都会输出到这里,并且你也可以在这里输入Python命令
  8. 状态栏:显示信息或者工具提示
  9. 工具栏
  10. Workbench选择器
  11. 标准菜单:这里有程序所有的基础操作。

FreeCAD界面的核心就是区分Workbench。一个Workbench就是一套完成特定工作的工具集,例如:使用网格、绘制二维对象或者绘制受约束的草图。
你可以通过Workbench选择器来更改当前的workbench。你可以自定义每个workbench所包含的工具,添加来自其他workbench的工具,甚至是自己录制的宏。通常我们都是从PartDesign Workbench或者Part Workbench开始工作的。
如果你是第一次打开FreeCAD,会有一个欢迎界面,下图是0.18版本的界面:
在这里插入图片描述

start center可以让你快速的跳转到常用的workbench,打开最近的文件,或者看看FreeCAD又发生了哪些新闻。你可以在首选项中更改默认workbench。

在3D空间中导航

FreeCAD提供了多种不同的导航模式,其中还有一种是触控板模式。下表是默认模式(CAD导航)。在空白区域右击,可以快速切换导航模式。

操作图示说明
选择在这里插入图片描述在对象上点击即可选择,按住 Ctrl 可多选
平移画布在这里插入图片描述按住鼠标中键并拖动
缩放在这里插入图片描述使用鼠标滚轮进行画布缩放
旋转视图在这里插入图片描述先按住中键,再按住左键或者右键进行拖动

认识FreeCAD的第一步

FreeCAD致力于为您创建高精度的3D模型,保持对这些模型的紧密控制,并最终构建出这些模型(通过3D打印、数控加工甚至是建筑工地)。因此,它与为其他目的(例如动画电影或游戏)制作的某些其他 3D 应用程序非常不同。 它的学习曲线可能很陡峭,特别是如果这是您第一次接触 3D 建模。 如果您在使用时遇到困难,FreeCAD 论坛上友好的用户社区或许可以为您解疑答惑。
您将在 FreeCAD 中开始使用的工作台取决于您需要执行的工作类型:如果您要处理机械模型,或者更普遍的任何小型对象,您可能想要尝试 PartDesign Workbench;如果您要专注于 2D 操作,则切换到 Draft Workbench;如果需要约束,则切换到 Sketcher Workbench;如果您想做 BIM,请启动 Arch Workbench; 如果您来自 OpenSCAD 世界,请尝试使用 OpenSCAD Workbench;还有许多社区开发的外部工作台可用。
你可以随时切换Workbench,并且根据需要自定义workbench。

使用PartDesign和Sketcher Workbench

PartDesign Workbench用于构造复杂的模型。它通常是从简单的形状开始,通过不断的添加或者删除一些部分(称为“feature”,特性),直到得到你满意的物件为止。你在建模过程中所应用的所有feature都会被存储在一个单独的tree view中。当然tree view还包含了其他的一些对象。你可以将 PartDesign 对象视为一系列操作,每个操作都应用于前一个操作的结果,形成一个大链。 在树视图中,您会看到最终对象,但您可以展开它并检索所有先前的状态,并更改它们的任何参数,这会自动更新最终对象。
PartDesign 工作台大量使用另一个工作台,即 Sketcher 工作台。 草绘器允许您绘制 2D 形状,这些形状是通过对 2D 形状应用约束来定义的。 例如,您可以绘制一个矩形并通过对其中一条边应用长度约束来设置边的大小。 那么这条边就不能再调整大小了(除非约束被改变)。
使用草绘器制作的那些 2D 形状在 PartDesign 工作台中被大量使用,例如用于创建 3D 体积,或在对象的表面上绘制区域,然后从其主要体积中挖空。 这是典型的 PartDesign 工作流程:

  1. 创建新草图
  2. 绘制一个封闭的形状(确保所有点都已经相连)
  3. 关闭草图
  4. 使用填充工具将草图扩展为 3D 实体
  5. 选择实体的一个面
  6. 创建第二个草图(这次它将绘制在选定的面上)
  7. 画一个封闭的形状
  8. 关闭草图
  9. 在第一个对象上从第二个草图创建一个凹槽

你可以通过上述步骤得到一个类似下图的模型:
在这里插入图片描述

你可以随时更改草图,或者更改填充工具和凹槽工具的参数,这些都将更新最终的模型。

使用Draft 和 Arch Workbench

Draft Workbench 和 Arch Workbench 的行为与上面的其他工作台略有不同,尽管它们遵循相同的规则,这些规则对所有 FreeCAD 都是通用的。 简而言之,虽然 Sketcher 和 PartDesign 主要用于设计单个部件,但 Draft 和 Arch 用于简化处理多个更简单对象时的工作。
Draft Workbench 为您提供的 2D 工具与您在 AutoCAD 等传统 2D CAD 软件中用到的工具有些相似。 然而,2D 绘图不在 FreeCAD 的考虑范围,所以不要指望在这里找到专用应用程序提供的全套工具。 大多数草图工具不仅适用于 2D 平面,而且适用于完整的 3D 空间,并受益于特殊的辅助系统,例如:工作平面和对象捕捉。
Arch Workbench 为 FreeCAD 添加了 BIM 工具,允许您使用参数化对象构建建筑模型。 Arch 工作台广泛依赖于其他模块,例如 Draft 和 Sketcher。 Arch 工作台中也提供了所有的 Draft 工具,并且大多数 Arch 工具都使用了 Draft 辅助系统。
使用Arch and Draft的典型工作流如下:

  1. 使用绘制线工具绘制几条线
  2. 选择每条线,然后按墙工具在每条线上建一堵墙
  3. 通过选择墙壁并按下 Arch Add 工具来连接墙壁
  4. 创建一个地板对象,并从tree view中移动墙壁
  5. 创建一个建筑对象,并从tree view中移动您的地板
  6. 通过单击窗口工具创建一个窗口,在其面板中选择一个预设,然后单击墙的表面
  7. 如有必要,首先通过设置工作平面来添加尺寸,然后使用草图尺寸工具

你可以通过上述步骤得到一个类似下图的模型:
在这里插入图片描述

更多信息请参考教程页。(待翻译)

插件、宏、外部workbench

Freecad 作为一个开源软件,提供了用插件补充其Workbench的可能性。
Addon 是基于工作台补充的开发。任何用户都可以开发他认为缺少的功能,以满足自己或者社区的需要。通过论坛,用户可以在论坛上请求意见、帮助。插件可以免费分发。
有两种类型的插件:

  • 宏:提供新工具或功能的 Python 代码片段。宏通常作为一种简化或自动化绘制或编辑特定对象的任务的方式开始。如果在一个目录中收集了许多这些宏,则整个目录可能会作为一个新的工作台分发。
  • 外部工作台:用 Python 或 C++ 编程的工具集合,它们以一种重要的方式扩展了 FreeCAD。如果工作台得到充分开发并且文档齐全,则它可以作为 FreeCAD 中的基础工作台之一包含在内。在外部工作台下,您将找到现有库的原理和列表。

脚本编写

最后,FreeCAD 最强大的功能之一是脚本环境。 从集成的 Python 控制台(或任何其他外部 Python 脚本),您可以访问 FreeCAD 的几乎任何部分、创建或修改几何、修改 3D 场景中这些对象的表示或访问和修改 FreeCAD 界面。 Python 脚本也可用于宏,它提供了一种创建自定义命令的简单方法。

What’s new

有关功能的详细列表,请参阅发行说明。

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值