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

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

【FreeCADプログラミング】ドキュメントから作成履歴の取得

本日のお題は『ドキュメントから作成履歴の取得』です。

今回は先日説明したドキュメントから、これまでの作成した履歴(形跡)を取得します。

履歴を取得できると、すでに作成済みのオブジェクトのパラメータを確認したり、変更(※)したりすることができます

これも重要ですので、頭の片隅に入れておきましょう。

※ 例えば、立方体の長さを変更するなど。

1. 環境

  • FreeCAD 0.18

2. 作成履歴とは何か?

ここでいう作成履歴というのは、CADデータを作る際に行った操作の履歴を指します。

例えば机を作る際、天板と足4本を作成するために『押し出し』や『和処理』を行いますね。

その『押し出し』や『和処理』を実行した情報のことを『履歴』といいます。

以前、ベクトル確認用のソリッドを作成したことがありますが、あの実行結果を例にとると、ドキュメント配下の情報はすべて履歴になります。
(以下の立方体, Fusion, Cylinder, Coneが該当)

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

ツリービュー

 

www.interested-or-not.com

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

ドキュメントの取得は、前回の記事で書きました。

今回はそのドキュメントから履歴情報を取り出します。

www.interested-or-not.com

当該情報は、DocumentオブジェクトのObjectsから取得することができます。

# -*- 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:

    FreeCAD.Console.PrintMessage(str(history.Label) + "\n")

 

立方体

Cone

Cylinder

Fusion

4. 補足

上記の方法で履歴の情報が取得できましたが、1つ厄介な点があります。

それは、階層構成ではなく、すべて1次元配列の中に平たんに入れられてしまうことです。

これでは、Fusion配下のConeとCylinderが欲しいというときに困ります。

この点については後日、解決方法を紹介できればと思います。

5. まとめ

  • 作成履歴はDocumentオブジェクトのObjectsから取得可能
  • 取得できる履歴は階層構成ではなく、1次元配列にすべて格納される

6. 最後に

作成済みのデータから必要な情報を抽出する際、今回の知識は必ず必要になります。

やり方を一字一句覚える必要はありませんが、「こういうこともできるんだ」ということだけは覚えておきましょう。

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

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

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

www.interested-or-not.com