忘れないうちにメモっておきたい。
Fusion360のAPIでオブジェクトとして提供されていない要素を、
選択した状態にしたいことが今までに何度かありました。
こちらもそうです。
Solved: Feature Request? : API for creating and managing "Group"s in browser - Autodesk Community
Treeが長ったらしくならないように "ボディ" の中にグループを作成することが出来きます。
(この機能欲しいな と思っていたのですが存在する事を知りませんでした・・・)
この "グループ" を選択状態にしたかったのですが、APIのオブジェクトとして提供されていません。
今回も、こちらの記載が非常に役に立ちました。
ものすごく重要なヒントを見つけ出してもらったと、今でも思っています。
Re: Access Section Analysis? - Autodesk Community
また、古いですがこちらも調べまくることになります。
Fusion360_Small_Tools_for_Developers/TextCommands_txt_Ver2_0_8176.txt at master · kantoku-code/Fusion360_Small_Tools_for_Developers · GitHub
最初のこちらのコマンド
PAsset.RootIds
ver2.0.9313の時点で、僅かに9個しか表示されません。
PAsset.RootIds ["AssetSettings","ComponentInstancesRoot","ComponentsRoot", "NamedTrackedEntitySet","ProteinAssetManager","UnitSystems", "VisualAnalyses","WorkingModelPlaceholderRoot","rootInstance"]
これ自体が何を表すのかも、おぼろげな理解しかしていないのです。(説明も出来ない・・・)
続いて、こちらの類似したコマンドを実行すると
PAsset.EntityIds
大量に表示されるものの、殆ど空です。しかし "PAsset.RootIds" で表示される文字が
チラチラ見えます。JSONっぽいのでこんな感じにすると
entityIdsStr = _app.executeTextCommand(u'PAsset.EntityIds') # Convert to json import json entityIds = json.loads(entityIdsStr)
RootIdを持っている要素は、entityIdが "-1" になるようです。
で、これが恐らくオブジェクトの型のような役割を果たしている、要素毎のIDでは
無いかな? と感じています。
但し、中身が空っぽすぎて何を示しているものか分かりません。
そこで
PEntity.Properties <EntityRef>
を使用します。幾つか試しているうちに
気が付きました。
色々ありまして、ボディのグループの "entityId" は既に "21" と言う事は気が付いていたので
試したところ
PEntity.Properties 21 { "interfaceId" : "Ns::BREP::SurfaceGroups", "segment" : 137, "rUnstitchedGroup" : {}, "highWaterMark" : 2, "rClientObject" : {}, "children" : [{"segId":137,"entityId":366,"rootId":""} , {"segId":137,"entityId":367,"rootId":""}], "rParent" : {"segId":137,"entityId":3,"rootId":""} }
"interfaceId" は、C++の型?名前空間?のような表記です。恐らくこれが型となるのでしょう。
"children" は、子供です。SurfaceGroupsがコレクションと考えれば、SurfaceGroupになるのでしょう。
GUIでボディのグループを選択し、
ObjectPaths.Show
を実行した感じはこちら。(これは選択された要素の情報を表示するコマンドの様です)
つじつまが合いまくる。恐らくSurfaceGroupsのようなコレクション的な物の "entityId" は
固定なのではなろうか?と思ってます。
("children" に入っている要素(恐らくインスタンス)の "entityId" は流動的)
そして、"PAsset.RootIds" で得られるものしか利用出来ないと思い込んでいた "Managed"
に関しても
Managed.Children <entityId> Managed.Child <entityId> <IndexNo>
これらでアクセス出来る事が分かりました。
そのうちFusion360解体新書が書けるようになるかもしれない(無い)