C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

Fusion360スプリクト作成の取っ掛かり2

こちらの続きです。
Fusion360スプリクト作成の取っ掛かり1 - C#ATIA

昨夜は押し出しで説明するつもりだったのに、画像はスケッチでしたね。
(半分寝ながら書いていました)

前回のようにタイムラインを選択してスプリクトを実行すると
押し出しとしてダイアログが表示されますが、
f:id:kandennti:20190702193801p:plain

押し出しで作成したボディを選択して実行すると、ボディとして
ダイアログが表示されます。
f:id:kandennti:20190702193811p:plain

厄介ですね。この「押し出し」と「ボディ」が関係しているのは明らかなので
何とかスプリクトで取得したいところです。


ExtendFeatureオブジェクトを見てみると
Help
f:id:kandennti:20190702193833p:plain
プロパティの中にそれっぽいものがありますよね。(この辺は勘です・・・)
'body' では無く 'bodies' なのは、Fusion360は複数のプロファイルを
1コマンドで押し出すことが可能なのですが、離れたボディは別々のボディ
となる仕様なので、仮に1個ボディでも複数形での表記なのでしょう。

一応HelpにBRepLumpの説明が有りますが、押し出しに関しては
恐らく無いでしょう。
Help

bodiesプロパティを開くと 'BRapBodies' オブジェクトであることがわかります。
f:id:kandennti:20190702193847p:plain

ここもクリックして開くと、BRapBodyのコレクションだとわかります。
f:id:kandennti:20190702193854p:plain
add item count 等、馴染み深いものしかありませんね。


ここで前回のコードに追記します。

            ・・・
            #実際に選択した要素
            ent = sel.entity
            
            #押し出しで出来た全てのボディ名を追記
            bodies = ent.bodies
            for body in bodies:
                dl_msg += '\n  出来上がったボディ[{}]'.format(body.name)
            
            #情報取得
            msg = dl_msg.format(ent.name,ent.objectType)
            ・・・

実際にタイムラインの押し出しを選択した状態で、スプリクトを実行すると
f:id:kandennti:20190702193904p:plain
こんな感じで、[押し出し1]と[ボディ1][ボディ2]が関連していることを
スプリクトで取得出来る事がわかりました。
(例外処理していないので、押し出し以外で実行すると
エラーになる可能性が高いです)