发烧友中心
如果您作为资深用户想了解如何定制和扩展 FreeCAD, 那您就来对地方了。
FreeCAD 可以用 Python 代码扩展,这些代码可以直接在 Python 控制台中执行,也可以在启动时从模块加载,因此不需要重新编译 FreeCAD 程序,即可对 FreeCAD 进行修改。例如,可以:
- 创建并修改几何体:可以创建一种全新的对象类型,或通过调整现有类型来创建一种新类型。
- 创建自定义工具和命令:添加自己的工具集来运行你的代码。
- 修改界面:创建工具栏以放置你的工具,或创建特殊的窗口、面板或界面,用于与这些工具交互。
- 修改场景图表示:FreeCAD 在生成几何体和在屏幕上显示几何体时,使用独立的处理过程。你可以完全访问场景内容的显示方式,因此可以修改该表示、与其交互,或为其添加自定义行为。还可以添加自定义屏幕部件,例如信息显示、拖动控件、锚点或临时实体。
这些页面还远没有成熟。如果你没找到你要找的信息,或者你在别的地方发现了有用的信息,而我们没有链接在这里,那为什么不自己添加进来?同时,请在论坛留下你的意见。
定制 FreeCAD
在 FreeCAD 里写脚本
常规
通则
- 脚本和宏 —— 列出相关的 Wiki 页面
- 介绍 Python —— 在页面底端还有其他 Python 教程
- FreeCAD 脚本教程 —— 在 FreeCAD 中用 Python 写脚本的简略教程
- FreeCAD 脚本基础 —— 嗯,这是基础
- Gui 命令 —— 向 GUI 添加定制的命令
- 在 FreeCAD 里使用混合单位
- 对 Python 代码进行性能分析
- 调试 Python 代码
- Python 开发环境 —— FreeCAD 内置的简易 Python 开发环境
模块
在 FreeCAD 中,功能被划分为多个模块,每个模块负责处理特定的数据类型和应用。FreeCAD 有内置模块和扩展模块(插件)。安装了插件模块之后,可以像使用内置模块一样方便地使用它们。下文所述的是默认模块,FreeCAD 的每一个安装包都包含这些模块。
使用网格(Mesh)
使用零件(Part)
- 零件模块:如何在 FreeCAD 中使用开源 CASCADE 技术的工具和体系。
- 拓扑数据脚本:怎样与零件模块交互。
- PythonOCC:怎样释放开源 CASCADE 的全部能量。
- 网格到零件:转换对象类型。
访问 Coin 场景图
- Coin/Inventor 的场景图:FreeCAD 的场景表示的工作原理。
- Pivy:如何访问和修改场景图。
控制 Qt 界面
- PySide:如何访问接口并修改其内容。
- 在另一个 Qt 应用里,通过 PyQt, 来使用 FreeCAD 的 GUI.
参数对象类工作
- 脚本化对象:如何创建 100% 由 Python 脚本编写的对象。
- 带附件的脚本化对象:如何使脚本化对象可附加到其他对象上。
- 脚本化对象保存属性:如何使用
dumps和loads保存并恢复代理类的属性。 - 脚本化对象迁移:如何将旧的脚本化对象迁移到新类中。
示例
- 代码片段:一些 FreeCAD 的 Python 代码片段,可作为编写脚本的参考素材。
- 线条绘制函数:如何构建一个简单的绘制线条工具。
- 对话框创建:如何使用 Qt Designer 构建对话框并在 FreeCAD 中使用它们。
- 嵌入 FreeCAD:如何在其他应用程序中将 FreeCAD 作为 Python 模块导入。
- 草图工作台:为 FreeCAD 添加基本的二维绘图功能,这一模块完全由 Python 编写,是学习自定义模块编写的良好示例。
- FreeCAD 向量数学库:提供一组便捷函数,用于操作 FreeCAD 向量。该库也包含在草图模块中。
API 函数
FreeCAD 完整的 API 文档放在 https://www.freecad.org/api/ 中。它既有 C++ 也有 Python 的 API,还没有完全格式化好。如果想找只含 Python 的代码,可能要费一番功夫。更便于浏览的版本在这里。注意,它可能并不完整,因为它是人工更新的。要找更精确信息的话,直接在 FreeCAD 的 Python 控制台里浏览相应模块吧。
高级修改
- 启动和配置:启动和命令行选项。
- 在 Windows 上安装:使用 Windows 安装器。
- 在 Windows 上编译 FreeCAD,在 Linux 上编译 FreeCAD
- 品牌化:对 FreeCAD 的源代码作一些简单的变更,以改变 FreeCAD 的一些方面。
- 额外的 Python 模块:用这些强大的模块,来扩展 FreeCAD 的 Python 解释器。
Python 教程
这些是不错的通用教程,并非专为 FreeCAD 撰写,但如果你完全没接触过 Python, 它们可能对你有益处。
Python
- 官方 Python 教程 - 发现 Python 之旅的完全指南。
- 非程序员的 Python 教程 - 一本很棒的 Wikibook
- 为新手写的 Python - 一份大型指南,涵盖了方方面面的基础内容。
PySide ——怎样通过 Python 创建和管理 FreeCAD 的 Qt 用户交互界面。
- PySide 教程:一个适用于所有平台的教程,通过很多例子,展示 PySide 的用法。
- PySide/PyQt 教程:一个 PySide 和 PyQt 教程,通俗易懂,附有示例。
- PySide 文档:来自于 Qt 项目,由 Qt 项目的作者撰写。
- 在 PySide 中使用 QtCreator:同样来自于 Qt 项目。
- PySide 参考:详解 PySide 和 Qt 的各种小细节,一个可靠的参考源。
- PySide 代码片段:一个支持搜索的 PySide 代码片段数据库。
下面两个参考源,专用于 PyQt(不是 PySide),但它们可能给了一些有用的信息:
- 基础 PyQt 教程:一个基于 Linux 的简短教程,解释了怎样使用 PyQt 和 Qt Designer.
- 用 Python 编程 Qt 应用:一个更深入的教程,涵盖了用 Qt 和 Python 工作的所有方面。
Pivy - 怎样与 FreeCAD 的 3D 场景交互
- Pivy - 将动态脚本语言嵌入场景图库:详细解释 Pivy 的论文
- Python 高级 3D 图形编程:PyCon 2004 上的 Pivy 示例
- 将 Pivy 引入 Studierstube (镜像):一篇论文,不是严格意义上的教程,但很好地展示了 Pivy 的工作原理(需要学术账户)
社区项目
在社区入口,你会找到其它基于 FreeCAD 的项目,它们由 FreeCAD 用户社区运行。如果你正开始一个新的 FreeCAD 项目,一定要登记上去。如果你愿意帮助 FreeCAD,我们列出了你可以做的事情。
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub