2016年12月22日木曜日

ノードのアトリビュート名を調べる。

セッターやゲッター使うときにアトリビュートの名称を調べるのがなかなか大変。
使っていくうちに覚えたりはするのですが、しばらく経つと忘れたりするし、ロング名じゃなくてショート名が使いたかったりすることも有ります。

手っ取り早く調べるなら、スクリプトエディタの"Echo All Commands"にチェックを入れて、アトリビュートエディタを操作したログで確認するとか。
スライダー操作のものは分からなかったりしますけどね。

他にはシーンをASCIIで保存して、調べるとか。


どちらも面倒な事には違いがないので、調べるMELを組んでしまいます。


global proc tryGetAttrName(
    string $node,
    string $sea )
{
    string $attrs[] =`listAttr $node`;
    string $sAttrs[]=`listAttr -sn $node`;
    
    string $lowSea=tolower( $sea );
    string $lowAttr;
    print("\n--- "+$node+" ---------\n");
    int $i=0;
    for( $attr in $attrs )
    {
        $lowAttr=tolower( $attr );
        if( ""==$lowSea
         || `gmatch $lowAttr ("*"+$sea+"*")` )
        {
            print($attr+": "+$sAttrs[$i]+"\n");
            
        }
        
        $i++;
        
    }
    print("\n-----------------------\n");
    
}



ノード名とざっくりとしたアトリビュート名を渡せば、「ロング名」:「ショート名」がスクリプトエディタのログに表示されます。


たとえば

tryGetAttrName( "locator1","disp" );

とするとロングのアトリビュート名に"disp"が含まれるものが表示されます。


ほかには、

tryGetAttrName( "locator1","" );

みたいに調べたいアトリビュート名を""にすると全てのアトリビュート名が表示されます。

0 件のコメント:

コメントを投稿