■
どうもです。最近は何かと忙しく更新が遅れました。
私はいろいろとやっている?もんでしばらくするとあれ?なんだっけということが多々発生し、自分で書いたものが省略しすぎて意味不明なときがあるので、将来の自分のためにできるだけわかりやすくメモしました。
ですので、自分の言葉でまとめている分ニュアンスがおかしかったり、これちがくね?みたいなこともありますが、あくまで個人的なことなのでそこんところよろしくお願いしまーすw
melでのシェルフタブの追加です。
mayaデフォルトのシェルフタブに追加されます。
#addNewShelfTab "シェルフ名";
melでシェルフのmelを実行し、
mayaデフォルトのシェルフタブに追加されます。
source "シェルフ.melのフルパス"; シェルフ;
シェルフのmelを読み込みます。
loadNewShelfをするだけでmayaデフォルトのシェルフタブに追加されます。
loadNewShelf "シェルフ.melのフルパス";
pythonでのシェルフタブへの追加方法です。
mayaデフォルトのシェルフタブに追加されます。
import maya.cmds as cmds import maya.mel as mel mel.eval( u'source "シェルフ.melのフルパス";' ) mel.eval( u'シェルフ.mel;' )
pythonでシェルフのmelを自作シェルフレイアウトに読み込みます。
loadNewShelfをするとmayaデフォルトのシェルフダブに追加されてしまうので、loadNewShelfは使用せずにシェルフのmelをsourceで読み込んでsetParentで親を指定しました。
(※間違ってたらすいません。)
import maya.mel as mel mel.eval( 'source "H:/cohshiro/maya/2010-x64/prefs/shelves/shelf_AY2.mel";' ) cmds.setParent( '親となるshelfLayout名' ) mel.eval( 'shelf_AY2;' )
melファイルを文字列として読み込みます。
melFile = open('melのフルパス') row = '' for line in melFile: row = '%s%s'%(row, line) print row f.close()
自作UIのメニューの保存①
1行目の文を出力したいメニューの数だけ書かなければいけないみたいです。
また、メニュー一つに付き1つmelが出力されます。
(cmds.menuItem単位ではなくcmds.menu)少し面倒ですがメニューに関わるフラグをいちいち書かなくても出力されたmel文にメニューの状態が記載されるのでそこは楽なのかとおもいました。
cmds.saveMenu( メニュー名, u'出力mel名' ) #出力先のパスは以下の方法で取得可能。出力はmelのみになります。 cmds.internalVar( umm=True )
自作UIのメニューの保存②
cmds.optionVarというコマンドを使用します。
例
1、textFieldGrpのコントローラー名testA(以下:testA)とテキストがAAAAAAAとなっているUIを作成します。
1行目maya.cmdsをインポート
2行目windowを作成
3行目columnLayoutを作成
4行目testAというコントロール名のtextFieldGrpを作成、それのテキスト(フラグ:tx)はAAAAAAA
5行目showWindowでwindowを表示
import maya.cmds as cmds cmds.window() cmds.columnLayout() cmds.textFieldGrp( 'testA', tx='AAAAAAA' ) cmds.showWindow()
2、testAのテキストを照会し、optionVarで照会した文字列をuserPrefs.melに保存します。(設定の保存)
userPrefs.melに定義したプリファレンスが保存されます。
1行目testAというコントロール名のtextFieldGrpのテキストを照会モードで取得しtextという変数に代入します。
2行目optionVarで'testA_text'という変数をuserPrefs.melに作成しtextの値を設定します。
1番目の文字列を変数名、2番目の文字列で指定した文字列が値という新しい変数をuserPrefs.melに作成します。この名前の変数がすでにuserPrefs.melに存在する場合は、新しい値で上書きされます。
text = cmds.textFieldGrp( 'testA', q=True, tx=True ) cmds.optionVar( sv=( 'testA_text', text ) ) #cmds.optionVar( sv=( '変数名', '値' ) )
3、以下の文を実行したら、textFieldGrpのテキストに適当な文字を入力します。
4、serPrefs.melに保存した値を取り出し、textFieldGrpのテキストに代入します。(設定の読み込みと設定の設定←設定載せてい。。。ギャグぽいw)
1行目optionVarでuserPrefs.melから'testA_text'の値を照会し、その値をvalという変数に代入します。
2行目testAのテキストにvalを代入します。(設定の再設定)
val = cmds.optionVar( q='testA_text' ) cmds.textFieldGrp( 'testA', e=True, tx=val )
4を行うとtestAのテキストがAAAAAAAに変更されます。つまり2で設定の保存を行い、3で設定の読み込みと設定の設定(←設定載せてい。。。ギャグぽいw)を行っています。
自由に変数や値を決めることができるのでmayaコマンドに左右されず、これ保存したいけどコマンドない!みたいなときには便利かな~と感じました。
また、optionVarではint型、float型、string型などすきな変数で好きな値をuserPrefs.melに保存できるのできるようです。
userPrefs.melのパスは以下の方法で求めることができました。たぶん、ユーザー\maya\バージョン\prefsの階層下にあるかと思われます。間違ってたらすんまそん。
import maya.cmds as cmds path=cmds.internalVar( upd=True ) print path
UIのリネーム
一度編集モードに設定してからcmds.renameUIでリネームします。
cmds.shelfLayout( 'oldName', e=True ) cmds.renameUI( 'oldName', 'newName' )