こちらの続きです。
俺コマンドを作る1 - C#ATIA
忘れていましたが、実行するとこんな感じです。
何か1個を選択するだけです。フィルターを指定しないと基本的に何でも
選択出来る事に、昨年気が付きました。
さて、コード的な部分です。こちらのグローバルな変数ですが、
# 俺コマンド用情報 _cmdInfo = ['cmdTest','俺コマンド','偉そうにしているが何も出来ない'] # SelectionCommandInput用情報 _selInfo = ['dlgSel','さぁ選べ!!','何もしないから']
コマンド自体とダイアログの選択を作る際の最低必要なパラメータです。
Fusion 360 Help
Fusion 360 Help
結構あちこちで必要になる事が多いので、(仕方なく)グローバルなものに
してます。
# 俺コマンドを追加するタブのID _tabId = 'SolidTab' # 俺コマンドを追加するパネルのID _panelId = 'InspectPanel'
こちらは、俺コマンドを呼び出すためのボタンを作り出す場所に関するIDです。
・緑:adsk.core.ToolbarTab
・赤:adsk.core.ToolbarPanel
・青:adsk.core.ToolbarControl
と言う名称のオブジェクトの様で、この順番でIDを探します。
”このIDをどうやって知るの?” と言うことになりますが、
こちらのスクリプトを使って調べます。
Fusion 360 Help
但し、現在はエラーになるはずなので、こちらに修正したものを置いておきました。
(APIフォーラムでもエラーになる とチョイチョイ投げられてます)
Help記載のAPIサンプルコード(python)のエラー - Autodesk Community
某サイトではFusion360で利用出来るコマンド一覧としてこのスクリプトを
紹介されていましたが、本来の目的はID取得の為だろうと思われます。
"それだけの為にスクリプト作るのメンドイ" と言う方はこちらにUpして
くれている方がいます。
GitHub - NicoSchlueter/Fusion360Templates: Script & Add-In Templates for Fusion360
"toolbarPanelNames.txt"と言うファイルがパネル名リストです。
細々したことはコメントを記載した通りなのですが、全体的な感じとしては
・CommandDefinitionを作る
↓
・ボタンを作るためのToolbarPanelを探し出す
↓
・ToolbarControlsにCommandDefinitionを突っ込む
# 俺コマンドをパネルに登録 # https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-1ed0cfb5-2ad4-4285-9eec-484ef19f2729 cmdControl = controls.addCommand(cmdDef)
と、なるようです。
あぁ関係ないのですが、思い出しました。
今回の俺コマンドはアドインとしましたが、公開されているコードが
アドインか? スクリプトか? を記載していないものが多いです。
・・・helpのサンプルコードですら。
コードをコピペしてくる際に逆だ動かないので、困るのですよね。
基本的な処理はどちらも変わらないのですが、俺コマンドの保持の仕方が
違うのだろうと思います。(アドインは俺コマンド定義がメモリ上に残っている)
pythonの場合の個人的な見分け方です。アドインの場合は
・"def stop(context)" がある
・Command.destroyにAddしていない(コマンド破棄イベントを使わない)
です。 正直な所よくわかっていないです・・・。