C#ATIA

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

TextCommandsパレットをクリアする

Fusion360APIの開発者向け(要は僕用)のアドインを練習がてら作成中です。

前から、テキストコマンドのパレットをAPIでクリアしたいと思っていました。
こちらの "Window.Clear" がそうなんです。
Fusion360_Small_Tools_for_Developers/TextCommands_txt_Ver2_0_8176.txt at master · kantoku-code/Fusion360_Small_Tools_for_Developers · GitHub

これを手動で実行するとクリアされるのですが、APIではクリアしてくれないんです。
あぁ、まず汚さなと。

paths.get

を入力すると、いっぱい書き出されます。

実際にこんなスクリプトを実行してもクリアされません。

# Fusion360API Python script

import traceback
import adsk.fusion
import adsk.core

def run(context):
    ui: adsk.core.UserInterface = None
    try:
        app: adsk.core.Application = adsk.core.Application.get()
        ui = app.userInterface

        app.executeTextCommand(u'window.Clear')

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

ところが、別の事をやっていて気が付いたのですが、executeTextCommand
の戻り値を受け取り、それをLogに垂れ流すとクリアしてくれました。

        res = app.executeTextCommand(u'window.Clear')
        app.log(res)

非常に不思議なのですが、目的は果たせました。

そこで戻り値は何なのかが気になり、ブレークポイントで止めて
"res" を見ると "TextCommandWindow.Clear" と言う文字列が入ってました。

それじゃ回りくどいことしないで、直接それを実行すればいいのかな?
と思い、この様にしました。

app.executeTextCommand(u'TextCommandWindow.Clear')

これ、駄目なんです。それはテキストコマンドには無いよって事らしいです。

で諦めようと思ったのですが、logに直接投げれば良いのでは?と思い

app.log(u'TextCommandWindow.Clear')

としたところ、クリアされました。

'TextCommandWindow.Clear' を受け入れてくれるこれは一体何だろう?