Chapter 15 Python
FreeCAD 中 Python 无处不在。很多的用户图形界面工具,甚至整个工作台都是用 Python 写成的。你不必成为程序员,也能欣赏这是多么美妙、多么强大的事情。就请你自己叩开这扇通往神奇力量的大门吧。
你在图形界面操练各种任务时,FreeCAD 实际上都在执行一行行的 Python 代码。打开 Python 控制台和报告窗口,你就可以看到这些代码,了解到大幕背后在发生着什么。
15.1 打开 Python 控制台和报告窗口
Python 控制台能让你直接输入 Python 命令。报告窗口显示错误和警告信息,这对查找错我原因非常有价值。
例如,如果我们切换到零件工作台,创建一个长方体,我们就在 Python 控制台中看到如下内容。
>>> App.ActiveDocument.addObject("Part::Box","Box")
>>> App.ActiveDocument.ActiveObject.Label = "Cube"
>>> App.ActiveDocument.recompute()
>>> Gui.SendMsgToActiveView("ViewFit")
>>>
我们不用关心 Python 的具体语法,也能确切推测到发生了什么。首先这里加入了一个“Part::Box”对象,接着改变它的标签为“立方体/Cube”,然后重新计算了文档。最后,告诉激活的视图做适应屏幕的缩放。
你可以手工把这些命令输入控制台,结果将是一样的。
把下面的命令敲入控制台,改变 Box 的命名。
App.ActiveDocument.ActiveObject.Label = "MyCube"
随着敲入代码,你会发现控制台会“自动补全”。当你在某个对象后面敲入英文句点,它会提出建议,帮你探索这个对象有什么属性,有什么方法函数可以调用。
属性保存关于对象的数据,方法是可以对该对象可以进行的操作。方法函数可能很复杂,用好它需要一些 Python 的知识,那超出了本书的范畴。然而某些对象的属性却很有意思,即使对新手来说也很有用。
例如,在 3D 窗口中可见的对象通常有“形状/Shape”属性。形状本身也有一些属性,没有显示在 GUI 的任何地方。例如“质量中心/CenterOfMass”,就包含了对象质量中心的坐标信息。
在图 15.3 中有一个不规则形状的 body。如果我想加一个孔,在那里能把它吊平,我可以用 Python 控制台找到它的质心,接着把一个圆柱放在那里,然后把它从机体上减除,这样就挖了一个孔。
>>> App.ActiveDocument.Body.Shape.CenterOfMass
Vector (-5.567385239996649, 5.059464335346136, 1.5)
15.2 能从灯泡模型上得到什么信息?
Body 对象对应于灯泡的玻璃部分。我们通过 Python 控制台找到它的体积。
App.ActiveDocument.Body.Shape.Volume
返回值124978.7783065776。注意这个值的单位是默认的“微升/microliters”。下面的字符串将把它转换为“升/liters”:
tu = FreeCAD.Units.parseQuantity
tu(str(App.ActiveDocument.Body.Shape.Volume) + 'µl')/tu('l')