2015年2月1日日曜日

コンストレイント逆転mel

ついに会社の人に、このブログの存在がばれてしまった。。。
別に隠していたわけではないけども、恥ずかしいものです。。。(汗
こっぱずかしいので、名前もニックネーム表示に変更!でい!

…まあ、それはそれとして、本題です。
表題の件。
会社で割と要望が多い「コンストレイント逆転mel」です。
難しい処理ではないですが、せっかくなので、簡単に作ったソースをUPしておきます。

--------------------
使い方・挙動について

①melを立ち上げます。
②コンストレイントでつながっているノードを選択
③ボタンを押します。
④コンストレイントが逆転します。
・pointConstraint、orientConstraint、scaleConstraintそれぞれの元ソースのノードに
  コンストレイントがつなぎなおされます。
・オフセット設定です。
 近いうち、オプション設定を作って、ウインドウ上でオフセット設定や、
 対象のコンストレイントの選択など、行えるようにしようと思います。

とりあえず、、、な感じですが、上げておきます。
----------------------
proc REVERSE_CONSTRAINT(){
    string $NODE_LIST[] = `ls -sl`;
    string $NODE_NAME;
    if(size($NODE_LIST)>0){    
        for($NODE_NAME in $NODE_LIST){
            string $pointConstraint_LIST[] = `pointConstraint -q -tl`;            
            string $orientConstraint_LIST[] = `orientConstraint -q -tl`;
            string $scaleConstraint_LIST[] = `scaleConstraint -q -tl`;
            string $TAGET_NODE;            
            //pointConstraint
            if(size($pointConstraint_LIST)>0){
                delete `pointConstraint -q -n`;                
                for($TARGET_NODE in $pointConstraint_LIST){
                    pointConstraint -mo $NODE_NAME $TARGET_NODE;
                }
            }
            //orientConstraint;
            if(size($orientConstraint_LIST)>0){
                delete `orientConstraint -q -n`;                
                for($TARGET_NODE in $orientConstraint_LIST){
                    orientConstraint -mo $NODE_NAME $TARGET_NODE;
                }
            }
            //scaleConstraint;
            if(size($scaleConstraint_LIST)>0){
                delete `scaleConstraint -q -n`;                
                for($TARGET_NODE in $scaleConstraint_LIST){
                    scaleConstraint -mo $NODE_NAME $TARGET_NODE;
                }
            }
        }       
    }
}

if(`window -q -exists REVERCE_CONSTRAINT`)deleteUI REVERCE_CONSTRAINT;
window -s 0 REVERCE_CONSTRAINT;
    columnLayout -adj 1 ;
        text -l "Select Constrainted Node,and press Button."
        separator;
        button -l "Reverce Constraint" -c REVERSE_CONSTRAINT;
    setParent..;

showWindow REVERCE_CONSTRAINT;


0 件のコメント:

コメントを投稿