代码之家  ›  专栏  ›  技术社区  ›  silent_sight

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

  •  1
  • silent_sight  · 技术社区  · 8 年前

    在maya中,我想制作一个 OpenMaya MSelectionList 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,循环遍历一个列表,添加它们,然后返回它;我只是想知道我已经完全看清楚了一些明显的东西?从我在文档中可以看出,您只能创建一个空的MSelectionList,或者通过传递另一个MSelectionList来创建一个(基本上是复制它)。

    1 回复  |  直到 8 年前
        1
  •  2
  •   theodox    8 年前

    MSelectionList最终是对象指针C++列表的包装器(Maya api与众不同,它使用不同的 function sets

    Implementing variadic functions in C++

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

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

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

    推荐文章