Skip to content

Instantly share code, notes, and snippets.

@EricTRocks
Last active July 27, 2021 12:34
Show Gist options
  • Save EricTRocks/efbf803fecfbffc6d9a0a19f4bf2f5fa to your computer and use it in GitHub Desktop.
Save EricTRocks/efbf803fecfbffc6d9a0a19f4bf2f5fa to your computer and use it in GitHub Desktop.
Simple Object Renamer Script / UI for Maya
import pymel.core as pm
def rename(cmpNameField, cmpLocationField, nameField, typeField):
sel = pm.ls(selection=True)
# Get Values of Fields
cmpName = pm.textField(cmpNameField, query=True, text=True)
cmpLocation = pm.optionMenu(cmpLocationField, query=True, value=True)
objName = pm.textField(nameField, query=True, text=True)
objType = pm.optionMenu(typeField, query=True, value=True)
typeMap = {
'control': 'ctrl',
'component': 'cmp',
'componentIn': 'cmpIn',
'componentOut': 'cmpOut',
'hrc': 'hrc',
'srtBuffer': 'srtBuffer',
'locator': 'loc',
'joint': 'jnt'
}
if cmpName == '':
pm.warning('Component Name field is empty!')
return False
# Do the renaming
if objType in ('component', 'hrc'):
if objType == 'hrc':
if objName == '':
pm.rename(sel[0], "{}_{}_{}".format(cmpName, cmpLocation, typeMap[objType]))
else:
pm.rename(sel[0], "{}_{}_{}_{}".format(cmpName, cmpLocation, objName, typeMap[objType]))
else:
pm.rename(sel[0], "{}_{}_{}".format(cmpName, cmpLocation, typeMap[objType]))
elif len(sel) == 1:
if objName == '':
pm.warning('Object Name field is empty!')
return False
pm.rename(sel[0], "{}_{}_{}_{}".format(cmpName, cmpLocation, objName, typeMap[objType]))
else:
if objName == '':
pm.warning('Object Name field is empty!')
return False
for i, each in enumerate(sel):
pm.rename(each, "{}_{}_{}_{}".format(cmpName, cmpLocation, objName + str(i+1).zfill(2), typeMap[objType]))
def objTypeChange(typeField, nameField):
objType = pm.optionMenu(typeField, query=True, value=True)
if objType == 'component':
nameField = pm.textField(nameField, edit=True, text='')
nameField = pm.textField(nameField, edit=True, enable=False)
else:
nameField = pm.textField(nameField, edit=True, enable=True)
windowID = 'etQuickRenamer'
if pm.window(windowID, exists=True):
pm.deleteUI(windowID, window=True)
window = pm.window(windowID, widthHeight=(200, 225))
pm.window(window, edit=True, widthHeight=(200, 225))
layout = pm.rowColumnLayout(numberOfColumns=2, columnAttach=(1, 'left', 10), rowSpacing=(1, 5), columnWidth=[(1, 90), (2, 100)])
pm.text(label='Component')
cmpNameField = pm.textField()
pm.text(label='Location')
cmpLocationField = pm.optionMenu()
pm.menuItem(label='L')
pm.menuItem(label='M')
pm.menuItem(label='R')
pm.text(label='Object Name')
nameField = pm.textField()
pm.text(label='Object Type')
typeField = pm.optionMenu(changeCommand='objTypeChange(typeField, nameField)')
pm.menuItem(label='component')
pm.menuItem(label='hrc')
pm.menuItem(label='control')
pm.menuItem(label='srtBuffer')
pm.menuItem(label='locator')
pm.menuItem(label='joint')
pm.menuItem(label='componentIn')
pm.menuItem(label='componentOut')
pm.separator(style=None)
pm.separator(style=None)
pm.button(label='Rename', height=50, width=180, command='rename(cmpNameField, cmpLocationField, nameField, typeField)')
typeField = pm.optionMenu(typeField, edit=True, select=3)
objType = pm.optionMenu(typeField, query=True, value=True)
if objType == 'component':
nameField = pm.textField(nameField, edit=True, enable=False)
pm.showWindow()
pm.windowPref(window, remove=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment