重命名时替换字符
我正在尝试做一个简单的Maya重命名界面,但在某个地方卡住了——我想把当前名称中的开头字符替换成其他字符。
举个例子,Outliner里有3个物品(不管它们是什么):- pCube1,- pSphere1,- nurbsSphere1。
到目前为止,我已经能写出代码,能够选择并重命名一个或多个对象,见下面的代码:
objects = []
objects = cmds.ls(sl=True)
for obj in objects:
test = []
test = cmds.rename(obj, "pSphere" )
print objects
# Results: pSphere, pSphere2, pSphere3 #
但是,假设我现在选择了nurbsSphere1和pSphere1,我只想把它们中的'Sphere'这个词替换成'Circle',结果我想得到的结果是:nurbsCircle1, pCircle1
,但我却收到了一个错误信息:# TypeError: Too many objects or values. #
charReplace = "test"
if charReplace in objects:
newName = []
newName = cmds.rename(objects, "Circle" )
有没有什么建议呢?
1 个回答
1
- 根据文档,重命名命令只接受字符串作为输入参数。你在尝试重命名文件名时,提供了一个叫做
objects
的列表。 - 而且,你是在
objects
列表中搜索字符串"test"
。其实你应该在objects
列表中的每个文件名里搜索字符串"test"
。 rename
命令是用新的字符串替换旧的字符串。它并不会在一个字符串中替换子字符串(比如在“nurbsSphere”中替换“sphere”)。要实现这个功能,你需要单独创建新的文件名,然后用它们来重命名文件。
你可以试试这个:
charReplace = "test"
for filename in objects:
if charReplace in filename:
newFilename = filename.replace(charReplace, "Circle")
cmds.rename(filename, newFilename)
我没有安装Maya,所以代码没有经过测试。