今まで気になっていたのですが、確認しました。
GUIのテキストコマンドは3種類あります。
あまり意味はないのですが、次のコマンドを "Txt" 実行すると
Fusion360のバージョン情報を表示します。
Application.SoftwareVersion
しかし、 "Py" "Js" で実行するとエラーになります。
以前からこれは知っていました。
("Js" は、2020/12/7辺りで表示されなくなるか、機能しなくなるはず)
ずっと気になっていたのですが、APIの
app.executeTextCommand
で、テキストコマンドを呼び出す際、"Txt" になっている保証が無いまま
しらばっくれて使ってました。ごめんなさい。
と言う事で、それを確認しました。
こんな感じのコードです。
#Fusion360API Python script import adsk.core, adsk.fusion, traceback def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface msg = app.executeTextCommand(u'Application.SoftwareVersion') dumpMsg(msg) except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc())) def dumpMsg(msg :str): app = adsk.core.Application.get() ui = app.userInterface ui.palettes.itemById('TextCommands').writeText(str(msg))
念のためですが、日本語環境の場合はexecuteTextCommandの引数は
Unicode文字列で渡した方が良いです。
一番最初に試した際、Unicodeではない場合に機能しなかった経験が
有ります。(最初に遭遇したので逆に助かりました)
"Txt" "Py" "Js" の何れも正しい結果を表示します。
あの部分には依存しないとわかりました。今さら・・・。
dumpMsg関数は、テキストコマンドパレット(と、呼ぶようです)に
文字を垂れ流す為の関数なのですが、ここを表示/非表示(赤印)させる
方法はわかるのですが、パレットを拡大/縮小させる+-(緑印)を
切り替える方法が見つからないんです・・・。
強制的に表示を見せたい時があるのですがねぇ。