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;
}