liquidjumper MEL,Python MAYAのメインウィンドウのシェルフをPythonで操作する方法|タブの選択やボタンの追加

MAYAのメインウィンドウのシェルフをPythonで操作する方法|タブの選択やボタンの追加

maya_python_select_shelftoplevel_topimage

「メインウィンドウのシェルフをPythonスクリプトで操作したい」


MAYAのメインウィンドウの上部に配置されている

Shelf/シェルフ

ツールやコマンドを登録して1クリックで機能にアクセスする事ができ非常に便利です。

そしてMAYAではこのシェルフを操作するためのコマンドも用意されています。

  • saveShelf
  • shelfButton
  • shelfLayout
  • shelfTabLayout
  • saveAllShelves 


例として「shelfTabLayout」と「shelfLayout」「shelfButton」を使ってスクリプトを書きました。

import maya.cmds as cmds
cmds.window()
cmds.shelfTabLayout( 'mainShelfTab', image='smallTrash.png', imageVisible=True )
cmds.shelfLayout( 'Modeling' )
cmds.shelfButton(image1="polySphere.png",
                         label="Polygon Sphere", annotation="Polygon Sphere",
                         command="CreatePolygonSphere")
                        
cmds.shelfButton(image1="polyCone.png",
                         label="Polygon Cone", annotation="Polygon Cone",
                         command="CreatePolygonCone")
                        
cmds.shelfButton(image1="polySVG.png",
                         label="SVG", annotation="SVG",
                         command="CreatePolygonSVG")                        
cmds.setParent( '..' )
cmds.shelfLayout( 'Rendering' )
cmds.shelfButton(image1="pointlight.png",
                         label="Point Light", annotation="Point Light",
                         command="CreatePointLight")
                        
cmds.shelfButton(image1="art3dPaint.png",
                         label="3D Paint Tool", annotation="3D Paint Tool",
                         command="Art3dPaintTool")        
cmds.setParent( '..' )
cmds.showWindow()


説明:

cmds.shelfTabLayout( 'mainShelfTab', image='smallTrash.png', imageVisible=True )

シェルフタブ名‘mainShelfTab’として親シェルフを設置

cmds.shelfLayout( 'Modeling' )

シェルフタブ名’Modeling’として子シェルフを設置


cmds.shelfButton(image1="polySphere.png",
                         label="Polygon Sphere", annotation="Polygon Sphere",
                         command="CreatePolygonSphere")

シェルフ’Modeling’に”Polygon Sphere”を追加


実行:

タブでカテゴリ分けされたシェルフが設置されたウィンドウが作られました。

タブでカテゴリ分けされたシェルフが設置されたウィンドウ


続けて以下のスクリプトを実行すると

cmds.shelfTabLayout('mainShelfTab', e=True, selectTab="Rendering")


説明:

親シェルフタブ名’mainShelfTab‘から”Rendering”タブを選択

結果:

選択されるタブが”Modeling”から”Rendering”に変わりました。

選択されるタブが"Modeling"から"Rendering"に変わりました。



新たに作ったウィンドウに配置した親シェルフ名’mainShelfTab’を指定する事が出来たので、タブを任意に選択する事が出来ましたが、ではMAYAのメインウィンドウのシェルフを指定するにはどうしたら良いのか。

はMAYAのメインウィンドウのシェルフ



この記事では、PythonスクリプトでMAYAのメインウィンドウにあるShelf/シェルフの、タブを選択したりツールを追加する方法を紹介します。



MELでメインウィンドウのシェルフを指定する方法

MELにはメインウィンドウのシェルフを指定する変数

$gShelfTopLevel

が用意されています。


MELを使ってメインウィンドウのシェルフから任意のタブを選択してみます。

shelfTabLayout -e -selectTab "Animation" $gShelfTopLevel;


実行:

シェルフのタブから”Animation”が選択されました

シェルフのタブから"Animation"が選択

Pythonでメインウィンドウのシェルフを指定する方法

MELに用意されている$gShelfTopLevelと同等の変数?はPythonにはありません。
そのためPythonでMELコマンドを実行する

maya.mel.eval()

を使う必要があります。

変数「gShelfTopLevel」を用意して以下のスクリプトコードを書きました。

import maya.mel

gShelfTopLevel = maya.mel.eval('$tmpVar=$gShelfTopLevel')

これで変数「gShelfTopLevel」を親シェルフ名として指定することができます。

Pythonでメインウィンドウのシェルフのタブを選択する

変数「gShelfTopLevel」を親シェルフ名としてメインウィンドウのシェルフから任意のタブを選択してみます。

import maya.mel

gShelfTopLevel = maya.mel.eval('$tmpVar=$gShelfTopLevel')
cmds.shelfTabLayout(gShelfTopLevel, e=True, selectTab="Rendering")


説明:

cmds.shelfTabLayout(gShelfTopLevel, e=True, selectTab="Rendering")

「gShelfTopLevel」を親シェルフ名に指定してタブ名”Rendering”を選択します。

結果:

タブ名”Rendering”が選択されました。

タブ名"Rendering"が選択

Pythonでメインウィンドウのシェルフにシェルフボタンを追加する

変数「gShelfTopLevel」を親シェルフ名としてメインウィンドウのシェルフを指定して、選択されているタブにシェルフボタンを追加したいと思います。

import maya.cmds as cmds
import maya.mel

gShelfTopLevel = maya.mel.eval('$tmpVar=$gShelfTopLevel')                        
selectTab = cmds.tabLayout(gShelfTopLevel,q=True,selectTab=True)
cmds.shelfButton(parent = selectTab ,image1="polyCone.png",
                         label="Polygon Cone", annotation="Polygon Cone",
                         command="CreatePolygonCone")  


説明:

selectTab = cmds.tabLayout(gShelfTopLevel,q=True,selectTab=True)

シェルフ「gShelfTopLevel」のタブから選択されているタブ名を取得。変数「selectTab」に代入

cmds.shelfButton(parent = selectTab ,image1="polyCone.png",
                         label="Polygon Cone", annotation="Polygon Cone",
                         command="CreatePolygonCone")   

取得したタブ名が代入された変数「selectTab」を親parentにして[CreatePolygonCone]を追加

実行:

シェルフから任意のタブを選択してスクリプトコードを実行。

選択したタブ「Motion Graphics」に[CreatePolygonCone]のシェルフボタンが追加されました。

シェルフボタンが追加されました

まとめ

PythonスクリプトでMAYAのメインウィンドウにあるShelf/シェルフを指定する方法を紹介しました。

Pythonでメインウィンドウのシェルフを指定するには

import maya.mel
gShelfTopLevel = maya.mel.eval('$tmpVar=$gShelfTopLevel')

maya.mel.eval()を使って変数を親シェルフ名とすることでメインウィンドウのシェルフを指定することができます。








 最新のゲーミングPCが安く手に入れられる「 FRONTIER 」

 豊富なカスタマイズメニューで、あなた好みの1台が購入できます。

 人気の秘密は何と言ってもコスパの高さ。
 最新のCPU・GPUパーツを搭載したモデルを驚きの価格で提供。

 山口県の自社工場で組み立てられ徹底した試験・検査後に出荷。
 無償修理サービスもありサポート体制も安心。

 コスパに徹底的にこだわる方は公式サイトへ >> 【FRONTIER】





𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事