编辑(解决方案?):我能够通过将数组转换为字符串并在另一端解析并重新创建它们来实现这一点。如果有人有更好的方法,我将不胜感激。
原件:
我创建了一个扩展MPxCommand
的类来创建插件,并且一直在尝试了解如何解析doIt()
函数中的MArgList
,以便从args变量中提取两个列表。我正在尝试拉取一个字符串列表和一个长度不一致的int列表,因此当我调用该命令时,我将无法(我认为)多次填充该标志。
我已经用MArgParser
成功地提取了单个变量,但还没有找到提取完整列表的方法。
对于函数asStringArray(index)
和asIntArray(index)
,MArgList
似乎有我想要的东西,但是当我使用try using它们时,我得到了错误:
# 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
如果我运行cmds.myCommand(s = "hello")
,这段代码将把"hello“从args
放入self.myStr
,但我希望能够运行cmds.myCommand(s = ["hello", "world"])
,能够从args
变量获取数组并将其放入self.myStr
。
我希望这能澄清我想要做的事情。
发布于 2015-07-02 13:11:58
我认为您的问题在于该函数的声明:
'MArgList_asIntArray', argument 2 of type 'unsigned int &'
int &
是一个对整数的引用,也就是你给函数的一个整数,函数会改变它,你的变量也会反映出这些变化。
所以你可能已经看到了:传递一个常量是不可能的。
我对python一点都不感兴趣,所以我不知道简单地声明一个int,初始化它,然后将它作为参数2传递给函数是否足够。
https://stackoverflow.com/questions/26004396
复制