比较和抓取项目属性



我的场景中有 3 个定位器,例如。
定位器01 - 本地比例 Y 值为 1
定位器02 - 本地比例 Y 值为 2
定位器03 - 本地比例 Y 值为 3

每个在其 localScaleY 中都有不同的值。我曾想比较这 3 个定位器的 localScaleY 值并抓取最高的一个(在本例中为 Locator03)

yMax = []
for yValue in pm.ls('locator*'):
    yMax.append(getAttr (yValue +'.localScaleY'))
    yMaxValue = max(yMax)
    print yMaxValue

因此,基于上述编码,当我将比较更多项目时,这是一种可行的编写方式吗?或者也许有更好的方法?

构建一个比例/对象元组的生成器,并取其max。通过将秤放在首位,可以正确max键。

locators = ((getAttr(locator+'.localScaleY'), locator) for locator in pm.ls('locator*'))
yMaxValue, locator = max(locators)

一些输出供参考:

>>> list(locators)
# Result: [(1.0, nt.Transform(u'locator01')),
           (2.0, nt.Transform(u'locator02')),
           (3.0, nt.Transform(u'locator03')),
           (1.0, nt.Locator(u'locator0Shape1')),
           (2.0, nt.Locator(u'locator0Shape2')),
           (3.0, nt.Locator(u'locator0Shape3'))] # 
>>> yMaxValue
# Result: 3.0 # 
>>> locator
# Result: nt.Locator(u'locator0Shape3') # 

虽然 mhlester 的答案有效,但我看不出生成器她的原因。我只想max()名单。

maxLoc = max(l.localScaleY for l in locs)
print '{} has the highest value in localScaleY: {}'.format(maxLoc.split('.')[0], maxLoc.get())

相关内容

  • 没有找到相关文章

最新更新