Я пытаюсь проверить, имеет ли объект skinCluster. Мой код довольно простой. Вот пример:Maya Python 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».
Любая помощь будет оценена!
Есть разные философии, что вернуть, если такого объекта нет. Также может быть «Нет» или «Неверно». Просто выполните отладочную печать для каждого объекта: 'print repr (skinCluster), type (skinCluster)', и вы должны это выяснить. – mkiever
вы также можете проверить, не является ли skinCluster :, что означает, что skinCluster пуст –
ls возвращает пустой список -> []. Вы можете проверить, как сказал вам Ари Голд: если не skinCluster, эквивалент if skinCluster == [] – DrWeeny