更新草图配额并读取模型的尺寸

时间:2016-12-22 08:36:36

标签: python embedding freecad

我有两条线之间固定角度的草图。我还有一个尺寸(从草稿)链接到草图分区。我需要在草图上更改角度并获取尺寸的实际值。我还需要从外部python模块(嵌入)

进行

代码是:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import sys
import numpy as np

FREECADPATH = r'/usr/lib/freecad/lib'
sys.path.append(FREECADPATH)

import FreeCAD as App
import FreeCADGui as Gui

filePath = r"thePath..."
if App.ActiveDocument:
    doc = App.ActiveDocument
else:
    doc = App.open(filePath)

angSmpl = np.linspace(10, 40, num=10)

sk = doc.Sketch

for angle in angSmpl:
    a = sk.getDatum('rotHex').Value
    sk = doc.Sketch
    sk.setDatum('rotHex', App.Units.Quantity(str(int(angle))+' deg'))
    doc.recompute()
    b = sk.getDatum('rotHex').Value
    res = doc.getObjectsByLabel('heightHex')[0].Distance
    print a, b, res

输出是:

FreeCAD 0.16, Libs: 0.16R6707 (Git)
Fasteners workbench Loaded
Sheet Metal workbench loaded
Importing project files......
                  (100.0 %)   

32.0 10.0 330.599 mm
10.0 13.0 330.599 mm
13.0 16.0 330.599 mm
16.0 20.0 330.599 mm
20.0 23.0 330.599 mm
23.0 26.0 330.599 mm
26.0 30.0 330.599 mm
30.0 33.0 330.599 mm
33.0 36.0 330.599 mm
36.0 40.0 330.599 mm

为什么变量“res”没有改变它的值?如何正确解决这个问题?

感谢您的帮助。

freecad模型位于:MyModel

1 个答案:

答案 0 :(得分:1)

默认情况下,草图尺寸不是参数化的,这意味着尺寸形状更改时它们不会更新。要创建参数化维度,可以使用“alt”键,根据http://www.freecadweb.org/wiki/index.php?title=Draft_Dimension上的FreeCAD文档

您需要确保维度是参数化的,以使您的脚本正常工作。检查这个的最简单方法是更新GUI中的草图并检查尺寸是否也更新。如果是这样,并且脚本不起作用,那就是一个bug。