CATIAの場合はワークベンチを判断すればわかるのですが、Fusion360の場合は
ワークスペースをチェックしても、判断できません。
Fusion360はスケッチオブジェクトを指定して、そこに線を書いているので
"スケッチワークスペース" なんて存在しないんですね。
そこで思いついたのが、 "スケッチ停止" コマンドが機能しているかどうかで
判断できるかな? と思い作ってみました。
#FusionAPI_python #Author-kantoku #Description-IsSketchWorking #スケッチ作業中の判断 import adsk.core, adsk.fusion, adsk.cam, traceback def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface if IsSketchWorking(ui): ui.messageBox("スケッチ作業中") else: ui.messageBox("スケッチ作業じゃない") ui.workspacesByProductType except: if ui: ui.messageBox('エラー\n{}'.format(traceback.format_exc())) #スケッチ作業中 #param: ui-userInterface #return: boolean def IsSketchWorking(ui): pnl = ui.allToolbarPanels.itemById('SketchPanel') con = filter(lambda c: c.id == 'SketchStop', pnl.controls) return list(con)[0].isVisible
IsSketchWorking関数を作成し判断してます。
filterとラムダ式で "スケッチ停止" コマンドを抜き出しています。
少しはPythonっぽく書けてきました。
本当は、これを利用したスプリクトを作るつもりだったのですが、
作る意味が無いことが判明。 手動操作を覚えないと無駄ばかり・・・。