貴方は既にPythonでツールを作れる様に成っている事でしょう。
そうなると、そんなツールを
UIのボタンから発動させたくなるのが人の性では無いでしょうか。
それをするのに便利なのが「関数」です。
関数とは
関数とはなにかを平たく言うと、数学の授業でやった y=ax2 みたいなアレです。
変数ⅹに入力した数値によってyの値が変ってくるみたいなものです。
一次関数とか、二次関数とか、そういったやつです。
拒絶反応が出て来た人もご安心下さい。
解りやすく解説致しますので、この機会に関数が得意に成るかも知れませんよ。
それでは、試しに y=x*2 の式を
Pythonの関数にすると以下の様になります。
#---------------------------------------------
def fFunction( vValue ):
return vValue * 2
print( fFunction( 7 ) )
print( fFunction( 5 ) )
print( fFunction( 3 ) )
#---------------------------------------------
fFunction()に任意の数値を入れる事で
それが二倍された値が吐かれます。
def 関数名( 値 ):
で関数を宣言して、以下のコードブロック内の処理が関数の中身となります。
サンプルコードとしてロケータを作成して親子付けする命令を関数にすると以下の様になります。
(戻り値が必要無ければ入力値を設定する必要はありません)
#---------------------------------------------
import maya.cmds as cmds
def fParentingLocator():
oLoc_01 = cmds.spaceLocator( p = [0, 0, 0] )
oLoc_02 = cmds.spaceLocator( p = [0, 0, 0] )
cmds.parent( oLoc_02, oLoc_01 )
#---------------------------------------------
これを実行しても、何も作成はされませんが、
ここで定義した関数を実行するとロケータが作成されます。
#---------------------------------------------
fParentingLocator()
#---------------------------------------------
この様に一度関数を定義しておけば、複数の命令群を
関数の名前だけで実行する事が出来ます。
関数は、重複し易い処理を纏めておけるので
コードをスマートにする事が出来ます。
これを利用してUIのボタンを押した際にロケータを作成する様にします。
やり方は非情に簡単です。
以前、使ったUIの「command =""」に「fParentingLocator()」関数を指定するだけです。
#---------------------------------------------
import maya.cmds as cmds
cmds.window( title ="MyUI", width = 200 )
cmds.columnLayout( adjustableColumn =True )
cmds.button( label ="ボタン A", command ="fParentingLocator()" )
cmds.button( label ="ボタン B", command ="" )
cmds.button( label ="ボタン X", command ="" )
cmds.button( label ="ボタン Y", command ="" )
cmds.showWindow()
#---------------------------------------------
これで「ボタン A」を押すとロケータを作成する様になりました。
この要領で自分のオリジナルツールを作る事が出来ます。
次項 →10_ChatGPTの活用
前項 →08_リスト
一覧へ
関連-------------------------------------
Python_MAYA機能メモ
Python_MAYA_ちょっとしたツール集
Python_エラーメモ
編集