0

2 つの線の間の角度が固定されたスケッチがあります。スケッチ パーティションにリンクされている (ドラフトからの) 寸法もあります。スケッチの角度を変更し、寸法の実際の値を取得する必要があります。外部の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

4

1 に答える 1

1

デフォルトでは、ドラフト寸法はパラメトリックではありません。つまり、寸法が記入された形状が変更されてもドラフト寸法は更新されません。FreeCAD のドキュメント ( http://www.freecadweb.org/wiki/index.php?title=Draft_Dimension ) によると、パラメトリック寸法を作成するには、「alt」キーを使用できます。

スクリプトを機能させるには、ディメンションがパラメトリックであることを確認する必要があります。これを確認する最も簡単な方法は、GUI でスケッチを更新し、寸法も更新されるかどうかを確認することです。その場合、スクリプトが機能しない場合、それはバグです。

于 2017-01-09T06:58:52.023 に答える