두 선 사이의 각도가 고정 된 스케치가 있습니다. 또한 스케치 파티션에 연결된 차원 (초안에서)이 있습니다. 스케치에서 각도를 변경하고 치수의 실제 값을 가져와야합니다. 나는 또한 (삽입) 외부 파이썬 모듈에서 그것을 할 필요가스케치 쿼터를 업데이트하고 모델의 치수를 읽습니다.
코드는 다음과 같습니다 는
#!/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' 이제 작동하지만 왜? :) –