先看效果
代码如下
def gui():
windowName = 'renameScriptWindow'
windowTitle = '重命名1.0'
try:
cmds.deleteUI(windowName)
except:
pass
cmds.window(windowName,title=windowTitle)
cmds.columnLayout(adj=True)
cmds.rowLayout(numberOfColumns=2,columnWidth2=(75,150),adj=2)
cmds.text(l='name:')
cmds.textField('renameTF')
cmds.setParent('..')
cmds.rowLayout(numberOfColumns=1,columnWidth3=(100,100,100))
cmds.text(l="+:开头加前缀,+:结尾加后缀,+后缀*:加后缀和数字",backgroundColor=[0.4, 0.8, 0.9])
cmds.setParent('..')
cmds.rowLayout(numberOfColumns=2,columnWidth3=(75,100,100))
cmds.text(l='Start&Pad:')
cmds.textField('paddingTF',tx='1,3')
cmds.setParent('..')
cmds.rowLayout(numberOfColumns=1,columnWidth3=(100,100,100))
cmds.text(l='start:从数字几开始 pad:使用几个数字来补位。',backgroundColor=[0.4, 0.8, 0.9])
cmds.setParent('..')
cmds.button(l='重命名吧',h=50,c='renewName()',backgroundColor=[0.4, 0.8, 0.1])
cmds.window(windowName,e=True,w=300,h=1)
cmds.showWindow(windowName)
def renewName():
list_sel = cmds.ls(sl=True)
str_input = cmds.textField('renameTF',q=True,tx=True)
str_padding = cmds.textField('paddingTF',q=True,tx=True)
str_starting,str_padding = str_padding.split(',')
str_number = str_starting.zfill(int(str_padding))
for name_l in list_sel:
name_s = name_l
if '|' in name_l:
name_s = name_l.rsplit('|',1)[1]
str_editer = str_input
new_number = str_number
if '*' in str_input:
import string
name_s = name_s.rstrip(string.digits)
str_editer = str_input.replace('*',str_number)
new_number = ''
if ',' in str_input:
search,replace = str_editer.split(',')
if search in name_s:
new_name = name_s.replace(search,replace)
cmds.rename(name_l,new_name)
elif '+' in str_input:
buffer = str_editer.split('+')
if buffer[0] == '':
new_name = name_s + buffer[1]
elif buffer[1] == '':
new_name = buffer[0] + name_s
cmds.rename(name_l,new_name)
else:
cmds.rename(name_l,str_editer + new_number)
str_number = str(int(str_number)+1).zfill(int(str_padding))
gui()
renewName()