Maya:Pymelでアクティブなビューポートの取得
Pymelにてアクティブなビューポート(正確にはModelEditorか)を取得する方法を模索・・・。
そもそも私の言うアクティブなビューポートとは
このオレンジで囲った部分のこと。最後にクリックしたModelEditorの意。
調べていると人によってModelPanelと言ったり、ModelEditorと言ったり、Viewportと言ったり・・・と、 イマイチこのビューポートが正確にはなんなのかしっかり理解していない為、若干不安だけど・・・一応、以下のコードで目的が達成できた。
def getActiveViewport(): resultUI = None for editor in pm.lsUI(ed = 1): #とりあえず、存在するEditorを全取得 if type(editor) == pm.uitypes.ModelEditor: #ModelEditorなら・・・ if editor.getActiveView(): #アクティブかどうかチェック! resultUI = editor #アクティブなModelEditorをゲット break print resultUI.getPanel() #一応Panel名を出力して確認 return resultUI
これで大体は問題なく取得できるんだけど、1000回に1回くらいの間隔で変な取得のされ方をする?みたいで、正しく取得されないことがあった。
ただ、再現性がないのでいつ起きるか、そして何が原因なのかさっぱりわからん!!
OpenMayaを利用すれば、もっと正確に取得できるんだろうか?
う~ん・・・まぁ一旦これでよしとする。