我正在尝试while loop
在 Python 中创建一个在 Autodesk Maya 中查找链中的下一个项目。它循环遍历对象的层次结构,直到找到具有特定属性的对象。目前它首先检查当前对象是否没有父对象,然后检查它是否有属性parent
,如果有,它不会进入while loop
,并打印一条语句。
如果对象确实有父对象while loop
,只要对象有父对象,它就会运行 a 。以下代码列出了该选定对象的父级:
while pm.listRelatives( pm.ls( sl = True ), p = True ):
然后它将检查当前对象是否具有该属性,如果没有,它将选择层次结构中的下一个对象,直到有,如果到达下一个结束,它将跳出循环。我想知道,有没有更有效的方法来做到这一点?最好是一种方法,while loop
即使它无法在链中找到下一个对象,它也能工作。
import pymel.core as pm
if not pm.listRelatives( pm.ls( sl = True )[ 0 ], p = True ):
if pm.attributeQuery( 'parent', n = pm.ls( sl = True, tl = True )[ 0 ], ex = True ) == 1:
print 'found parent on no parent ' + pm.ls( sl = True, tl = True )[ 0 ]
else:
while pm.listRelatives( pm.ls( sl = True ), p = True ):
if pm.attributeQuery( 'parent', n = pm.ls( sl = True, tl = True )[ 0 ], ex = True ) == 1:
print 'found parent on selected ' + pm.ls( sl = True, tl = True )[ 0 ]
break
else:
print 'parent not found'
pm.select( pm.listRelatives( pm.ls( sl = True, tl = True ), p = True ) )