1+1=10

记记笔记,放松一下...

OpenCAD学习小记(一)

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对话框,能看到它所用的库,很多都很眼熟

freecad

以下四个属于支柱:

  • 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构建。构建时,所依赖的第三库需要就位

compilation

  • https://wiki.freecad.org/Compile_on_Linux
  • https://wiki.freecad.org/Compile_on_Windows

使用

demo

工作台(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 工作台下操作:创建不同的实体,而后进行布尔操作

vs

另外,Part Design 与 Solidworks 在操作上可大致对应:

part design 和 sw

参考

  • 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

CAx