我試圖在Python中創建while loop
以在Autodesk Maya中查找鏈中的下一項。它循環遍歷對象的層次結構,直到找到具有某個特定屬性的對象。目前它首先檢查當前對象是否沒有父對象,然後檢查它是否具有屬性parent
,如果它不會進入while loop
,並且將打印語句。Effective While循環鏈中的下一個對象
如果對象確實有父對象,只要對象有父對象,它就會運行while loop
。下面的代碼列出了選擇對象的父:
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))
我有點困惑。 listRelative'調用的意義究竟是什麼?他們是否找到元素或其他東西的「父母」?這種父母與「父母」屬性之間的關係是什麼? – Blckknght 2014-10-09 21:11:45