Maya Python skinCluster return 类型不是字符串?
Maya Python skinCluster return type not string?
我正在尝试检查对象上是否有 skinCluster。我的代码非常基础。这是一个例子:
cmds.select(d=True)
joint = cmds.joint()
skinnedSphere = cmds.polySphere(r=2)
notSkinnedSphere = cmds.polySphere(r=2)
skinTestList = [skinnedSphere, notSkinnedSphere]
# Bind the joint chain that contains joint1 to pPlane1
# and assign a dropoff of 4.5 to all the joints
#
cmds.skinCluster( joint, skinnedSphere, dr=4.5)
for obj in skinTestList:
objHist = cmds.listHistory(obj, pdo=True)
skinCluster = cmds.ls(objHist, type="skinCluster")
if skinCluster == "":
print(obj + " has NO skinCluster, skipping.")
else:
print obj, skinCluster
#cmds.select(obj, d=True)
我的问题是,即使它找不到 skincluster,它仍然打印出 "obj, skincluster" 而不是它找不到 skinCluster 的错误。
我以为一个skinCluster returns一个字符串。所以如果字符串为空,它应该打印出错误而不是 "obj, skincluster".
如有任何帮助,我们将不胜感激!
这是一个典型的 Maya 问题 -- 问题是 Maya 经常想给你列表,而不是单个项目,即使你知道结果应该是单个项目。这意味着您最终要编写一堆代码来从 one-item 列表中获取一个项目,或者避免因尝试将索引放入空列表而导致的错误。
你已经掌握了基础知识,是 == ""
把你搞得一团糟:
for obj in skinTestList:
objHist = cmds.listHistory(obj, pdo=True)
skinCluster = cmds.ls(objHist, type="skinCluster") or [None]
cluster = skinCluster[0]
print obj, cluster
or [None]
保证您总是会得到一个包含 某些内容 的列表,因此使用 [0]
获取单个值是安全的. None 在这里是一个很好的 return 值,因为(如评论中所指出的)您可以 if cluster:
并跳过空值。
我正在尝试检查对象上是否有 skinCluster。我的代码非常基础。这是一个例子:
cmds.select(d=True)
joint = cmds.joint()
skinnedSphere = cmds.polySphere(r=2)
notSkinnedSphere = cmds.polySphere(r=2)
skinTestList = [skinnedSphere, notSkinnedSphere]
# Bind the joint chain that contains joint1 to pPlane1
# and assign a dropoff of 4.5 to all the joints
#
cmds.skinCluster( joint, skinnedSphere, dr=4.5)
for obj in skinTestList:
objHist = cmds.listHistory(obj, pdo=True)
skinCluster = cmds.ls(objHist, type="skinCluster")
if skinCluster == "":
print(obj + " has NO skinCluster, skipping.")
else:
print obj, skinCluster
#cmds.select(obj, d=True)
我的问题是,即使它找不到 skincluster,它仍然打印出 "obj, skincluster" 而不是它找不到 skinCluster 的错误。
我以为一个skinCluster returns一个字符串。所以如果字符串为空,它应该打印出错误而不是 "obj, skincluster".
如有任何帮助,我们将不胜感激!
这是一个典型的 Maya 问题 -- 问题是 Maya 经常想给你列表,而不是单个项目,即使你知道结果应该是单个项目。这意味着您最终要编写一堆代码来从 one-item 列表中获取一个项目,或者避免因尝试将索引放入空列表而导致的错误。
你已经掌握了基础知识,是 == ""
把你搞得一团糟:
for obj in skinTestList:
objHist = cmds.listHistory(obj, pdo=True)
skinCluster = cmds.ls(objHist, type="skinCluster") or [None]
cluster = skinCluster[0]
print obj, cluster
or [None]
保证您总是会得到一个包含 某些内容 的列表,因此使用 [0]
获取单个值是安全的. None 在这里是一个很好的 return 值,因为(如评论中所指出的)您可以 if cluster:
并跳过空值。