Used to rename objects:
cmds.rename(oldName, newName)
Used in context:
# Load the maya commands library
from maya import cmds
# Create a new variable 'selection'
# Store in it the currently selected objects
selection = cmds.ls(selection=True)
# If the selection contains 0 lists
if len(selection) == 0:
# Then get all objects in the outliner and assign to 'selection'
# long=True : Gives us the full path to the object, so we can determine any parents.
# dag=True : We will only get objects which are listed in the outliner, and none of the hidden objects inside of Maya.
selection = cmds.ls(dag=True, long=True)
# Sort the list now stored in 'selection'
# Sort by length
# In reverse, giving us the longest path first
selection.sort(key=len, reverse=True)
# For each object now in the 'selection' variable
for obj in selection:
# Split the path by "|" (pipe)
# Store in a new variable 'shortName'
shortName = obj.split("|")[-1]
# Lets create a new variable to store the relatives
# We want to list the relatives, we only want the children, and we want the full path
# If there are no relative, return an empty list (or []), so that we always get a consistent object type output
children = cmds.listRelatives(obj, children=True, fullPath=True) or []
# If the length of the children is exactly 1 (remember this is in a for loop)
if len(children) == 1:
# Then put the object at position 0 in the chidren list into a new variable 'child'
child = children[0]
# Place the objecttype of the child variable in the variable 'objtype'
objtype = cmds.objectType(child)
else:
# Otherwise if the length of children is NOT 1 (so basically 0)
# Put the object type of the object in the objtype variable
objType = cmds.objectType(obj)
if objType == "mesh":
suffix = "geo"
elif objType == "joint":
suffix = "jnt"
elif objType == "camera":
# If we dont want to rename camera's, then provide this feedback in the output
print "Skipping camera"
# Tell the for loop to continue on to the next item
# and not perform any of the other logic in the for loop for this current item
continue
# If none of the above conditions are met, then perform the else: logic
else:
# If none of the above statements are true, then the suffix is group or 'grp'
suffix = "grp"
# Lets now create a string which contains the new amended object name, based on our code:
newName = shortName + "_" + suffix
# Confirm the names are being suffixed correctly in the output before making the final changes
print newName
# Lets now rename the object
cmds.rename(obj, newName)
