my funeral week

少しでも日々の生活に変化を。

Maya:Pymelでアクティブなビューポートの取得

Pymelにてアクティブなビューポート(正確にはModelEditorか)を取得する方法を模索・・・。

そもそも私の言うアクティブなビューポートとは

f:id:garysfirearms108:20180910233852j:plain:w400

このオレンジで囲った部分のこと。最後にクリックした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を利用すれば、もっと正確に取得できるんだろうか?

う~ん・・・まぁ一旦これでよしとする。