除了标注对象类型(如注释,网格和零件对象)之外,FreeCAD还提供了构建100%python脚本对象(称为Python功能)的惊人可能性。这些对象的行为与任何其他FreeCAD对象完全相同,并在文件保存/加载时自动保存和恢复。
必须了解一个特性,这些对象使用python的json模块保存在FreeCAD FcStd文件中。该模块将python对象转换为字符串,允许将其添加到保存的文件中。在加载时,json模块使用该字符串重新创建原始对象,前提是它可以访问创建该对象的源代码。这意味着如果保存这样的自定义对象并在不存在生成该对象的python代码的机器上打开它,则不会重新创建该对象。如果将这些对象分发给其他人,则需要分发创建它的python脚本。
Python功能遵循与所有FreeCAD功能相同的规则:它们分为App和GUI部分。应用程序部分Document对象定义了对象的几何形状,而GUI部分View Provider Object定义了如何在屏幕上绘制对象。与任何其他FreeCAD功能一样,View Provider Object仅在您自己的GUI中运行FreeCAD时可用。有几个属性和方法可用于构建对象。属性必须是FreeCAD提供的任何预定义属性类型,并且将显示在属性视图窗口中,以便用户可以编辑它们。这样,FeaturePython对象就是真正完全参数化的。您可以单独定义Object及其ViewObject的属性。
提示:在以前的版本中,我们使用了Python的cPickle模块。但是,该模块执行任意代码,从而导致安全问题。因此,我们转向Python的json模块。
基本的例子
可以在src / Mod / TemplatePyMod / FeaturePython.py文件中找到以下示例,以及其他几个示例:
```
aaa
```