在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创建一个(基本上复制它)。
如果在课堂上无法真正做到这一点,有没有人知道为什么以这种方式实施?
答案 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
列表