C#ATIA

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

TemporaryBRepManagerの使い道

TemporaryBRepManagerについては比較的最近書いてます。
TemporaryBRepManagerの威力 - C#ATIA
履歴有りの状態でTemporaryBRepManagerを使う - C#ATIA

何れも履歴を捨てて高速に処理するためでした。
この使い方しか思いつかなかったんです。

先日、単体サーフェス上の2点を結ぶスケッチ線を作るアドインを
作ったのですが
GitHub - kantoku-code/Fusion360_DrawCurveOnSurface: Fusion360 DrawCurve OnSurface
ver0.0.2までは、ルートコンポーネントと原点位置が異なる面を選択した際
面の位置が正しく取得出来ない為(面の存在しているコンポーネント内の座標値)
作成出来ませんでした。

色々悩んで試しているうちに、TemporaryBRepManagerにコピーメソッドが
あることを思い出しました。 あぁ関係ないけど思い出した。
copyって参照を維持しているものか、完全に分離しているものか
(ディープコピーかシャローコピーと言うことです)
わかりにくいので、cloneとかの名称にして欲しい。

TemporaryBRepManagerにコピーメソッドで出来上がるBRepBodyは画面上には
出てこないんです。Component.bRepBodies.addする必要があるんです。
何とも都合が良い!

面の位置が正しく取得出来ないパターンの際、今までゴリゴリマトリックス
計算させていたのですが、TemporaryBRepManager.copyを利用すればrootでの
形状や座標値の取得が可能だとわかりましたよ。
画面上に出てこないから処理も高速!

で、この辺で利用しました。
Fusion360_DrawCurveOnSurface/DrawCurveOnSurfaceCore.py at master · kantoku-code/Fusion360_DrawCurveOnSurface · GitHub
勉強になりましたよ。"Temporary" の名称を裏切らない使い方が出来るんだなぁ。