【覚書】maya python入門 其の九
今回からは、動画とかで学んだ事書いていきます。
昔勉強で作成したモノになります。
リンクはすみません。忘れました。
今回スクリプトの内容はこんな感じ。
画像を読み込み→キューブを作成→入力されて名前にリネーム
とこんな感じの簡単なツールです。
画像を↓
ではコードです。
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)
入力された値をもって、キューブの名前を変更します。
これで以上ですね。
内容は簡単なんですが以外と長くなりました。
ただ、値の取り方なんかは役にたったかと思います。
以上。