我有一个返回错误
的代码ValueError: No object matches name: s
我不确定为什么要寻找对象s
。
代码如下
import maya.cmds as cmds
def createOffsetGrp(objSel):
for obj in objSel:
p = cmds.listRelatives(obj,parent=True)
print (p)
createOffsetGrp('spine02_jnt')
按预期,打印命令应该吐出Spine01_jnt
的父级Spine02_jnt
有什么我想念的吗?
答案 0 :(得分:1)
由于使用Python进行鸭子输入,有时很难发现此类错误。这里发生的是您的函数期望将数组作为参数,但是您正在传递字符串。
Python还通过列出单个字符来支持对字符串进行迭代,这就是为什么它在s
中寻找spine02_jnt
的原因。在数组中传递字符串应该可以解决您的问题:
createOffsetGrp(['spine02_jnt'])
答案 1 :(得分:0)
除了crazyGamer之外,您还可以在字符串上提供一些支持:
import maya.cmds as cmds
def createOffsetGrp(objSel):
# isinstance is used to check the type of the variable :
# i.e: isinstance(objSel, int)
# basestring is a type combining unicode and string types
if isinstance(objSel, basestring):
objSel = [objSel]
for obj in objSel:
p = cmds.listRelatives(obj,parent=True)
print (p)
createOffsetGrp('spine02_jnt')