ON-BLOG

CGのこと、あれこれ書いてます。

【覚書】maya python入門 其の九

今回からは、動画とかで学んだ事書いていきます。
昔勉強で作成したモノになります。
リンクはすみません。忘れました。


今回スクリプトの内容はこんな感じ。
画像を読み込み→キューブを作成→入力されて名前にリネーム
とこんな感じの簡単なツールです。
画像を↓
f:id:tommy_on:20150708111713g:plain


ではコードです。

import maya.cmds as cmds

if cmds.window("PyWindow",exists=True):
	cmds.deleteUI("PyWindow")
	

Create_Window = cmds.window( "PyWindow", t = "pythonScirpt_Panel", w=300 , h=300 , s=False , mnb=False , mxb=False)
cmds.columnLayout( adj=True )
imagepath = cmds.internalVar( upd=True )+"icons/Window_image02.jpg"
cmds.image( w=300 , h=100 , image = imagepath )
cmds.separator( h=10 )
cmds.text("Create And Rename Tool")
cmds.separator( h=10 )

sliderW = cmds.intSliderGrp( l="Width" , min=1.0 , max=30.0 , field=True , v=1.0 )
sliderH = cmds.intSliderGrp( l="Hight" , min=1.0 , max=30.0 , field=True , v=1.0 )
sliderD = cmds.intSliderGrp( l="Depth" , min=1.0 , max=30.0 , field=True , v=1.0 )

cmds.button( l="Create Cube" , c="SetCube()")
cmds.separator( h=20 )

Re_name = cmds.textFieldGrp( l="Rename" , ed=True , text="InputChangeName")
cmds.button( l="Rename_Cube Name" , c="Rename_Set()")
cmds.showWindow(Create_Window)


def SetCube():
	SetCubeWidth = cmds.intSliderGrp(sliderW, q=True ,v=True )
	SetCubeHight = cmds.intSliderGrp(sliderH, q=True ,v=True )
	SetCubeDepth = cmds.intSliderGrp(sliderD, q=True ,v=True )
	GetCube = cmds.polyCube(w=SetCubeWidth,h=SetCubeHight,d=SetCubeDepth,n="SRT_Cube",ch=False)
	cmds.move(0,SetCubeHight/2.0,0,GetCube,r=True)
	
	
def Rename_Set():
	Set_name = cmds.textFieldGrp(Re_name, q=True , text=True )
	cmds.rename(Set_name)


結構そのまま写したような気がします。
内容は簡単ですね。
では中身を見ていきます。

if cmds.window("PyWindow",exists=True):
	cmds.deleteUI("PyWindow")

これは今も多用している記載方法です。
「PyWindow」この名前のウィンドウがあれば、削除する。
といった内容になります。
フラグ「exists」で存在の有無を確認しています。
Trueなら、deleteUIで既存UIを削除している状態です。

続いて

Create_Window = cmds.window( "PyWindow", t = "pythonScirpt_Panel", w=300 , h=300 , s=False , mnb=False , mxb=False)
cmds.columnLayout( adj=True )

特に難しい所ではないですね。
大きさ、名前を設定し、ウィンドウを作成。
縦にレイアウトを設定している感じです。
では次。

imagepath = cmds.internalVar( upd=True )+"icons/Window_image02.jpg"
cmds.image( w=300 , h=100 , image = imagepath )
cmds.separator( h=10 )
cmds.text("Create And Rename Tool")
cmds.separator( h=10 )

「C:\Users\ユーザー\Documents\maya\バージョン\prefs\」+「icons\Window_image02.jpg」
のパスを取得しています。
「cmds.internalVar( upd=True )」でMAYAのユーザーフォルダを取得しています。
それに+して、iconsフォルダ内にある画像のパスを取得しています。
その後「cmds.image」で画像を読み込み
セパレートで少し範囲を区切り、テキストのラベルを配置しています。

sliderW = cmds.intSliderGrp( l="Width" , min=1.0 , max=30.0 , field=True , v=1.0 )
sliderH = cmds.intSliderGrp( l="Hight" , min=1.0 , max=30.0 , field=True , v=1.0 )
sliderD = cmds.intSliderGrp( l="Depth" , min=1.0 , max=30.0 , field=True , v=1.0 )

cmds.button( l="Create Cube" , c="SetCube()")
cmds.separator( h=20 )

スライダーとボタンを配置しています。
キューブの高さ、奥行き、幅を1-30の間で値をアサインできるようにし
キューブを作成するボタンを作成。


Re_name = cmds.textFieldGrp( l="Rename" , ed=True , text="InputChangeName")
cmds.button( l="Rename_Cube Name" , c="Rename_Set()")
cmds.showWindow(Create_Window)

リネーム用の入力ボックスと、リネームを実行するボタンを実行。
上記で設定したウィンドウを表示しています。

これでウィンドウは生成されたので、これ以下は
各ボタンの実行文になります。

def SetCube():
	SetCubeWidth = cmds.intSliderGrp(sliderW, q=True ,v=True )
	SetCubeHight = cmds.intSliderGrp(sliderH, q=True ,v=True )
	SetCubeDepth = cmds.intSliderGrp(sliderD, q=True ,v=True )
	GetCube = cmds.polyCube(w=SetCubeWidth,h=SetCubeHight,d=SetCubeDepth,n="SRT_Cube",ch=False)
	cmds.move(0,SetCubeHight/2.0,0,GetCube,r=True)


設定された高さ、奥行き、幅を取得し、キューブを作成。
底辺を原点になるように設定。

def Rename_Set():
	Set_name = cmds.textFieldGrp(Re_name, q=True , text=True )
	cmds.rename(Set_name)

入力された値をもって、キューブの名前を変更します。

これで以上ですね。
内容は簡単なんですが以外と長くなりました。
ただ、値の取り方なんかは役にたったかと思います。

以上。