You don't want to do this:
mySuperNode.inValue = inValueHandle.asFloat()

mySuperNode.inValue is the MObject of your attribute so you're overriding it
to be a float

And you don't want to do this:
mySuperNode.outValue = mySuperNode.inValue
Here you're overriding your output MObject attribute to be the float that
you read from the input

What you want is this:

# Read the input value
inValueHandle = data.inputValue(mySuperNode.inValue)
inputValue = inValueHandle.asFloat()

# And then either
outHandle = data.outputValue(mySuperNode.outValue)
outHandle.setFloat(inputValue)
# or
plug.setFloat(inputValue)

data.setClean(plug)


Chad

On Mon, Aug 30, 2010 at 10:40 AM, Narann <[email protected]> wrote:

> It work now, I don't have answer... Really don't know... Maybe when I
> fill the output... :(
>
> On 30 août, 16:59, Narann <[email protected]> wrote:
> > Hi all. I have a question about python plugin node. It's very strange.
> > This code give me:
> >
> > // Error: TypeError: in method 'MDataBlock_inputValue', argument 2 of
> > type 'MObject const &'
> > # Traceback (most recent call last):
> > #   line 34 of file D:/3d/script/python/iterateMesh.py in module
> > compute
> > #     inValueHandle = data.inputValue(mySuperNode.inValue) //
> >
> > There is the code:
> >
> > import sys
> >
> > import maya.OpenMaya as OpenMaya
> > import maya.OpenMayaMPx as OpenMayaMPx
> >
> > kPluginNodeTypeName = "mySuperNode"
> >
> > blindDataMeshId = OpenMaya.MTypeId(0x87005)
> >
> > # Node definition
> > class mySuperNode(OpenMayaMPx.MPxNode):
> >
> >         # class variables
> >         inValue = OpenMaya.MObject()
> >         outValue = OpenMaya.MObject()
> >         outputMesh = OpenMaya.MObject()
> >
> >         # constructor
> >         def __init__(self):
> >
> >                 OpenMayaMPx.MPxNode.__init__(self)
> >
> >         def compute(self, plug, data):
> >
> >                 if plug == mySuperNode.outputMesh :
> >
> >                         # Read the input value
> >                         inValueHandle =
> data.inputValue(mySuperNode.inValue)
> >
> >                         mySuperNode.inValue = inValueHandle.asFloat()
> >
> >                         mySuperNode.outValue = mySuperNode.inValue
> >                         print str(mySuperNode.outValue)
> >
> >                         data.setClean(plug)
> >
> >                 else:
> >                         return OpenMaya.MStatus.kUnknownParameter
> >
> >                 return OpenMaya.MStatus.kSuccess
> >
> > # creator
> > def nodeCreator():
> >         return OpenMayaMPx.asMPxPtr( mySuperNode() )
> >
> > # initializer
> > def nodeInitializer():
> >
> >         typedAttr = OpenMaya.MFnTypedAttribute()
> >         numAttr = OpenMaya.MFnNumericAttribute()
> >
> >         # Setup the input attributes
> >         mySuperNode.inValue = numAttr.create("inputValue", "inValue",
> > OpenMaya.MFnNumericData.kFloat, 0.0)
> >         numAttr.setKeyable(True)
> >         numAttr.setStorable(True)
> >
> >         # Setup the output attributes
> >         mySuperNode.outputMesh = typedAttr.create("outputMesh",
> "outMesh",
> > OpenMaya.MFnData.kMesh);
> >         typedAttr.setStorable(False);
> >
> >         mySuperNode.outValue = numAttr.create("outputValue", "outValue",
> > OpenMaya.MFnNumericData.kFloat, 0.0)
> >         numAttr.setStorable(False)
> >
> >         # Add the attributes to the node
> >         mySuperNode.addAttribute(mySuperNode.inValue)
> >         mySuperNode.addAttribute(mySuperNode.outValue)
> >         mySuperNode.addAttribute(mySuperNode.outputMesh)
> >
> >         # Set the attribute dependencies
> >         mySuperNode.attributeAffects(mySuperNode.inValue,
> > mySuperNode.outValue)
> >         mySuperNode.attributeAffects(mySuperNode.inValue,
> > mySuperNode.outputMesh)
> >
> > # initialize the script plug-in
> > def initializePlugin(mobject):
> >         mplugin = OpenMayaMPx.MFnPlugin(mobject)
> >         try:
> >                 mplugin.registerNode( kPluginNodeTypeName,
> blindDataMeshId,
> > nodeCreator, nodeInitializer)
> >         except:
> >                 sys.stderr.write( "Failed to register node: %s\n" %
> > kPluginNodeTypeName )
> >                 raise
> >
> > # uninitialize the script plug-in
> > def uninitializePlugin(mobject):
> >         mplugin = OpenMayaMPx.MFnPlugin(mobject)
> >         try:
> >                 mplugin.deregisterNode( blindDataMeshId )
> >         except:
> >                 sys.stderr.write( "Failed to unregister node: %s\n" %
> > kPluginNodeTypeName )
> >                 raise
> >
> > This is a very simple code and I don't know why it crash... When I
> > launch the circleNode.py sample, it work very well and mine is not
> > very different...
> >
> > If anyone could help me, I will be very gracefull.
> >
> > Thanks in advance and have a good day!
>
> --
> http://groups.google.com/group/python_inside_maya
>

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to