/*
naOmmitNameSpace.mel v1.0.1
Date Created: September 04, 2011
Last Modified: March 09, 2012
Author: Nathaniel Anozie
ogbonnawork at gmail dot com
nathanielanozie dot blogspot dot com
Acknowledgement: Anoop A.K www dot codecg dot com for learning about array manipulation
Brian Ewert www dot xyz2 dot net for learning about groups
Rob Bateman web tutorials for learning about render layers
Purpose:
rename polygon objects by omitting names spaces
rename lambert materials by omitting names spaces
Why: After I imported new objects using default import maya settings. I ended up with namespaces. This relates to
simplifying names. Current version covers (groups, curves, meshes, materials)
How to install:
tested for Maya 2008
source script in Maya
//source naGeneral.mel -- getting types of objects
type for mel
renameMaterials()
to rename all materials in scene omitting namespace
renameMeshObjects()
to rename all polygon objects in scene omitting namespace
renameCurveObjects()
to rename curve objects in scene omitting namespace
renameGroupObjects()
to rename groups in scene omitting namespace
renameLayers()
to rename all render layers in scene omitting namespace
releases:
naOmmitNameSpace.mel v1.0.1
added render Layer support
refined rename material to include material info and shading engine
naOmmitNameSpace.mel v1.0.0
*/
//rename materials
// no arguments needed
global proc renameMaterials(){
string $mat[] = getListAllCreatedLambertMaterials();
//use mat to get list of all material info
string $matInfo[] = getListAllMaterialInfo($mat);
//get list of all shading engine
string $shade[] = getListAllShadingEngine($mat);
renameByRemovingNameSpace( $mat );
renameByRemovingNameSpace( $matInfo );
renameByRemovingNameSpace( $shade );
}
//rename mesh objects
// no arguments needed
global proc renameMeshObjects(){
string $objects[] = getListAllObjectsByType(12);
renameByRemovingNameSpace( $objects );
}
//rename curve objects
// no arguments needed
global proc renameCurveObjects(){
string $objects[] = getListAllCurves();
renameByRemovingNameSpace( $objects );
}
//rename group objects
// no arguments needed
global proc renameGroupObjects(){
string $objects[] = getListAllCreatedGroupObjects();
renameByRemovingNameSpace( $objects );
}
//rename joint objects
// no arguments needed
global proc renameJointObjects(){
string $objects[] = getListAllJoints();
renameByRemovingNameSpace( $objects );
}
/**rename layers
*/
global proc renameLayers(){
string $layers[] = getListAllCreatedLayers();
renameByRemovingNameSpace( $layers );
}
/**rename nurbs surface
*/
global proc renameNurbs(){
string $objects[] = getListAllNurbs();
renameByRemovingNameSpace( $objects );
}
/*rename by removing name space in old names
@param $oldNames a string array to rename, examples are ads:car1, ads:characterA
*/
global proc renameByRemovingNameSpace( string $oldNames[] )
{
//tokenize the name
//create string array buffer
string $buffer[]; //store tokens for every object
string $newName; //store new name for every object
for( $old in $oldNames )
{
//tokenize object ":" buffer
tokenize $old ":" $buffer;
//the last element of array is the object
$newName = $buffer[ ( size($buffer)-1 ) ];
//rename the object to the string
renameNonReadOnly($old, $newName);
//clear token array;
clear $buffer;
}
}
/**renames a non read only node
@param $old string old name
@param $new string new name
*/
global proc renameNonReadOnly(string $old, string $new)
{
if(`objExists $old`){
//rename the object to the string
rename $old $new;
}else{ print("node not found, skipping: "+$old); }
}