こちらのトピにレスが付かなかったので挑戦してみました。
How to edit a loft by API - Autodesk Community
ロフトフューチャーを修正したいと言う内容です。多分。
既にあるデータを修正することは今までやったことが無かったので
色々と苦労しました。
あちらにも画像を載せましたが、こんなデータです。
3個のスケッチに円を描き、一番下と一番上でロフトを作っています。
そこに中間のスケッチの円を入れる処理で考えました。
このロフトを修正する作業はGUIでも結構面倒ですよね?
ロフトが成立するプロファイルの順番だとか、成立するプロファイルとか
ロフトより前に作ってあるスケッチだとか、諸々の条件を出したら
キリが無いので、その辺はクリアしている事にしておいてください。
最初に戸惑ったのがタイムラインです。
この位置(マーカーポジションと呼ぶようです)でロフトを修正したら
駄目なんですね。
この位置なら良いみたいです。過去は変えちゃいけないみたいです。
未来はいくらでも変更出来る!
未来は俺が作る!!
俺の後ろに道が出来る!!!
って事なんですね。(スケッチは過去のものも変更出来ます・・・)
続いてるロフトのセクションの修正ですが、ここもつっかえました。
質問者さんも "deleteMe(削除)は出来る" って記載しています。
確かに出来るっぽいのですが、上記のサンプルでは出来ませんでした。
理由は簡単です。2個のセクションでロフトを作っているので、
1個削除するとロフトとして成立しない為、エラーとなってしまします。
最初は全てセクションをクリアし、望んでいるセクションの順番で
再度追加すれば良いかな? と思っていたのですが、作戦失敗です。
続いて、こちらのメソッドに気が付きました。
Fusion 360 Help
リオーダーでセクションの順番を変更できそうです。
とりあえず、中間にしたいセクションを追加(一番最後)して、
reorderメソッドで順番変えれば良さそうだな と。
ところが、中間にしたいセクションを追加した時点でエラー。
当然、順番的にNGな事はわかっていたのですが・・・。
CATIAのGSDの接合の場合は、HybridShapeFactoryのaddNew~で
2つのReferenceを引数にする必要があるのですが、その後1個削除しても
エラーにならないんですよね。最終的に2個以上あれば良いので
途中で条件を満たしていなくても大丈夫なんです。
Fusion360は即実行になってしまうのでかなり勝手が違います。
冷静に考えると、ロフトのセクションの順番変えて大丈夫な場面は
ほぼ無いと思うのですがどうでしょ?reorderメソッドは存在している
意味がほぼ無いような気がしています。
この時点でほぼ絶望的になり、あのトピは見なかったことにしようかな?
とすら思いましたよ。
ダミーのセクションを作成しエラーを回避しようとも考えましたが
・2個以上のセクションを維持する
・追加出来るのは最後のみ
をどうしてもクリアするダミーセクションを思い付きません。
ところがよく見ると、LoftSection.entityプロパティはread/writeプロパティ
じゃないですか!
Fusion 360 Help
セクションを足し引きするのではなく、セクションが持っているエンティティを
入れ替えるだけで済むじゃない!!
と言うわけであのコードとなりました。
CATIAとは勝手が違うんですね。