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' を受け入れてくれるこれは一体何だろう?