2016-12-22 6 views
0

두 선 사이의 각도가 고정 된 스케치가 있습니다. 또한 스케치 파티션에 연결된 차원 (초안에서)이 있습니다. 스케치에서 각도를 변경하고 치수의 실제 값을 가져와야합니다. 나는 또한 (삽입) 외부 파이썬 모듈에서 그것을 할 필요가스케치 쿼터를 업데이트하고 모델의 치수를 읽습니다.

코드는 다음과 같습니다 는

#!/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

+0

나는 그것을 만들었지 만, 나는 왜 그런지 모른다. 그래서 나는 여전히 답이 필요합니다. 올드 행 : 단서가 초안 치수를 제거하고 직접 형상과 길이를 선택하는 것이 었습니다 '입술 = doc.getObjectsByLabel ('heightHex를') [0] .Distance' 로 대체해야합니다 'res = App.getDocument ("__ ArtemZ_test"). getObject ("Extrude"). Shape.Edge30.Length' 이제 작동하지만 왜? :) –

답변

1

은 파라 메트릭하지 않습니다,이 그들이 할 때 치수가 형상 변경을 업데이트하지 않는 것을 의미한다. 파라 메트릭 치수를 만들려면 http://www.freecadweb.org/wiki/index.php?title=Draft_Dimension

에서 FreeCAD 설명서에 따라 "alt"키를 사용할 수 있습니다. 스크립트를 작동 시키려면 치수가 파라 메트릭인지 확인해야합니다. 이를 확인하는 가장 간단한 방법은 GUI에서 스케치를 업데이트하고 치수가 업데이트되는지 확인하는 것입니다. 그렇다면 스크립트가 작동하지 않습니다. 버그입니다.

+0

감사합니다. –