有没有更快的方法来填充MSelectionList?

时间:2017-08-09 17:00:58

标签: python maya maya-api

在maya中,我想创建一个OpenMaya MSelectionList(api版本2.0),其中包含多个项目...我只能填充{{1像这样的方法:

add

只用几件物品就可以填充它,但是如果你有更多的东西就很麻烦...我想知道是否有办法做更像这样的事情:

import maya.api.OpenMaya as om

selList = om.MSelectionList()
selList.add('node1')
selList.add('node2')
selList.add('node3')

我可以编写自己的函数来创建一个空的MSelectionList,循环遍历列表,然后添加它们然后返回它;我只是想知道我完全看过一些明显的东西?从我在文档中可以看出,你只能创建一个空的MSelectionList,或者通过传入另一个MSelectionList创建一个(基本上复制它)。

如果在课堂上无法真正做到这一点,有没有人知道为什么以这种方式实施?

1 个答案:

答案 0 :(得分:1)

MSelectionList最终是一个C ++对象指针列表的包装器(Maya api很不寻常,它使用不同的function sets来处理对象的不同方面,而不是更熟悉的经典继承使用树)。

Implementing variadic functions in C++并非微不足道(特别是在90年代设计Maya API的时候还没有。我怀疑没有人觉得它的价值基本上是语法糖。

sl = om.MSelectionList()
for node in nodelist:
    sl.add(n0de)

sl = om.MSelectionList()
[sl.add(n0de) for node in nodelist]

虽然我不推荐使用较短的版本,因为副作用产生无意义的Nones列表