[Maya 2011]大量にインスタンス化したシェイプを全部置き換える。

困ったので書いておこう。
Aというオブジェクトをインスタンス化して大量に配置した後、AをBというオブジェクトに置き換えたい場合の手順。



1.Mayaの「修正>オブジェクトの置き換え」はシェイプノードに対して行うことが出来ないのでまずはAのshapeノードを使っているtransformノードを選択する必要があります。
UIからだとポチポチ選択するしかなく面倒臭いので、shapeAノードを選択して以下のMELを実行。

{
    string $a[] = `ls -sl`;
    string $b[];
    int $nt;
    $nt = `tokenize $a[0] "|" $b`;
    select -cl;
    string $s[] = `ls -ap $b[$nt-1]`;
    {
        string $c;
        for ( $c in $s )
        {
            select -add `firstParentOf($c)`;
        }
    }
}

これでshapeAを使っている全てのtransformノードが選択されます。


2.[shift]キーを押しながらBを選択(アウトライナの場合は[ctrl])


3.修正>オブジェクトの置き換え を実行


もっとスマートな方法があるのかもしれないので知ってる人居たら教えてください。
デフォルトの機能でありそうなものだけども…