FreeCAD Scripting Basics
1. python解释器和python help
-
提供类浏览器窗口,通过类似
App.
,就可以查看所有的类、属性、方法。 -
print dir()
将列出当前在FreeCAD中加载的所有模块,print dir(App)
可以列出App模块的所有内容。
-
在FreeCAD帮助菜单中,您将找到标有“自动python模块文件”的条目,该条目将打开一个浏览器窗口,其中包含FreeCAD解释器可用的所有Python模块的完整实时生成文档,包括Python和FreeCAD内置模块,系统安装的模块和FreeCAD附加模块。
-
Built-in FreeCAD Modules: 由于FreeCAD设计为在没有图形用户界面(GUI)的情况下运行,几乎所有功能都分为两组:
核心功能——名为“App”,GUI功能——名为“Gui”
。因此,我们的两个主要的FreeCAD内置模块
称为App和Gui
。这两个模块也可以从解释器外部的脚本访问
,分别名称为“FreeCAD”和“FreeCADGui”
。 -
在
App模块
中,您将找到与应用程序本身相关的所有内容,例如打开或关闭文件的方法,以及对文档的方法,例如设置活动文档或列出其内容。 -
在
Gui模块
中,您将找到用于访问和管理Gui元素的工具,例如工作台及其工具栏
,更有趣的是,可以找到所有FreeCAD内容的图形表示
。
2. Built-in FreeCAD Modules中的App objects、Gui objects、document objects
- 正如我们所说,在FreeCAD中,
core 和representation
之间的一切都是分开的,这也包括3D对象。您可以通过App模块
访问对象的定义属性(在FreeCAD中称为要素
),并通过Gui模块
更改它们在屏幕上的表示方式
。例如,多维数据集具有定义属性
(如宽度,长度,高度
),存储在App对象
中。以及存储在相应Gui对象
中的表示属性
(如面颜色、绘图模式
)。 - 对于文档中的
每个App对象,都存在相应的Gui对象
。事实上,文档本身同时具有App和Gui对象。这仅在使用其完整界面运行FreeCAD时才有效
。在命令行版本中不存在GUI
,因此只有App对象可用。每次将App对象标记为“recomputed()”
时(例如,当其中一个参数发生更改时),都会重新生成对象的Gui部分
,可能直接对Gui对象进行的更改可能会丢失。
>>> myObject = App.ActiveDocument.getObject("box")
>>> myObject.Length
10 mm
>>> App.ActiveDocument.box.Length
10 mm
- 在FreeCAD中,您的所有工作都在文档中。文档包含几何图形,可以保存到文件中,可以同时打开多个文档。该
文档
与内部包含的几何图形一样,也具有App和Gui对象
。App对象
包含您的实际几何定义
,而Gui对象
包含文档的不同视图
。可以打开多个窗口,每个窗口都以不同的缩放系数或视角查看您的工作。这些视图都是文档Gui对象的一部分。
3. 使用其他模块
- FreeCAD和FreeCADGui模块单独负责在FreeCAD文档中
创建和管理对象
。它们实际上并不执行任何操作,例如创建或修改几何体
。因为几何体可以是几种类型,因此它由其他模块管理,每个模块负责管理某种几何类型。例如,Part Module使用OpenCascade内核,因此能够创建和操作B-rep类型的几何体
。该Mesh Module 能够建立和修改网格对象
。FreeCAD能够处理各种对象类型,这些对象类型可以在同一文档中共存,并且将来可以轻松添加新类型。 - 多维数据集存储在myMesh对象的Mesh属性中,它将返回错误类型的错误。因为
这些属性只存储某种类型
,myMesh的Mesh属性中,只能保存使用Mesh模块创建的内容。
>>> myObj = FreeCAD.ActiveDocument.getObject("box") #查询对象类型
>>> print myObj.TypeId
Part::Box
>>> print myObj.isDerivedFrom("Part::Feature") # 查询某个对象是否来自其中一个基础,比如Part::Feature
True
深入学习链接:
Part scripting——Topological data scripting
Mesh Scripting
Draft API
Category:API——所有模块的API