【覚書】maya python入門 其の十
今回も動画で学んだコマンドを紹介。
前回に続いて軽めのコードになります。
こんな感じのやつです。
シーン一覧をMAYAディレクトリから取得して
一覧表示し、選択後読み込みといったやつだったと思います。
ではコード
import maya.cmds as cmds import os def UI(): if cmds.window( "Selector_Window" , exists=True ): cmds.deleteUI( "Selector_Window" ) Create_Window = cmds.window( "Selector_Window" , t="Selector" , w=300 , h=300 ,mnb=False , mxb=False , s=False ) oLayout = cmds.columnLayout( w=300 , h=300 ) ImagePath = cmds.internalVar( upd=True ) + "icons/title.jpg" cmds.image( w=300 , h=100 , image=ImagePath ) cmds.separator( h=15 ) Menu_01 = cmds.optionMenu("Menu_01" , w=300 , l="Select Project" , cc=Charactor_Set) Project_Set() cmds.separator( h=15 ) Menu_02 = cmds.optionMenu("Menu_02" , w=300 , l="Select Charactor") Charactor_Set() cmds.separator( h=15 ) cmds.button( l="Open Scene" , w=300 , h=80 , c=Set ) cmds.showWindow(Create_Window) def Project_Set(): projectPath = cmds.internalVar( upd=True ).rpartition( "prefs" )[0] + "projects/" projects = os.listdir(projectPath) for i in projects: cmds.menuItem( l=i , parent="Menu_01") def Charactor_Set(*args): menuItems = cmds.optionMenu( "Menu_02" , q=True , itemListLong=True) if menuItems != None: for r in menuItems: cmds.deleteUI(r) selProject = cmds.optionMenu( "Menu_01" , q=True , v=True ) charactorPath = cmds.internalVar( upd=True ).rpartition( "prefs" )[0] + "projects/" + selProject +"/" sceneFils = os.listdir(charactorPath) charactors = [] for j in sceneFils: if j.rpartition( "." )[2] == "mb": charactors.append(j) for k in charactors: ScnceName = k.rpartition(".")[0] cmds.menuItem( l=ScnceName , parent="Menu_02") def Set(*args): selProject = cmds.optionMenu( "Menu_01" , q=True , v=True ) charactorPath = cmds.internalVar( upd=True ).rpartition( "prefs" )[0] + "projects/" + selProject +"/" SelectScene = cmds.optionMenu( "Menu_02" , q=True , v=True ) SceneName = charactorPath + SelectScene + ".mb" cmds.file( SceneName , open=True , force=True , prompt=False ) print "opening Scene " + SceneName UI()
以外に長いんですよね。
使っている物は今までさほど変わらないので、違った部分だけ参照してみます。
Menu_01 = cmds.optionMenu("Menu_01" , w=300 , l="Select Project" , cc=Charactor_Set)
プルダウンのメニューの詳細を指定しています。
projectPath = cmds.internalVar( upd=True ).rpartition( "prefs" )[0] + "projects/" projects = os.listdir(projectPath)
ディレクトリフォルダパスで「prefs」で区切って(パスを戻って)
「projects」というパスを指定しています。
要は、
C:\Users\ユーザー名\Documents\maya\2016\prefs
が、
C:\Users\ユーザー名\Documents\maya\2016\projects
に変更した感じです。
んで、次に「listdir」にて作成したパスにあるファイル、フォルダを取得しています。
一応ここも
for i in projects: cmds.menuItem( l=i , parent="Menu_01")
このFOR文でプロジェクトフォルダを取得し、それをプルダウンのメニューに仕込んでます。
続けてそのプロジェクトにあるシーンファイル一覧を取得する部分。
charactorPath = cmds.internalVar( upd=True ).rpartition( "prefs" )[0] + "projects/" + selProject +"/"
ここはプロジェクト取得とほぼ一緒です。
さらに「selProject」というサブフォルダを取得しているだけです。
んで、シーンを取得するのですが、その時に下記のコードで「mbファイル」
だけを取得しております。
charactors = [] for j in sceneFils: if j.rpartition( "." )[2] == "mb": charactors.append(j)
単純に空の配列を作成して、IFで引っ掛かったシーンファイルを
配列に格納しているだけです。
後はその配列に格納されたデータを元に
メニューに登録していきます。
for k in charactors: ScnceName = k.rpartition(".")[0] cmds.menuItem( l=ScnceName , parent="Menu_02")
あとは今までと同じなので、おいておきます…
そんな感じでした。
以上です。