C#ATIA

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

CommandDefinitionsオブジェクト1

マクロやスプリクトでは、常に手動操作と同じ機能を利用する事は出来ません。
それはソフト自体がAPIとして、オブジェクト・メソッド・プロパティ等を公開して
くれているか否かに依存しているのが、正直なところです。

それらが公開されていない場合でも極わずかですが、可能性が有ります。
それはマクロやスプリクトでコマンド自体を実行する事です。
CATIAの場合は、こちらで利用している「StartCommand」です。
ビュー名のテキストを追加する - C#ATIA

これと同等な機能をFusion360では長い間見つける事が出来なかったのですが、
先日たまたま見つけました。

こちらのオブジェクト説明の「ネイティブコマンド用にFusion 360によって
定義されたコマンド定義も含まれています」の文言で気が付きました。
Help

Fusion360のスプリクトを(コード的に)実行する方法には
・単に処理を行う
・コマンドを自作し、コマンドとして処理を行う
(恐らく)2種類有り、後者の方法では必ず使用するオブジェクトです。


こちらのトピに記載されている「選択セット」も質問者さんの書かれている通り
オブジェクト自体は公開されていませんが、スプリクトでコマンドを実行するために
必要なコマンドIDは取得出来ました。(で、それを利用した回答を行いました)
Solved: Re: API for working with Selection Sets - Autodesk Community

最後の部分にコマンドIDリストをファイルに書き出すコードを記載しましたが、
(_ui は ui の間違いです…)IDだけではわかりにくいため、少し修正し
IDとコマンド名をCSVファイルとして書き出すコードにしました。

#fusion360 python
#CommandID Write to File ver0.0.2
import adsk.core, adsk.fusion, traceback
 
#UnicodeEncodeError回避の為に参考になりました
#https://teratail.com/questions/31989
def run(context):
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        
        path = r'C:\temp\fusion360_commands_list.csv'
        cmds = []
        for cmd in ui.commandDefinitions:
            cmds.append('{},{}'.format(
                cmd.id,cmd.name.encode("CP932", "ignore").decode("CP932")))
        cmds.sort()
        output = open(path, 'w')
        output.writelines('\n'.join(cmds))
        output.close()        
        
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

基本的に、この方法を利用出来るコマンドは、
・ダイアログが出ない
・事前選択で対応出来る
の条件が必要です。