如過你覺得這些字串太長了,你不需要,或production 規定名稱不能有namespace, 那以下的 mel 程式可以把 這些 namespace 去掉.
{
string $allNodes[] = `ls -l`;
string $allNamespaceNodes[];
for($each in $allNodes)
{
if(`gmatch $each "*:*"` && (`nodeType $each` != "reference") && (!`referenceQuery -isNodeReferenced $each`))
$allNamespaceNodes[size($allNamespaceNodes)] = $each;
}
int $nodeLevel[];
int $maxLevel=-1;
int $index = 0;
for($each in $allNamespaceNodes)
{
string $tokens[];
int $numToken =tokenize($each,"|",$tokens);
$nodeLevel[$index] = $numToken;
if($numToken > $maxLevel)
$maxLevel = $numToken;
$index+=1;
}
print("nodes to be renamed: "+size($allNamespaceNodes)+"\n");
int $index = $maxLevel;
while($index>=1)
{
int $index2=0;
for($each in $allNamespaceNodes)
{
if($nodeLevel[$index2] == $index)
{
if((`nodeType $each` != "reference") && (!`referenceQuery -isNodeReferenced $each`))
{
string $tokens[];
int $numToken = tokenize($each,":",$tokens);
string $shortName = $tokens[$numToken-1];
int $index=1;
string $newName = $shortName;
while(`objExists $newName`)
{
$newName = $shortName+$index;
$index+=1;
}
print ($each+" -> ");
string $result;
string $command = "rename "+$each+" "+$newName;
int $test = catch( $result = eval($command));
print ($result+"\n");
}
}
$index2+=1;
}
$index-=1;
}
}
nb : 這個程式只把 import 物件的namespace 去掉, reference 物件 的 namespace 還是會保留.
執行完之 這些 namespace 就消失了.
-> 如何把以上的mel 程式變成一個shelf 按鈕.
謝謝大大,大大謝謝^0^
回覆刪除這個讚,您真了不起,3Q~
回覆刪除好東西~ 謝謝了~!!!
回覆刪除2017 版
回覆刪除https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Maya/files/GUID-084E707F-7C78-4F9F-B1C1-4876EB19D997-htm.html