Maya の Reference Editor は余裕なくぴっちり表示されるわ、ソートは出来ないわでまあごちゃごちゃと見づらい。

まずはリストを見やすくしつつ並べ替えるために、アンダーバーを付けまくる。

使っていないリファレンスの削除やら、ネームスペース末尾を 1 から A に等々、もろもろ仕様に沿うように整理。

整理が終わったら再度実行、RN を入力して Maya の命名規則に則ってリネーム。

元通りに。

リファレンスのソートは MEL の機能としてあるわけではなく、エディターの表示を無理矢理いじっているので Reference Editor を閉じると元にもどる。

Stmg_RenameReferenceNode.mel

// rename reference node based on its related namespace.
if( "Rename" == `promptDialog -t "Rename Reference Node"
                    -m "Suffix: ( \"RN\" to rename based on Maya's naming convention )"
                    -text "________________"
                    -b "Rename"
                    -b "Cancel"` )
{
    ReferenceEditor;

    string $refList[] = sort(`ls -type "reference"`);
    for($ref in $refList)
    {
        if( catch(`referenceQuery -topReference -rfn $ref` != $ref) )
        {
            continue;
        }

        string $prefix = "";
        string $suffix = `promptDialog -q`;

        string $filename = `referenceQuery -filename $ref`;
        string $ns = "";
        if(`file -q -usingNamespaces $filename`)
        {
            $ns = `file -q -renamingPrefix $filename`;
        }
        else
        {
            // ignore no namespace
            continue;
        }

        string $name = `substitute "[0-9]+$" $ns ""`;
        string $number = `match "[0-9]+$" $ns`;

        // $suffix == RN or /^_+$/: special mode
        string $newName = $prefix+$name+$suffix+$number;
        if("RN" == $suffix)
        {
            $newName = $prefix+$name+$number+$suffix;
        }
        else if("" != `match "^_+$" $suffix` )
        {
            $newName = $prefix+$name+"___"+$number+$suffix;
        }

        lockNode -l false $ref;
        $ref = `rename $ref $newName`;
        lockNode -l true $ref;

    }


    // force reorder reference file list.
    string $set = `sets -empty`;
    $refList = sort(`ls -type "reference"`);
    for($ref in $refList)
    {
        sets -e -add $set $ref;
        referenceEditorViewSetCmd $set;
        refresh;
    }
    global string $gReferenceEditorPanel;
    filterUIClearFilter $gReferenceEditorPanel;
    delete $set;

}

良く読まれている技術ブログ記事

すべて Qiita一覧