如何从maya中的MArgList中提取列表?(Python)

时间:2014-09-23 20:43:15

标签: python maya

编辑(解决方案?):我能够通过将我的数组转换为字符串并解析并在另一端重新创建它来实现这一目的。如果有人有更好的方式,我会很感激。

原件:

我创建了一个扩展MPxCommand以创建插件的类,并且一直试图弄清楚如何解析MArgList函数中的doIt()以拉出几个列表来自args变量。我试图拉出一个字符串列表和一个列表整数将具有不一致的长度,所以当我调用命令时,我将无法(我认为)多次填充该标志。

我已成功使用MArgParser提取个别变量但尚未找到完整列表的方法。

MArgList似乎有我想要的功能asStringArray(index)asIntArray(index)但是当我使用它们尝试使用它时我得到错误:

# Error: TypeError: file Command.py line 163: in method 'MArgList_asIntArray', argument 2 of type 'unsigned int &' # 

编辑:

class myCommand(omMPx.MPxCommand):
    def __init__(self):
        omMPx.MPxCommand.__init__(self)

    def newSyntax(self):
        syntax = om.MSyntax()

        syntax.addFlag("-s", "-string", om.MSyntax.kString)
        return syntax

    def doIt(self, args):

        stringFlag = "-s"
        parser = om.MArgParser(self.newSyntax(),args)

        if parser.isFlagSet(stringFlag):
            self.myStr = parser.flagArgumentString(stringFlag, 0)
            print self.myStr

如果我运行args,此代码会将self.myStr中的“hello”加入cmds.myCommand(s = "hello"),但我希望能够运行cmds.myCommand(s = ["hello", "world"])并且能够从args变量中获取数组并将其放入self.myStr

我希望能够清除我想要做的事情。

1 个答案:

答案 0 :(得分:0)

我认为你的问题出在该函数的声明中:

'MArgList_asIntArray', argument 2 of type 'unsigned int &'

int &是对int的引用,即你赋予函数的int,函数会改变它,你的变量将反映这些变化。

所以也许你已经看到了:传递常数是不可能的。

我根本没有进入python,所以我不知道简单地声明一个int,初始化它然后将它作为参数2传递给函数是否足够。