C#ATIA

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

executeTextCommandの言語依存

今まで気になっていたのですが、確認しました。
GUIのテキストコマンドは3種類あります。
f:id:kandennti:20201013181931p:plain

あまり意味はないのですが、次のコマンドを "Txt" 実行すると
Fusion360のバージョン情報を表示します。

Application.SoftwareVersion

f:id:kandennti:20201013181946p:plain

しかし、 "Py" "Js" で実行するとエラーになります。
f:id:kandennti:20201013181954p:plain

以前からこれは知っていました。
("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" の何れも正しい結果を表示します。
f:id:kandennti:20201013182028p:plain
あの部分には依存しないとわかりました。今さら・・・。


dumpMsg関数は、テキストコマンドパレット(と、呼ぶようです)に
文字を垂れ流す為の関数なのですが、ここを表示/非表示(赤印)させる
方法はわかるのですが、パレットを拡大/縮小させる+-(緑印)を
切り替える方法が見つからないんです・・・。
f:id:kandennti:20201013182045p:plain
強制的に表示を見せたい時があるのですがねぇ。