興味があろうがなかろうが。

なるべく役に立つ、とがった内容を記していきたいと思います。

【FreeCADプログラミング】作成履歴のパラメータ変更

本日のお題は『作成履歴のパラメータ変更』です。

今回はすでに作成された履歴のパラメータを変更していきたいと思います。

これができるようになると、プログラムでできることがさらに広まりますので、覚えておきましょう。

1. 環境

  • FreeCAD 0.18

2. パラメータを変更する方法

変更できるパラメータは、各オブジェクト(クラス・型)によって、全く異なります。

例えば、立方体であれば、長さ(Length)・幅(Width)・高さ(Height)などがあり、円柱であれば、半径(Radius)・高さ(Height)・角度(Angle)などがあります。

もちろんのことですが、用意されていないパラメータの値を変更しようとすれば、例外が発生します。

そのため、プログラムを作る前に『どういったオブジェクトの何というパラメータを変更するか』を必ず確認しておく必要があります。

このあたりは特に注意してください。

3. プログラムを書いてみよう

今回も以前『ドキュメントから作成履歴の取得』で使用したツリーを利用します。

f:id:appli-get:20200505114211p:plain

ツリービュー

 

www.interested-or-not.com

今回は実験として、立方体の長さ(Length)と円錐(Cone)の半径2(Radius2)の値を変更してみましょう。

f:id:appli-get:20200507144856p:plain

変更前の状態

f:id:appli-get:20200507144750p:plain

変更前の立方体のパラメータ

f:id:appli-get:20200507144813p:plain

変更前の円錐のパラメータ
# -*- coding: utf-8 -*-

#import ptvsd
#print("Waiting for debugger attach")
# 5678 is the default attach port in the VS Code debug configurations
#ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
#ptvsd.wait_for_attach()

import FreeCAD

# アクティブなドキュメントを取得
activeDoc = App.ActiveDocument

# アクティブドキュメントから作成履歴群を取得
histories = activeDoc.Objects

# 作成履歴群から立方体もしくは、円錐が取得できた場合、
# パラメータを変更する
for history in histories:
    if history.TypeId == 'Part::Box':
        history.Length.Value = 5
    elif history.TypeId == 'Part::Cone':
        history.Radius2.Value = 2

 

パラメータの変更処理が終了しました。

 

無事処理が完了したら、ビュー上のモデルの状態を見てみましょう。下図のように変わっているはずです。随分といびつな形になりましたね。

f:id:appli-get:20200507144830p:plain

変更後の状態

4. まとめ

  • 各クラス(型)によって、持っているパラメータ(変数)が異なる
  • どのようなパラメータが変更可能か、事前に調査することは必須

5. 最後に

これでまたできることが広がりましたね。

例えば、共通の作成方法がなされている特定のパラメータを自動的に書き換えていくなんてプログラムもできるようになりましたね。

更なる情報をお探しの方は!

下記のリンクから、FreeCADプログラミングのトップページに飛びます。

よろしければご参照くださいませ。

www.interested-or-not.com