的尺寸我有两条线之间的固定角度的草图。我还有一个与草图分区相关的尺寸(来自草稿)。我需要更改草图上的角度并获取尺寸的实际值。我还需要从外部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
为何变 “水库” 不改变其值?如何正确解决这个任务?
感谢帮助。
的freecad模型是在这里:MyModel
我做了工作,但我不知道为什么。所以我仍然需要一个答案。 线索是消除尺寸草案和直接挑从形状的长度: 旧线: '解析度= doc.getObjectsByLabel(“heightHex”)[0] .Distance' 应改为: 'res = App.getDocument(“__ ArtemZ_test”)。getObject(“Extrude”)。Shape.Edge30.Length' Now it works !, but why?:) –