こちらの続きです。
テキストコマンド1 - C#ATIA
殆ど進展が無く、気が重いのですが続きです。
前回はサラサラッと書きましたが、細かな話を記載しておきます。
1)コマンドID
ダイアログを表示させるためのコマンドIDはテキストコマンドで簡単に
入手出来ます。 任意のコマンドのダイアログを表示させた状態で
次のコマンドを実行します。
UI.CurrentCommandInfo
大量に文字が表示されますが、先頭付近に記載されています。
2)OKボタン
途中を飛ばして、OKボタンを押す方法ですが、特に記載することなく
前回書いた通りです。(見つけるのは困難でした)
3)InputsのID
問題の一つはここです。Inputsとはコマンドのダイアログ上に配置
されている入力したり選択したりする部分の事です。
前回のコードでは利用しなかった "チェーン選択" のIDは、
"SWEEP_CHAINING_OPTION" です。このIDの取得方法です。
これも、最初に示した "UI.CurrentCommandInfo" で出力されています。
テキストコマンドの画面上では見辛い状態ですが、JSONフォーマットなので
スクリプトでこんな感じにすると見やすいです。
但し、実行後GUIを操作すると高確率でFusion360がクラッシュするので
ご注意ください。
#Fusion360API Python script import adsk.core, adsk.fusion, traceback _app = adsk.core.Application.cast(None) _ui = adsk.core.UserInterface.cast(None) def run(context): try: global _app, _ui _app = adsk.core.Application.get() _ui = _app.userInterface txtCmd = 'UI.CurrentCommandInfo' info = _app.executeTextCommand(txtCmd) import json data = json.loads(info) txts = json.dumps(data, indent=2).split('\n') for t in txts: print(t.encode().decode("unicode_escape")) except: if _ui: _ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
Fusion360のバージョンよってエンコードが変わっているような・・・。
文字化けする際はこの辺りを参考に修正すると良いかと思います。
https://qiita.com/inoory/items/aafe79384dbfcc0802cf
"パイプ" コマンドの場合、こんな感じです。
{ "button": { "commandId": "PrimitivePipe", "toolbarId": "FusionAssetType", "panelId": "SolidCreatePanel", "beforeCommandId": "SeparatorAfter_PrimitivePipe", "asMenu": true }, "commandInfo": { "id": "PrimitivePipe", "name": "パイプ", "resource": "C:/Users/<USERNAME>/AppData/Local/Autodesk/webdeploy/production/1f559bb8ae333199306b5c4f1fe680c6eb7ab9e0/Fusion/UI/FusionUI/Resources/solid/primitive_pipe", "groups": "[FusionSolidCommands]" }, "tooltip": { "commandId": "PrimitivePipe", "description": "Text: , Description: 選択したパスに沿ってソリッド パイプを作成します。<br><br>パスを選択し、断面とサイズを指定します。<br>, Toolclip: C:/Users/<USERNAME>/AppData/Local/Autodesk/webdeploy/production/1f559bb8ae333199306b5c4f1fe680c6eb7ab9e0/Fusion/UI/FusionUI/Resources/ToolClip/pipe.png" }, "tipsAndTricks": { "title": "[パイプ]に関する情報", "description": "", "moreInfo": "MODEL-PIPE-CMD" }, "inputs": [ { "id": "infoSweepTypeOption", "name": "タイプ", "tooltip": "", "prompt": "", "type": "Nu::DropDownValueCommandInput" }, { "id": "Profile", "name": "プロファイル", "tooltip": "", "prompt": "スイープするスケッチ プロファイルまたは平面を選択", "type": "Nu::Components::ChainSelectionCommandInput" }, { "id": "Path", "name": "パス", "tooltip": "", "prompt": "スケッチ曲線またはエッジを選択", "type": "Nu::Components::ChainSelectionCommandInput" }, { "id": "GuideSurface", "name": "ガイド サーフェス", "tooltip": "", "prompt": "面または作業平面を選択", "type": "Nu::Components::ChainSelectionCommandInput" }, { "id": "SWEEP_CHAINING_OPTION", "name": "チェーン選択", "tooltip": "", "prompt": "", "type": "Nu::BoolValueCommandInput" }, { "id": "SWEEP_FULL_PATH", "name": "絶対パス", "tooltip": "", "prompt": "", "type": "Nu::BoolValueCommandInput" }, { "id": "SWEEP_FLIP_DIRECTION_OPTION", "name": "方向を反転", "tooltip": "", "prompt": "", "type": "Nu::BoolValueCommandInput" }, { "id": "infoSweepExtentOption", "name": "範囲", "tooltip": "", "prompt": "", "type": "Nu::DropDownValueCommandInput" }, { "id": "SWEEP_POP_ALONG", "name": "距離", "tooltip": "", "prompt": "", "type": "Nu::Components::PointOnPathCommandInput" }, { "id": "SWEEP_POP_AGAINST", "name": "距離", "tooltip": "", "prompt": "", "type": "Nu::Components::PointOnPathCommandInput" }, { "id": "SWEEP_POP_RAIL_DIST_ALONG", "name": "ガイド レールの距離", "tooltip": "", "prompt": "", "type": "Nu::Components::PointOnPathCommandInput" }, { "id": "SWEEP_POP_RAIL_DIST_AGAINST", "name": "ガイド レールの距離", "tooltip": "", "prompt": "", "type": "Nu::Components::PointOnPathCommandInput" }, { "id": "SweepTaperAngle", "name": "テーパ角度", "tooltip": "", "prompt": "", "type": "Nu::AngleValueCommandInput" }, { "id": "SweepTwistAngle", "name": "ねじり角度", "tooltip": "", "prompt": "", "type": "Nu::AngleValueCommandInput" }, { "id": "infoSweepOrientation", "name": "方向", "tooltip": "", "prompt": "", "type": "Nu::DropDownValueCommandInput" }, { "id": "infoSweepProfileScalingOption", "name": "プロファイル尺度", "tooltip": "", "prompt": "", "type": "Nu::DropDownValueCommandInput" }, { "id": "SWEEP_SOFTEN_SHAPE_OPTION", "name": "形状をぼかす", "tooltip": "", "prompt": "", "type": "Nu::BoolValueCommandInput" }, { "id": "INPUT_SELREORDER", "name": "プロファイルを選択", "tooltip": "", "prompt": "", "type": "Nu::SelectionReorderCommandInput" }, { "id": "INPUT_RAIL_SEL", "name": "パスを選択", "tooltip": "", "prompt": "", "type": "Nu::SelectionReorderCommandInput" }, { "id": "INPUT_CENTERLINE_SEL", "name": "ガイドを選択", "tooltip": "", "prompt": "", "type": "Nu::SelectionReorderCommandInput" }, { "id": "INPUT_GUIDE_SURFACE_SEL", "name": "ガイド サーフェスのタイプを選択", "tooltip": "", "prompt": "", "type": "Nu::SelectionReorderCommandInput" }, { "id": "infoSectionType", "name": "断面", "tooltip": "", "prompt": "", "type": "Nu::DropDownValueCommandInput" }, { "id": "SectionRadius", "name": "断面サイズ", "tooltip": "", "prompt": "", "type": "Nu::RealValueCommandInput" }, { "id": "SectionThickness", "name": "断面の厚さ", "tooltip": "", "prompt": "", "type": "Nu::RealValueCommandInput" }, { "id": "PIPE_HOLLOW_OPTION", "name": "空洞", "tooltip": "", "prompt": "", "type": "Nu::BoolValueCommandInput" }, { "id": "infoBooleanType", "name": "操作", "tooltip": "", "prompt": "", "type": "Nu::DropDownValueCommandInput" }, { "id": "infoCutTableGroup", "name": "切り取るオブジェクト", "tooltip": "", "prompt": "", "type": "Nu::CommandInputGroup" }, { "id": "infoCutParticipantTable", "name": "切り取りに関与するコンポーネントのテーブル", "tooltip": "", "prompt": "", "type": "Nu::TableCommandInput" } ] }
パスを選択したり、何かアクションを起こさないと表示されないものも
含めて、全て出力されていると思います。
"name" が画面上に出ている文字で "id" が該当するIDのはずです。
ん~無駄に長くなったぞ。