アクセスカウンター
アメリカンイーグルスズキ自動車http://www.e-creditcard.info/アクセスカウンターネオサイトワンデー

どうもです。最近は何かと忙しく更新が遅れました。

私はいろいろとやっている?もんでしばらくするとあれ?なんだっけということが多々発生し、自分で書いたものが省略しすぎて意味不明なときがあるので、将来の自分のためにできるだけわかりやすくメモしました。

ですので、自分の言葉でまとめている分ニュアンスがおかしかったり、これちがくね?みたいなこともありますが、あくまで個人的なことなのでそこんところよろしくお願いしまーす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' )