znlgis 博客

GIS开发与技术分享

第01章:FreeCAD 项目全景与学习路线

1. FreeCAD 是什么

FreeCAD 是一个开源、跨平台、以参数化建模为核心的三维 CAD/CAE/CAM 平台。它的定位不是单一绘图软件,而是一个可扩展的工程建模系统:用户可以用草图、约束、特征、布尔运算和装配关系构建设计;开发者可以用 Python、C++、Qt 与 OpenCASCADE 扩展新的对象、命令、工作台和自动化流程。

结合 FreeCAD 官方仓库可以看到几个关键事实:

  • 项目主页将 FreeCAD 定义为 “Your own 3D Parametric Modeler”,强调开源、参数化、面向现实对象设计。
  • README 明确列出底层技术:OpenCASCADE 几何内核、Coin3D 三维场景、Python API、Qt 图形界面。
  • 源码目录采用核心层与模块层分离:src/App 承载应用数据模型,src/Gui 承载图形界面,src/Base 提供基础设施,src/Mod 收纳各工作台模块。
  • 当前主线通过 CMake 组织构建,顶层 CMakeLists.txt 要求 CMake 3.22.0 及以上,并根据选项启用 GUI、FEM、BIM、VR、测试等能力。

因此,学习 FreeCAD 应同时理解三个层面:

  1. 用户层:如何建模、约束、出图、装配、导入导出、加工、仿真。
  2. 参数化层:文档对象、属性、表达式、依赖图、重计算、命名稳定性。
  3. 开发层:Python 脚本、宏、工作台、命令、FeaturePython、自定义视图、C++ 模块。

2. FreeCAD 的适用场景

FreeCAD 适用于多种工程任务:

  • 机械设计:零件建模、孔/倒角/圆角/筋板/螺纹表达、工程图。
  • 产品原型:参数化外壳、结构件、夹具、3D 打印件。
  • 建筑与 BIM:墙、楼板、结构构件、IFC 数据、建筑模型组织。
  • 二维制图与施工辅助:Draft 工作台可绘制线、圆、尺寸、文字、捕捉和阵列。
  • 数控加工准备:CAM 工作台可创建作业、刀具、路径、后处理。
  • 仿真分析:FEM 工作台组织材料、网格、边界条件、求解器与结果。
  • 自动化建模:Python API 可以批量生成模型、读取参数、导出格式。
  • 二次开发:通过 Python 工作台快速扩展,也可通过 C++ 模块集成高性能算法。

不适合期望 FreeCAD 像商业 CAD 一样隐藏所有复杂度的场景。FreeCAD 的优势在于透明、可脚本化、可扩展;代价是用户需要理解对象树、重计算和工作台之间的边界。

3. 学习路线总览

建议按以下顺序学习:

  1. 安装与界面:先能稳定运行,理解工作台、组合视图、属性、导航、偏好设置。
  2. 草图约束:掌握几何约束和尺寸约束,这是 PartDesign 的基础。
  3. 实体建模:学习 Body、Pad、Pocket、Revolution、Fillet、Chamfer、Pattern。
  4. 参数化设计:使用 Spreadsheet、表达式、命名对象和配置变量。
  5. Part 与布尔建模:理解 B-Rep、形状、布尔、切片、壳体、融合与修复。
  6. 装配与工程图:用 Assembly 组织零部件,用 TechDraw 输出图纸。
  7. 专业工作台:根据方向学习 Draft/BIM/CAM/FEM/Surface/Mesh。
  8. 脚本与宏:用 Python 自动创建对象、修改属性、执行重计算和导出。
  9. 插件与工作台开发:封装命令、界面、图标、任务面板、偏好设置。
  10. 源码架构:理解 App/Gui/Mod/Base 的分层,进一步阅读核心对象模型。

4. 与其他 CAD 软件的差异

FreeCAD 的核心差异在参数化和开放架构:

  • 模型不是一次性几何结果,而是一组有依赖关系的对象;修改上游属性会触发下游重计算。
  • 工作台不是完全隔离的应用,而是围绕同一个文档模型提供不同命令。
  • Python 控制台不是附属工具,而是几乎所有操作都可以被脚本化的入口。
  • 文件格式 FCStd 本质上是包含 XML、BREP 和资源的压缩包,适合版本化理解但不适合直接手写修改。
  • 开源项目的功能演进与社区密切相关,版本之间命令名称、工作台组织和装配能力可能变化,需要关注官方 Release Notes。

5. 本教程的结构

本教程不生成 README,而是按照博客当前布局在 cad/FreeCAD/ 下提供独立章节 Markdown 文件,并在 index.md 中集中导航。章节覆盖用户入门、核心建模、专项工作台、工程输出、脚本自动化和源码开发。

建议读者在学习时采用“读一章、做一个模型、保存一个版本”的方式。FreeCAD 的知识只有在反复重建模型、修改参数、观察依赖图和处理失败特征时才会真正掌握。

6. 资料依据

本教程综合参考 FreeCAD 官方 GitHub 仓库的 README、src 源码结构、src/Mod 工作台列表、顶层 CMake 构建配置、贡献说明和当前发布信息,并结合 FreeCAD 常见使用流程整理为中文教程。官方仓库地址:https://github.com/FreeCAD/FreeCAD