【问题标题】:Replacing characters in renaming重命名时替换字符
【发布时间】:2014-04-26 23:35:11
【问题描述】:

我正在尝试做一个简单的 Maya 重命名 UI,但我陷入了困境 - 用其他字符替换当前命名中的初始字符​​p>

例如; Outliner 中的 3 个项目(无论它们是什么):- pCube1,- pSphere1,- nurbsSphere1

到目前为止,我能够写到可以选择和重命名 1 个或多个对象的程度,请参见下面的代码

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,我收到一条错误消息 @987654323 @

charReplace = "test"
if charReplace in objects:
    newName = []
    newName = cmds.rename(objects, "Circle" )

有什么建议吗?

【问题讨论】:

  • 不应该是newName = cmds.rename(charReplace, "Circle")吗?
  • 嗨,我之前试过,它实际上将我的整个字符串替换为 Circle 而不是目标字符

标签: python rename maya


【解决方案1】:
  1. 根据documentation rename 命令只接受字符串作为输入参数。您在尝试重命名文件名时提供了一个名为 objects 的列表。
  2. 此外,您正在objects 列表中搜索字符串"test"。 相反,您应该在对象列表中存在的每个文件名中搜索字符串 "test"
  3. rename 命令将旧字符串重命名为新字符串。它不会替换字符串中的子字符串(例如“nurbsSphere”中的“sphere”)。为了实现这一点,您应该单独创建新文件名,然后使用它们重命名文件。

你可以试试这个:

charReplace = "test"
for filename in objects:
    if charReplace in filename:
        newFilename = filename.replace(charReplace, "Circle")
        cmds.rename(filename, newFilename)

我没有安装 Maya,所以没有测试代码。

【讨论】:

  • 酷,它有效...我认为既然我能够让我的第一部分运行,后者的工作原理大致相同。我想我错了,而且我对 python 工作原理的理解仍然不存在
  • 在第一部分,你也做了同样的事情。你从objects(使用for循环)中一一获取obj,然后重命名它们。如果你想学习 Python,我建议这 3 个链接:1.Learn Python The Hard Way,2.Interactive Python tutorial 和 3.Python for beginners。正如您所提到的,给定的解决方案有效。请接受它作为答案。
猜你喜欢
  • 1970-01-01
  • 2022-01-04
  • 2018-12-31
  • 1970-01-01
  • 2017-04-01
  • 2017-11-11
  • 2021-05-23
  • 1970-01-01
  • 2021-10-08
相关资源
最近更新 更多