【Python学習】Lv13 MEL ロック&ハイド
少し前までLockとHideをする際は『rig101 LocknHide』を利用させて頂いていました。
とても便利ではあったのですが、個人的に少し改善したい箇所がありました。
それは、UIの占有率が大きいのと1ボタンでON/OFFを切り替えたいの2点です。
LockHide
個人的にシンプルにまとめたのがコチラ↓
コンパクトな似たようなツールを探してはみたのですが、なかなか見つからず、、、
自力で何とか作成する事ができました。個人的に気に入ってますw
中身です。
/////////////////////////////////インターフェース
global proc tk_LockHide()
{
if(`window -ex tk_LockHide`) deleteUI tk_LockHide ;
window -title "LockHide" -s 1 -mnb 0 -mxb 0 tk_LockHide ;
columnLayout ;
text -l "LOCK :";
rowLayout -nc 5;
button -bgc 0.8 0.6 0.4 -label "ALL" -w 24 -h 20 -c "LockHide lockALL";
button -bgc 0.6 0.6 0.6 -label "Trs" -w 24 -h 20 -c "LockHide lockTrs";
button -bgc 0.6 0.6 0.6 -label "Rot" -w 24 -h 20 -c "LockHide lockRot";
button -bgc 0.6 0.6 0.6 -label "Scl" -w 24 -h 20 -c "LockHide lockScl";
button -bgc 0.6 0.6 0.6 -label "Vis" -w 24 -h 20 -c "LockHide lockVis";
setParent..;
button -bgc 0.8 0.4 0.4 -label "Release All" -w 129 -h 20 -c "LockHide lockRelease";
setParent..;
columnLayout ;
text -l "HIDE :";
rowLayout -nc 5;
button -bgc 0.8 0.6 0.4 -label "ALL" -w 24 -h 20 -c "LockHide hideALL";
button -bgc 0.6 0.6 0.6 -label "Trs" -w 24 -h 20 -c "LockHide hideTrs";
button -bgc 0.6 0.6 0.6 -label "Rot" -w 24 -h 20 -c "LockHide hideRot";;
button -bgc 0.6 0.6 0.6 -label "Scl" -w 24 -h 20 -c "LockHide hideScl";
button -bgc 0.6 0.6 0.6 -label "Vis" -w 24 -h 20 -c "LockHide hideVis";
setParent..;
button -bgc 0.8 0.4 0.4 -label "Release All" -w 129 -h 20 -c "LockHide hideRelease";
setParent..;
showWindow tk_LockHide;
}
/////////////////////////////////////////////////LOCK&HIDE
global proc LockHide(string $TYPE)
{
string $selectObj[]=`ls -sl`;
switch ($TYPE)
{
case "lockTrs":
for($obj in $selectObj){
if(`attributeExists "t" $obj`){
int $Nom=`getAttr -lock ($obj+".tx")` ? 0 : 1;
setAttr -lock $Nom ($obj+".tx");
setAttr -lock $Nom ($obj+".ty");
setAttr -lock $Nom ($obj+".tz");
}
}
break ;
case "lockRot":
for($obj in $selectObj){
if(`attributeExists "r" $obj`){
int $Nom=`getAttr -lock ($obj+".rx")` ? 0 : 1;
setAttr -lock $Nom ($obj+".rx");
setAttr -lock $Nom ($obj+".ry");
setAttr -lock $Nom ($obj+".rz");
}
}
break ;
case "lockScl":
for($obj in $selectObj){
if(`attributeExists "s" $obj`){
int $Nom=`getAttr -lock ($obj+".sx")` ? 0 : 1;
setAttr -lock $Nom ($obj+".sx");
setAttr -lock $Nom ($obj+".sy");
setAttr -lock $Nom ($obj+".sz");
}
}
break ;
case "lockVis":
for($obj in $selectObj){
if(`attributeExists "v" $obj`){
int $Nom=`getAttr -lock ($obj+".v")` ? 0 : 1;
setAttr -lock $Nom ($obj+".v");
}
}
break ;
case "lockALL":
for($obj in $selectObj){
if(`attributeExists "t" $obj`){
int $Nom=`getAttr -lock ($obj+".tx")` ? 0 : 1;
setAttr -lock $Nom ($obj+".tx");
setAttr -lock $Nom ($obj+".ty");
setAttr -lock $Nom ($obj+".tz");
setAttr -lock $Nom ($obj+".rx");
setAttr -lock $Nom ($obj+".ry");
setAttr -lock $Nom ($obj+".rz");
setAttr -lock $Nom ($obj+".sx");
setAttr -lock $Nom ($obj+".sy");
setAttr -lock $Nom ($obj+".sz");
setAttr -lock $Nom ($obj+".v");
}
}
break ;
case "lockRelease":
for($obj in $selectObj){
if(`attributeExists "t" $obj`){
setAttr -lock 0 ($obj+".tx");
setAttr -lock 0 ($obj+".ty");
setAttr -lock 0 ($obj+".tz");
setAttr -lock 0 ($obj+".rx");
setAttr -lock 0 ($obj+".ry");
setAttr -lock 0 ($obj+".rz");
setAttr -lock 0 ($obj+".sx");
setAttr -lock 0 ($obj+".sy");
setAttr -lock 0 ($obj+".sz");
setAttr -lock 0 ($obj+".v");
}
}
break ;
case "hideTrs":
for($obj in $selectObj){
if(`attributeExists "t" $obj`){
int $Nom=`getAttr -keyable ($obj+".tx")` ? 0 : 1;
setAttr -keyable $Nom ($obj+".tx");
setAttr -keyable $Nom ($obj+".ty");
setAttr -keyable $Nom ($obj+".tz");
}
}
break ;
case "hideRot":
for($obj in $selectObj){
if(`attributeExists "r" $obj`){
int $Nom=`getAttr -keyable ($obj+".rx")` ? 0 : 1;
setAttr -keyable $Nom ($obj+".rx");
setAttr -keyable $Nom ($obj+".ry");
setAttr -keyable $Nom ($obj+".rz");
}
}
break ;
case "hideScl":
for($obj in $selectObj){
if(`attributeExists "s" $obj`){
int $Nom=`getAttr -keyable ($obj+".sx")` ? 0 : 1;
setAttr -keyable $Nom ($obj+".sx");
setAttr -keyable $Nom ($obj+".sy");
setAttr -keyable $Nom ($obj+".sz");
}
}
break ;
case "hideVis":
for($obj in $selectObj){
if(`attributeExists "v" $obj`){
int $Nom=`getAttr -keyable ($obj+".v")` ? 0 : 1;
setAttr -keyable $Nom ($obj+".v");
}
}
break ;
case "hideALL":
for($obj in $selectObj){
if(`attributeExists "t" $obj`){
int $Nom=`getAttr -keyable ($obj+".tx")` ? 0 : 1;
setAttr -keyable $Nom ($obj+".tx");
setAttr -keyable $Nom ($obj+".ty");
setAttr -keyable $Nom ($obj+".tz");
setAttr -keyable $Nom ($obj+".rx");
setAttr -keyable $Nom ($obj+".ry");
setAttr -keyable $Nom ($obj+".rz");
setAttr -keyable $Nom ($obj+".sx");
setAttr -keyable $Nom ($obj+".sy");
setAttr -keyable $Nom ($obj+".sz");
setAttr -keyable $Nom ($obj+".v");
}
}
break ;
case "hideRelease":
for($obj in $selectObj){
if(`attributeExists "t" $obj`){
setAttr -keyable 1 ($obj+".tx");
setAttr -keyable 1 ($obj+".ty");
setAttr -keyable 1 ($obj+".tz");
setAttr -keyable 1 ($obj+".rx");
setAttr -keyable 1 ($obj+".ry");
setAttr -keyable 1 ($obj+".rz");
setAttr -keyable 1 ($obj+".sx");
setAttr -keyable 1 ($obj+".sy");
setAttr -keyable 1 ($obj+".sz");
setAttr -keyable 1 ($obj+".v");
}
}
break ;
}
}
前回同様にSwitch式で書いてます。
(これしか知らないんです!!w)絶対スマートな書き方があると思ってますのでもっとスッキリした書き方があれば教えて下さい!!
まとめ
以上。【Python学習】Lv13 MEL ロック&ハイドでした。
自分でツールを作ると愛着が湧きますねー
特にGUI(Graphical User Interface)。
どういう風にボタン等のレイアウトを配置したら使いやすいか、色は何が良いか。
それを考えている時間が楽しいです♪
一通り組みたいMELを組み終えたら、まだ読んでいないもう1冊の本を読み始めようかなと思います。
次回
次回も引き続きMELのご紹介 次は『エッジカラーのボタン化』について書きます。