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

is there a quicker way to fill an MSelectionList?

在 maya 中,我想制作一个 OpenMaya MSelectionList(api 2.0 版),其中包含多个项目...我只能填写它使用 add 方法,如下所示:

import maya.api.OpenMaya as om

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

只用几个项目填充它没问题,但如果你有更多的东西就很乏味了……我想知道是否有办法做更多像这样的事情:

import maya.api.OpenMaya as om

selList = om.MSelectionList(['node1', 'node2', 'node3'])

我可以编写自己的函数来创建一个空的 MSelectionList,遍历一个列表,添加它们,然后 return;我只是想知道我是否完全看过一些明显的东西?根据我在文档中了解到的情况,您只能创建一个空的 MSelectionList,或者通过传入另一个 MSelectionList(基本上复制它)来创建一个。

如果这不能真正在 class 中固有地完成,有没有人知道为什么要这样实现?

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

Implementing variadic functions in C++ 不是微不足道的(尤其是在设计 Maya API 的 90 年代。我怀疑没有人觉得花时间花时间在语法糖上是值得的。

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

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

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