在maya python 2.0 API中指定自定义节点上属性数组的大小

在maya python 2.0 API中指定自定义节点上属性数组的大小,python,maya,maya-api,Python,Maya,Maya Api,我对节点编写和Maya的Python2.0API比较陌生,我正在创建一个自定义节点,使用预先确定的输入点数量进行一些计算。为了我们的目的,我们将说7点 我已在节点类的initialize方法中使用以下代码成功地将复合数组属性添加到节点: cAttr = OpenMaya.MFnCompoundAttribute() node.test = cAttr.create('test','t') xv = OpenMaya.MFnUnitAttribute() node

我对节点编写和Maya的Python2.0API比较陌生,我正在创建一个自定义节点,使用预先确定的输入点数量进行一些计算。为了我们的目的,我们将说7点

我已在节点类的initialize方法中使用以下代码成功地将复合数组属性添加到节点:

    cAttr = OpenMaya.MFnCompoundAttribute()
    node.test = cAttr.create('test','t')

    xv = OpenMaya.MFnUnitAttribute()
    node.testX = xv.create('testX','tx',OpenMaya.MFnUnitAttribute.kDistance)
    xv.storable = True
    xv.writable = True
    cAttr.addChild(node.testX)

    xv = OpenMaya.MFnUnitAttribute()
    node.testY = xv.create('testY','ty',OpenMaya.MFnUnitAttribute.kDistance)
    xv.storable = True
    xv.writable = True
    cAttr.addChild(node.testY)

    xv = OpenMaya.MFnUnitAttribute()
    node.testZ = xv.create('testZ','tz',OpenMaya.MFnUnitAttribute.kDistance)
    xv.storable = True
    xv.writable = True
    cAttr.addChild(node.testZ)

    cAttr.array = True 

    node.addAttribute(node.test)
既然有了这些元素,如何指定node.test(cAttr)数组包含7个元素


非常感谢

如果在定义化合物时要求为数组设置默认大小或固定大小,则没有解决方案

您所能做的就是在创建每个实例后立即为其设置属性数组。为此,需要实现postConstructor()方法。在自定义python对象实例成为有效的Maya节点后,Maya核心会立即调用该方法

postConstructor()->self

在创建用户定义的节点时,maya会在内部创建两个对象,即内部MObject和用户派生的对象。 在调用MPxNode构造函数之前,不会建立这两个对象之间的关联。这意味着不能从MPxNode构造函数调用任何MPxNode成员函数。
当可以安全地调用任何MPxNode成员函数时,将在构造函数之后立即调用postConstructor

如果在定义化合物时要求为数组设置默认大小或固定大小,则没有解决方案

您所能做的就是在创建每个实例后立即为其设置属性数组。为此,需要实现postConstructor()方法。在自定义python对象实例成为有效的Maya节点后,Maya核心会立即调用该方法

postConstructor()->self

在创建用户定义的节点时,maya会在内部创建两个对象,即内部MObject和用户派生的对象。 在调用MPxNode构造函数之前,不会建立这两个对象之间的关联。这意味着不能从MPxNode构造函数调用任何MPxNode成员函数。 当可以安全地调用任何MPxNode成员函数时,将在构造函数之后立即调用postConstructor