FreeCAD 是一款开源的三维建模软件,主要用于参数化建模和工程设计。
历史
Cas.CADE 是一个商业软件开发框架,包含了一个几何建模内核(或称 CAD 内核)。
- 2000年,Cas.CADE框架以开源许可证发布,并更名为 OpenCASCADE。这一开源化使得开发一款开源的 3D CAD 软件成为可能,不然,从零开始编写一个 CAD 内核工作量将极为庞大。
- 2001年1月,FreeCAD 项目启动,它由从事 Cas.CADE 项目的 Jürgen Riegel 开发。
- 2005年,FreeCAD 只用不再用OpenCasCade的文档框架, 只用其CAD内核。
- 2007年,切换到 Qt4
- 2009年4月,版本0.7发布,它是第一个包含草稿模块的版本。零件模块提供了简单的 CSG 工作流程。
- 2011年5月,版本0.11发布,引入了新的零件设计工作台,其中包括 Pad、Pocket、Fillet 和 Chamfer 等工具
- 2012年1月,版本0.12发布,具有更完整的 Sketcher 工作台。
- 2014年7月,版本0.14发布,用PySide取代了PyQt,FreeCAD完全支持LGPL协议(FreeCAD is now fully LGPL)。
- 2024年11月,FreeCAD 1.0 发布
源码?
巨人肩膀(第三方库)
打开About对话框,能看到它所用的库,很多都很眼熟
以下四个属于支柱:
- Open CASCADE ( CAD 内核)
- Coin3D(与 Open Inventor 兼容API的3D库)
- Qt(GUI框架)
- Python(脚本语言)
Python和Qt,用在核心和几乎所有模块中。FreeCAD创建和管理所有的实体几何,采用了OpenCasCade;而管理3D视图,采用了coin3D。
代码结构
FreeCAD代码主要采用C++编程,但是重度依赖Python。FreeCAD的功能里,非常大的部分都提供相应的Python包装。FreeCAD的核心哲学之一,就是对任何C++开发的新属性,都要给出Python接口。
FreeCAD的几乎所有功能都分成了两部分,称为App和Gui。
源代码的基本文件夹结构如下:
- App:包含FreeCAD的控制台模式应用。它定义了基本结构,它也为文档对象定义基础类。这些类被各个模块继承,用于创建各自的类。
- Base:包含FreeCAD里到处都用得到的核心功能性东西:3D向量,单位,矩阵,位置,等等。
- Gui:包含FreeCAD在GUI模式下的应用。它定义3D视图,也包含很多工具和函数,被工作台调用,用来与接口和3D视图互动。它为视图提供者定义基础类。
- Doc:包含一个文件,从FreeCAD的wiki生成的Qt帮助文件,是一个大全。
- Mod:包含所有的模块。它们本身又进一步分割为App和Gui(除了python模块,它们并不总是清晰地遵从那条约定)。
构建
FreeCAD 使用 cmake构建。构建时,所依赖的第三库需要就位
- https://wiki.freecad.org/Compile_on_Linux
- https://wiki.freecad.org/Compile_on_Windows
使用
工作台(Workbench)
FreeCAD 与许多现代设计应用程序(例如 Revit 或 CATIA)一样,基于 工作台(Workbench) 的概念。
工作台可以被看作是为完成特定任务而特别分组的一组工具。
当从一个工作台切换到另一个工作台时,界面上可用的工具会发生变化。工具栏、命令栏以及界面中的其他部分会切换到新工作台的配置,但场景中的内容不会改变。例如,可以用 Sketcher 工作台 开始绘制 2D 图形,然后使用 Part Design工作台 进一步处理这些图形。
工作台名称 | 功能描述 | 适用场景 |
---|---|---|
Std Base | 提供通用命令和工具(如文件操作、视图控制),适用于所有工作台。 | 基础操作 |
Assembly 工作台 | 用于创建和求解机械装配体,支持装配约束和运动模拟。 | 机械设计、产品开发 |
BIM 工作台 | 用于建筑设计和 BIM 流程,结合 Arch 工作台和之前的外部 BIM 插件。 | 建筑设计、工程建设 |
CAM 工作台 | 生成 G-Code 指令,用于数控加工(CNC)。之前称为 Path 工作台。 | 制造业、数控加工 |
Draft 工作台 | 提供 2D 几何绘制和基本的 2D/3D CAD 操作工具。 | 建筑设计、2D 制图 |
FEM 工作台 | 提供有限元分析(FEA)工具,用于应力分析、热传导分析等。 | 工程仿真、结构分析 |
Inspection 工作台 | 提供几何形状检查工具,目前处于早期开发阶段。 | 几何验证、质量检查 |
Material 工作台 | 管理材料系统,定义和分配材料到模型,并可视化材料属性。 | 工程设计、材料分析 |
Mesh 工作台 | 用于处理三角网格模型(如 STL/OBJ),支持修复和优化网格。 | 3D 打印准备、模型修复 |
OpenSCAD 工作台 | 提供与 OpenSCAD 的互操作功能,支持代码生成几何体和修复模型历史。 | 程序化建模、参数化设计 |
Part 工作台 | 提供几何体原件操作和布尔运算工具,用于基础 3D 建模。 | 基础建模 |
Part Design 工作台 | 基于草图的参数化零件建模,支持拉伸、切割、倒角等特征操作。 | 零件设计、参数化建模 |
Points 工作台 | 用于导入和处理点云数据,并基于点云生成几何体。 | 3D 扫描后处理 |
Sketcher 工作台 | 创建几何约束草图,支持参数化设计的基础构建工具。 | 零件设计、草图绘制 |
Spreadsheet 工作台 | 创建和操作电子表格数据,支持引用表格值进行参数化建模。 | 参数化设计、数据管理 |
Surface 工作台 | 提供曲面创建和修改工具,支持复杂曲面建模。 | 自由曲面设计、高级建模 |
TechDraw 工作台 | 从 3D 模型生成技术图纸,支持 2D 投影视图、剖视图及标注。 | 产品文档、工程图纸输出 |
Test Framework 工作台 | 为 FreeCAD 开发者提供调试和单元测试工具,验证功能和修复的可靠性。 | FreeCAD 开发和调试 |
Part 与 Part Design
打开FreeCAD,首次看到这两个东西时,还挺困惑的
历史
- FreeCAD 最初设计为使用构造实体几何(Constructive Solid Geometry,CSG)方法进行参数化操作【 Part 工作台】。
- 后来,它通过 Part Design 工作台 引入了特征编辑(Feature Editing)方法。例如通过 Pad(拉伸) 和 Pocket(切割) 等操作逐步构建零件。
CSG 与 BRep
不同于Part工作台使用使用CSG建模,Part Design 工作台使用 BRep(Boundary Representation,边界表示) 来表示几何体。FreeCAD 的几何内核基于 OpenCASCADE,它本身是一个支持 BRep 表示的强大几何建模内核。
- CSG(Constructive Solid Geometry):Part 工作台中支持 CSG 方法,使用原始几何体(例如立方体、球体)通过布尔运算构建模型。
- BRep:Part Design 工作台则更偏向于基于 BRep 的逐步构建和特征编辑,支持更复杂的几何操作和细节调整。
操作对比
下图是 两种工作台的下的操作方式对比:
- 左侧 Part Design工作台下操作:始终基于一个实体进行特征编辑操作
- 右侧 Part 工作台下操作:创建不同的实体,而后进行布尔操作
另外,Part Design 与 Solidworks 在操作上可大致对应:
参考
- https://github.com/FreeCAD/FreeCAD
- https://wiki.freecad.org/Getting_started
- https://freecad.github.io/DevelopersHandbook/
- https://github.com/qingfengxia/FreeCAD_Mod_Dev_Guide
- https://en.wikipedia.org/wiki/FreeCAD
- https://wiki.freecad.org/History
- https://wiki.freecad.org/PySide