【问题标题】:Using maya python api - how do I change selected object name into upper case?使用 maya python api - 如何将选定的对象名称更改为大写?
【发布时间】:2016-02-10 23:18:22
【问题描述】:

我有以下代码:

import maya.cmds as cmds

list = cmds.ls(sl=True)

my_list = [object.upper() for object in list]

print(my_list)

但是,它不会更改对象的名称,即使它在最后的 print 语句中打印出大写名称。

【问题讨论】:

  • 无论如何不能。字符串是不可变的
  • objects 这些是什么对象?
  • 谢谢。好的。因为我有对象名称 pCube1... 我想更改为大写。
  • 我非常感谢您的回答。非常感谢!

标签: python maya-api


【解决方案1】:

你想要的是

import maya.cmds as cmds

list = cmds.ls(sl=True)
for n in list:
    cmds.rename(n, n.upper())

new_list = cmds.ls(sl=True)
print(new_list)

这是documented here 的示例。

此代码将重命名list 中的所有对象,如果您愿意,您也可以使用您在cmds.select() 中选择的任何对象。

【讨论】:

  • @epadilla 太棒了 - 请不要忘记打勾 :)
【解决方案2】:

“变异”字符串的正确方法是使用切片和连接 通过从旧字符串的部分复制来构建新字符串。

【讨论】:

  • 谢谢。例如,我选择了不同的对象,我想将对象的名称更改为大写。
【解决方案3】:

这很hackish,老实说我不推荐它,但如果你真的想这样做,你可以这样做:

def global_var_to_upper(var):
    for _ in globals():
        if var is globals()[_]:
            globals()[str(_).upper()] = globals()[_]
            del globals()[_]
            break

abc = 123
global_var_to_upper(abc)
print(ABC) # prints 123

【讨论】:

  • 虽然我很欣赏这种独创性 - 我认为这不是 OP 所追求的(更改实际变量名称)。我认为他们在谈论maya 中的对象名称。当然可能是错的。
  • 我的基础是“它不会改变对象的名称,只是结果”,我认为(虽然当然不知道)是指目的。当然,你很可能是对的。 OP相当模糊。
  • 是的 - 根据对我的回答的 OP 评论,我将 Q 编辑得更具体。 TBH - 我对你重命名实际对象名称的技巧印象深刻!
  • 太棒了。我会试试这个。非常感谢!
  • @JRichardSnape 我希望这不是屈尊俯就,但它只是创建了对原始对象的新引用并删除了原始对象。不过,这是一个巧妙的技巧。
猜你喜欢
  • 1970-01-01
  • 2018-07-13
  • 2021-01-26
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
相关资源
最近更新 更多