「メインウィンドウのシェルフを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”に変わりました。

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

この記事では、PythonスクリプトでMAYAのメインウィンドウにあるShelf/シェルフの、タブを選択したりツールを追加する方法を紹介します。
MELでメインウィンドウのシェルフを指定する方法
MELにはメインウィンドウのシェルフを指定する変数
$gShelfTopLevel
が用意されています。
MELを使ってメインウィンドウのシェルフから任意のタブを選択してみます。
shelfTabLayout -e -selectTab "Animation" $gShelfTopLevel;
実行:
シェルフのタブから”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”が選択されました。

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()を使って変数を親シェルフ名とすることでメインウィンドウのシェルフを指定することができます。
![]() |
|
豊富なカスタマイズメニューで、あなた好みの1台が購入できます。
人気の秘密は何と言ってもコスパの高さ。
最新のCPU・GPUパーツを搭載したモデルを驚きの価格で提供。
山口県の自社工場で組み立てられ徹底した試験・検査後に出荷。
無償修理サービスもありサポート体制も安心。
コスパに徹底的にこだわる方は公式サイトへ >> 【FRONTIER】

![]() |
|
![]() |
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|