我试着检查一个物体上是否有一个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会返回一个字符串。所以如果字符串是空的,它应该打印出错误而不是“obj,skincluster”。在
任何帮助都将不胜感激!在
这是一个经典的Maya问题,问题是Maya经常希望给您列表,而不是单个项目,即使您知道结果应该是单个项目。这意味着您最终要编写一堆代码,要么从一个项目列表中获取一个项目,要么为了避免由于试图将索引放入空列表而导致的错误。在
你已经掌握了基本知识,是
== ""
把你搞砸了:or [None]
保证您将始终得到一个包含内容的列表,因此可以安全地使用[0]
来获取单个值。None在这里是一个很好的返回值,因为(正如注释中所指出的),您可以if cluster:
并跳过空值。在相关问题 更多 >
编程相关推荐