如何在FreeCAD中通过Python编程方式禁用并恢复自动重计算
如何在FreeCAD中通过Python编程方式禁用并恢复自动重计算
我来帮你搞定这个问题!在FreeCAD里完全可以用Python代码控制自动重计算的开关,再也不用每次手动右键点“Skip recomputes”了,完美适配你的设计迭代需求。
核心思路
我们的目标是:脚本运行时暂时关闭自动重计算,完成操作后手动触发重计算,最后还原到脚本运行前的重计算模式(避免强制修改用户原本的设置习惯)。
分步实现代码
第一步:保存当前重计算模式
先把用户当前的重计算状态存起来,确保脚本结束后能精准还原到原有状态:original_recompute_mode = App.ActiveDocument.RecomputeMode第二步:禁用自动重计算
这行代码就对应右键菜单里的“Skip recomputes”操作,直接关闭自动重计算:App.ActiveDocument.RecomputeMode = App.Document.RecomputeOff第三步:执行你的脚本逻辑
把你原本要运行的核心代码放在这里,比如创建几何特征、修改参数等操作——这时候FreeCAD不会自动触发重计算,能帮你节省不少等待时间。第四步:手动触发重计算
按照你的需求,完成所有核心操作后,手动执行一次完整的文档重计算:App.ActiveDocument.recompute()第五步:恢复原有重计算模式
最后把重计算模式还原到脚本运行前的状态,不会干扰你后续的操作习惯:App.ActiveDocument.RecomputeMode = original_recompute_mode
完整示例代码
把所有步骤整合起来,就是一个可以直接复用的模板:
# 保存当前重计算模式,避免修改用户原有设置 original_recompute_mode = App.ActiveDocument.RecomputeMode # 关闭自动重计算 App.ActiveDocument.RecomputeMode = App.Document.RecomputeOff # ---------------------- # 这里替换成你的核心脚本代码 # 示例:创建一个立方体并修改尺寸 # box = App.ActiveDocument.addObject("Part::Box","MyBox") # box.Length = 150 # box.Width = 100 # box.Height = 50 # ---------------------- # 手动执行一次全文档重计算 App.ActiveDocument.recompute() # 恢复脚本运行前的重计算模式 App.ActiveDocument.RecomputeMode = original_recompute_mode
小提示
- 如果你需要对所有打开的文档生效,而不只是当前激活的文档,可以遍历
App.Documents逐个设置,但大部分场景下只操作App.ActiveDocument就足够了。 App.Document.RecomputeOff是FreeCAD内置的枚举值,代表完全关闭自动重计算;对应的App.Document.RecomputeAuto是自动重计算的默认状态。
内容来源于stack exchange
相关产品推荐
相关产品推荐

