Public Types | Public Member Functions | Static Public Member Functions

MPlug Class Reference

This reference page is linked to from the following overview topics: The Dependency Graph, Dependency Graph Plug-ins, Differences between the Maya .NET API and the Maya C++ API, Example C++ plug-in descriptions, Appendix D: Frequently asked questions, Appendix E: API and Devkit limitations.


Search for all occurrences

Detailed Description

Create and Access dependency node plugs.

MPlug provides methods for creating plugs, and accessing the plugs' dependency node and attributes.

A plug is a point on a dependency node where a particular attribute can be connected. In simple cases the plug and attribute are equivalent. When you have array attributes, however, the plug is more specific in that it indicates which of the array elements is to be connected.

There are two main types of plugs: networked plugs and non-networked plugs. Non-networked plugs can be considered user plugs as they are created by users and belong to users. Networked plugs can be considered dependency node plugs as they are part of the dependency graph and can only be referenced by users.

In every dependency node there is a network or "tree" of plugs indicating connections that have been made to attributes of the node. The plugs in this tree are known as networked plugs as they belong to the dependency node's network.

Non-networked plugs are plugs that you can create in order to establish a new connection to an attribute, or to get or set a value on an attribute. When a connection is made using these plugs, a networked version of the plug is created and added to the dependency nodes network.

A networked plug cannot be explicitly created. They are created when a connection is established for some attribute of the node. Since the allocation of networked plugs is managed exclusively by Maya, a plugin should never reference a networked plug after changes are made to the DG. Instead, use a non-networked version of the plug, or get a new reference to the networked plug.

All a non-networked plug knows is how to uniquely describe the attribute that it references, in fact the purpose of a non-networked plug is to specify, without ambiguity, an attribute of a dependency node. A non-networked plug contains an array of array indices that plot the path from the root plug to this plug.

For simple attributes the plug and attribute are equivalent. Compound attributes are also unambiguous. A plug that refers to an array attribute, however, is more complex as it can refer to the array plug or an element plug in the array.

Several methods are provided for navigating the plug tree. The child() method can be used to retrieve the child plugs of a compound plug. The elementByLogicalIndex() and elementByPhysicalIndex() methods can be used to retrieve the element plugs of an array plug. The parent() and array() methods traverse the tree in the opposite direction: parent() retrieves a compound plug from a child plug, and array() retrieves an array plug from an element plug.

Since connections to arrays are sparse, element plugs have both logical and physical indexes. The logical indexes are used by MEL, and are sparse. Physical indexes, on the other hand, are not sparse. It is guaranteed that the physical indexes will range from 0 to numElements() - 1. Using the physical indexes, iterating over the element plugs in an array is easy:

       // See note below on numElements() method
       for (i = 0; i < arrayPlug.numElements (); i++)
       {
           MPlug elementPlug = arrayPlug [i];
           unsigned int logicalIndex = elementPlug.logicalIndex();
           // ...
       }

This is equivalent to calling elementByPhysicalIndex() since the bracket operator uses physical indexes.

The ancestry of a plug is the tree above the plug: any parents or arrays which this plug belongs to. The selectAncestorLogicalIndex() method provides quick access to element plugs without walking the plug tree. A plug does not need to exist in the datablock or plug tree in order to be constructed using selectAncestorLogicalIndex(), but once a value is requested or set on the plug, it will be added to the datablock if it was not there already. For example:

    MPlug plug(node,attribute);
    // See note below on numElements() method
    unsigned int count = plug.numElements();
    if (0 == count) {
        plug.selectAncestorLogicalIndex(0,attribute);
        plug.setValue(setVal);
        count = plug.numElements(); // count will now be 1 since we added a value

        plug.selectAncestorLogicalIndex(10,attribute);
        MObject getVal;
        plug.getValue(getVal);
        count = plug.numElements(); // count will now be 2 since we asked for a value
    }

Once a value has been added to an array plug, it will usually remain in the datablock as long as the scene is open. The exception is for attributes that have their disconnect behavior set to kDelete: data for these attributes will be deleted when their connection is broken. When a file is saved, only array values that are not at their default values will be written out. Therefore, the number of elements in an array plug may change when the file is read in again.

Note:
The numElements() call for array plugs returns a value based on the information in the datablock. It is possible to have un-evaluated connected items being excluded from the count since these items are not yet in the datablock. In this case, the numElements() method will return the correct answer if the evaluateNumElements() call is made first. But this cannot be done in the MPxNode::compute() method of a node.
Examples:

affectsNode.cpp, animCubeNode.cpp, animExportUtil.cpp, animInfoCmd.cpp, anisotropicShader.cpp, apiMeshCreator.cpp, apiMeshCreator.h, apiMeshShape.cpp, apiMeshShape.h, arcLenNode.cpp, backfillShader.cpp, blindComplexDataCmd.cpp, blindDataMesh.cpp, blindDataMesh.h, blindDataShader.cpp, blindDataShader.h, blindDoubleDataCmd.cpp, brickShader.cpp, buildRotationNode.cpp, cellShader.cpp, cgfxAttrDef.cpp, cgfxAttrDef.h, cgfxShaderNode.cpp, cgfxShaderNode.h, cgfxVector.cpp, cgfxVector.h, checkerShader.cpp, circleNode.cpp, clearcoat.cpp, closestPointCmd.cpp, closestPointOnCurveCmd.cpp, closestPointOnCurveNode.cpp, closestPointOnCurveNode.h, clothPaintAttrCmd.cpp, componentScaleManip.cpp, compositingShader.cpp, contrastShader.cpp, createClipCmd.cpp, curvedArrowsNode.cpp, customAttrManip.cpp, customImagePlane.cpp, cvColorNode.cpp, cvColorShader.cpp, D3DResourceManager.cpp, D3DViewportRenderer.cpp, dagPoseInfoCmd.cpp, depthShader.cpp, displacementShader.cpp, dynExprField.cpp, dynExprField.h, exampleMRampAttribute.cpp, exportJointClusterDataCmd.cpp, filteredAsciiFile.cpp, findFileTexturesCmd.cpp, findTexturesPerPolygonCmd.cpp, flameShader.cpp, footPrintManip.cpp, footPrintNode.cpp, fullLoftNode.cpp, gammaShader.cpp, genericAttributeNode.cpp, geometrySurfaceConstraint.cpp, geometrySurfaceConstraint.h, geomShader.cpp, GLSLShaderNode.cpp, GLSLShaderNode.h, hlslShader.cpp, hlslShader.h, hwAnisotropicShader_NV20.cpp, hwColorPerVertexShader.cpp, hwDecalBumpShader_NV20.cpp, hwDecalBumpShader_NV20.h, hwPhongShader.cpp, hwPhongShader.h, hwPhongShaderBehavior.cpp, hwPhongShaderBehavior.h, hwReflectBumpShader_NV20.cpp, hwReflectBumpShader_NV20.h, hwRefractReflectShader_NV20.cpp, hwRefractReflectShader_NV20.h, hwToonShader_NV20.cpp, hwToonShader_NV20.h, hwUnlitShader.cpp, hwUnlitShader.h, interpShader.cpp, intersectCmd.cpp, jitterNode.cpp, lambertShader.cpp, latticeNoise.h, latticeNoiseNode.cpp, lavaShader.cpp, lightShader.cpp, lockEvent.cpp, maTranslator.cpp, meshOpCmd.cpp, meshOpNode.cpp, meshOpNode.h, meshRemapCmd.cpp, meshRemapTool.cpp, meshReorderCmd.cpp, meshReorderTool.cpp, mixtureShader.cpp, motionTraceCmd.cpp, moveManip.cpp, MTextureCache.cpp, multiCurveNode.cpp, narrowPolyViewer.h, nodeInfoCmd.cpp, nodeMessageCmd.cpp, noiseShader.cpp, ownerEmitter.cpp, ownerEmitter.h, particleAttrNode.cpp, particleAttrNode.h, phongShader.cpp, pluginMain.cpp, pnTrianglesNode.cpp, pnTrianglesNode.h, pointOnMeshCmd.cpp, pointOnMeshInfoNode.cpp, pointOnMeshInfoNode.h, pointOnSubdNode.cpp, pointOnSubdNode.h, polyExporter.cpp, polyModifierCmd.cpp, polyModifierCmd.h, polyPrimitiveCmd.cpp, polyTrgNode.cpp, polyWriter.cpp, quadricShape.cpp, renderAccessNode.cpp, rockingTransform.cpp, rockingTransform.h, rockingTransformCheck.cpp, rockingTransformCheck.h, rotateManip.cpp, ShadingConnection.cpp, ShadingConnection.h, shadowMatteShader.cpp, shellNode.cpp, shiftNode.cpp, simpleEmitter.cpp, simpleEmitter.h, simpleFluidEmitter.cpp, simpleFluidEmitter.h, simpleLoftNode.cpp, simpleSpring.cpp, simpleSpring.h, sineNode.cpp, slopeShaderBehavior.cpp, slopeShaderBehavior.h, slopeShaderNode.cpp, slopeShaderNode.h, solidCheckerShader.cpp, splitUVCmd.cpp, splitUVNode.cpp, splitUVNode.h, squareScaleManipContext.cpp, stringFormatNode.cpp, surfaceBumpManip.cpp, sweptEmitter.cpp, sweptEmitter.h, swissArmyManip.cpp, testNobjectNode.cpp, testNobjectNode.h, testNucleusNode.cpp, testNucleusNode.h, torusField.cpp, torusField.h, transCircleNode.cpp, volumeShader.cpp, and weightListNode.cpp.

#include <MPlug.h>

List of all members.

Public Types

enum  MValueSelector { kAll, kNonDefault, kChanged, kLastAttrSelector }
 

Which values to generate setAttr commands for.

More...
enum  FreeToChangeState { kFreeToChange = 0, kNotFreeToChange, kChildrenNotFreeToChange }
 

Plug state returned by isFreeToChange.

More...

Public Member Functions

 MPlug ()
 Constructor.
 MPlug (const MPlug &in)
 Copy constructor.
 MPlug (const MObject &node, const MObject &attribute)
 Constructor.
virtual ~MPlug ()
 Destructor.
MStatus setAttribute (MObject &attribute)
 This method is a convenience routine to allow quick movement between attributes on a single node.
MObject attribute (MStatus *ReturnStatus=NULL) const
 This method returns the attribute that this plug refers to.
MObject node (MStatus *ReturnStatus=NULL) const
 Returns the dependency node that this plug belongs to.
MString name (MStatus *ReturnStatus=NULL) const
 Returns the name of this plug in the form "<i>nodeName</i>.<i>attributeName</i>".
MString partialName (bool includeNodeName=false, bool includeNonMandatoryIndices=false, bool includeInstancedIndices=false, bool useAlias=false, bool useFullAttributePath=false, bool useLongNames=false, MStatus *ReturnStatus=NULL) const
 By default, this method returns the shortest possible name for the plug, but its parameters can be used to add parts back in.
MStatus getSetAttrCmds (MStringArray &cmds, MValueSelector valueSelector=kAll, bool useLongNames=false)
 Returns an array of strings containing setAttr commands for this plug and all of its descendent plugs.
bool isNetworked (MStatus *ReturnStatus=NULL) const
 This method determines if the plug is networked or non-networked.
bool isArray (MStatus *ReturnStatus=NULL) const
 This method determines if the plug is an array plug.
bool isElement (MStatus *ReturnStatus=NULL) const
 This method determines if the plug is an element plug.
bool isCompound (MStatus *ReturnStatus=NULL) const
 This method determines if the plug is a compound plug.
bool isChild (MStatus *ReturnStatus=NULL) const
 This method determines if the plug is a child plug.
bool isProcedural (MStatus *ReturnStatus=NULL) const
 This method determines if the plug is a procedural plug.
unsigned int logicalIndex (MStatus *ReturnStatus=NULL) const
 Returns the logical index of the element this plug refers to.
MStatus selectAncestorLogicalIndex (unsigned int index, const MObject &attribute=MObject::kNullObj)
 This method is a convenience routine to allow quick iteration and construction of plugs with array plugs in their ancestry.
unsigned int getExistingArrayAttributeIndices (MIntArray &indices, MStatus *ReturnStatus=NULL)
 This method will return a list of the logical indices of the elements in an array attribute that are either connected or have had their value set.
unsigned int numElements (MStatus *ReturnStatus=NULL) const
 Return the total number of elements in the datablock of this array plug.
unsigned int evaluateNumElements (MStatus *ReturnStatus=NULL)
 Return the total number of elements in the datablock of this array plug.
unsigned int numChildren (MStatus *ReturnStatus=NULL) const
 Return the total number of children of this compound plug.
unsigned int numConnectedElements (MStatus *ReturnStatus=NULL) const
 Return the total number of connected element plugs belonging to this array plug.
unsigned int numConnectedChildren (MStatus *ReturnStatus=NULL) const
 Return the number of children of this plug that are connected in the dependency graph.
MPlug child (MObject &attr, MStatus *ReturnStatus=NULL) const
 Returns a plug to a given attribute that is a child of this plug.
MPlug child (unsigned int index, MStatus *ReturnStatus=NULL) const
 Returns a plug to a given attribute that is a child of this plug.
MPlug parent (MStatus *ReturnStatus=NULL) const
 Returns the parent plug.
MPlug array (MStatus *ReturnStatus=NULL) const
 Returns the array to which this element plug belongs.
MPlug elementByLogicalIndex (unsigned int logicalIndex, MStatus *ReturnStatus=NULL) const
 This method will find and return a plug with the given logical index.
MPlug elementByPhysicalIndex (unsigned int physicalIndex, MStatus *ReturnStatus=NULL) const
 This method will find and return a plug with the given physical index.
MPlug connectionByPhysicalIndex (unsigned int physicalIndex, MStatus *ReturnStatus=NULL) const
 This method will find and return a connected plug with the given physical index for its connection.
bool connectedTo (MPlugArray &array, bool asDst, bool asSrc, MStatus *ReturnStatus=NULL) const
 This method finds all of the plugs that this plug is connected with.
bool isConnected (MStatus *ReturnStatus=NULL) const
 Determines if this plug is connected to one or more plugs.
bool isKeyable (MStatus *ReturnStatus=NULL) const
 Determines if this plug is keyable.
MStatus setKeyable (bool keyable)
 This overrides the default keyability of a plug set with MFnAttribute::setKeyable.
bool isLocked (MStatus *ReturnStatus=NULL) const
 Determines the locked state of this plug's value.
MStatus setLocked (bool locked)
 Sets the locked state for this plug's value.
bool isChannelBoxFlagSet (MStatus *ReturnStatus=NULL) const
 Returns true if this plug or its attribute has its channel box flag set.
MStatus setChannelBox (bool channelBox)
 Sets whether this plug is displayed in the channel box.
bool isCachingFlagSet (MStatus *ReturnStatus=NULL) const
 Returns true if this plug or its attribute has its caching flag set.
MStatus setCaching (bool caching)
 Sets whether this plug is cached internally.
bool isNull (MStatus *ReturnStatus=NULL) const
 This method determines whether this plug is valid.
MString info (MStatus *ReturnStatus=NULL) const
 This method returns a string containing the name of the node this plug belongs to and the attributes that the plug refers to.
bool isFromReferencedFile (MStatus *ReturnStatus=NULL) const
 This method determines whether this plug came from a referenced file.
bool isDynamic (MStatus *ReturnStatus=NULL) const
 Determines whether the attribute is of dynamic type or not.
bool isIgnoredWhenRendering (MStatus *ReturnStatus=NULL) const
 Determines whether a connection to the attribute should be ignored during rendering.
MPlug::FreeToChangeState isFreeToChange (bool checkParents=true, bool checkChildren=true, MStatus *ReturnStatus=NULL) const
 Returns true if the plug's value is allowed to be set directly.
MDataHandle constructHandle (MDataBlock &) const
 This method returns a data handle constructed for this plug.
void destructHandle (MDataHandle &) const
 This method destructs the data handle for this plug.
MStatus getValue (MObject &val, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (MDataHandle &handle, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (double &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (float &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (int &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (short &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (bool &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (MDistance &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (MAngle &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (MTime &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (char &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus getValue (MString &, MDGContext &ctx=MDGContext::fsNormal) const
 NO SCRIPT SUPPORT.
MStatus setValue (MObject &val)
 NO SCRIPT SUPPORT.
MStatus setValue (MPxData *data)
 NO SCRIPT SUPPORT.
MStatus setValue (MDataHandle &handle)
 NO SCRIPT SUPPORT.
MStatus setValue (double)
 NO SCRIPT SUPPORT.
MStatus setValue (float)
 NO SCRIPT SUPPORT.
MStatus setValue (int)
 NO SCRIPT SUPPORT.
MStatus setValue (short)
 NO SCRIPT SUPPORT.
MStatus setValue (bool)
 NO SCRIPT SUPPORT.
MStatus setValue (MDistance &)
 NO SCRIPT SUPPORT.
MStatus setValue (MAngle &)
 NO SCRIPT SUPPORT.
MStatus setValue (MTime &)
 NO SCRIPT SUPPORT.
MStatus setValue (char)
 NO SCRIPT SUPPORT.
MStatus setValue (const MString &)
 NO SCRIPT SUPPORT.
MStatus setValue (const char *)
 NO SCRIPT SUPPORT.
MObject asMObject (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
MDataHandle asMDataHandle (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
double asDouble (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
float asFloat (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
int asInt (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
short asShort (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
bool asBool (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
MDistance asMDistance (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
MAngle asMAngle (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
MTime asMTime (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
char asChar (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
MString asString (MDGContext &ctx=MDGContext::fsNormal, MStatus *ReturnStatus=NULL) const
 Retrieve the current value of the attribute this plug references.
MStatus setMObject (MObject &val)
 Set the current value of the attribute this plug references.
MStatus setMPxData (MPxData *data)
 Set the current value of the attribute this plug references.
MStatus setMDataHandle (MDataHandle &handle)
 Set the current value of the attribute this plug references with the values in the handle.
MStatus setDouble (double)
 Set the current value of the attribute this plug references.
MStatus setFloat (float)
 Set the current value of the attribute this plug references.
MStatus setInt (int)
 Set the current value of the attribute this plug references.
MStatus setShort (short)
 Set the current value of the attribute this plug references.
MStatus setBool (bool)
 Set the current value of the attribute this plug references.
MStatus setMDistance (MDistance &)
 Set the current value of the attribute this plug references.
MStatus setMAngle (MAngle &)
 Set the current value of the attribute this plug references.
MStatus setMTime (MTime &)
 Set the current value of the attribute this plug references.
MStatus setChar (char)
 Set the current value of the attribute this plug references.
MStatus setString (const MString &)
 Set the current value of the attribute this plug references.
MPlugoperator= (const MPlug &other)
 Assignment operator.
MPlug operator[] (unsigned int physicalIndex) const
 This method will find and return a plug with the given physical index.
bool operator== (const MPlug &other) const
 Comparison operator for MPlugs.
bool operator== (const MObject &other) const
 Comparison operator for a plug and an attribute.
bool operator!= (const MPlug &other) const
 The inequality operator for MPlugs.
bool operator!= (const MObject &other) const
 The inequality operator for a plug and an attribute.
MStatus setNumElements (unsigned int)
 The method is used to pre-allocate the number of elements that an array plug will contain.
MPlug operator[] (MObject &attr) const
 NO SCRIPT SUPPORT.
 operator MObject () const
 NO SCRIPT SUPPORT.
bool operator! () const
 NO SCRIPT SUPPORT.
bool isSource (MStatus *ReturnStatus=NULL) const
 Determines if this plug is connected as a source.
bool isDestination (MStatus *ReturnStatus=NULL) const
 Determines if this plug is connected as a destination.

Static Public Member Functions

static const char * className ()
 Returns the name of this class.

Member Enumeration Documentation

Which values to generate setAttr commands for.

Enumerator:
kAll 

All values.

kNonDefault 

Non default values.

kChanged 

Changed values.

kLastAttrSelector 

Last value, for counting.

Plug state returned by isFreeToChange.

Enumerator:
kFreeToChange 

All tested plugs are free to change.

kNotFreeToChange 

Some of the tested plugs are not free to change.

kChildrenNotFreeToChange 

Some of the children are not free to change.


Constructor & Destructor Documentation

MPlug ( )

Constructor.

Creates an empty plug.

MPlug ( const MPlug other)

Copy constructor.

Duplicates the given plug.

Parameters:
[in]otherPlug to be copied.
MPlug ( const MObject node,
const MObject attribute 
)

Constructor.

Creates a new plug for the specified attribute and dependency node.

The new plug can be used to establish or remove a connection to the attribute it references. The plug can also be used to query or set the value of the attribute.

This constructor will only create non-networked plugs. A networked version of this plug is automatically created and added to the dependency node's network when a connection to this plug is established.

Parameters:
[in]nodethe dependency node this plug belongs to
[in]attributethe attribute this plug refers to

Member Function Documentation

MStatus setAttribute ( MObject attribute)

This method is a convenience routine to allow quick movement between attributes on a single node.

If the current plug is a networked plug, it becomes a new non-networked plug referring to the requested attribute. If the current plug is a non-networked plug, it is changed to refer to the requested attribute.

The passed attribute must be the attribute of a plug on the current node.

Parameters:
[in]attributeattribute to change the plug to
Returns:
Status code
Status Codes:
Examples:
quadricShape.cpp.
MObject attribute ( MStatus ReturnStatus = NULL) const

This method returns the attribute that this plug refers to.

Parameters:
[out]ReturnStatusStatus Code
Returns:
The attribute that this plug refers to.
Status Codes:
Examples:
animExportUtil.cpp, apiMeshShape.cpp, cgfxShaderNode.cpp, maTranslator.cpp, particleAttrNode.cpp, polyModifierCmd.cpp, and simpleFluidEmitter.cpp.
MObject node ( MStatus ReturnStatus = NULL) const

Returns the dependency node that this plug belongs to.

Parameters:
[out]ReturnStatusStatus Code
Returns:
A pointer to this plug's dependency node.
Status Codes:
Examples:
animExportUtil.cpp, cgfxAttrDef.cpp, cgfxShaderNode.cpp, filteredAsciiFile.cpp, GLSLShaderNode.cpp, hwPhongShaderBehavior.cpp, particleAttrNode.cpp, and slopeShaderBehavior.cpp.
MString name ( MStatus ReturnStatus = NULL) const

Returns the name of this plug in the form "<i>nodeName</i>.<i>attributeName</i>".

Parameters:
[out]ReturnStatusreturn status
Returns:
The name of this node
Status Codes:
Examples:
affectsNode.cpp, componentScaleManip.cpp, hwPhongShaderBehavior.cpp, rotateManip.cpp, slopeShaderBehavior.cpp, and surfaceBumpManip.cpp.
MString partialName ( bool  includeNodeName = false,
bool  includeNonMandatoryIndices = false,
bool  includeInstancedIndices = false,
bool  useAlias = false,
bool  useFullAttributePath = false,
bool  useLongNames = false,
MStatus ReturnStatus = NULL 
) const

By default, this method returns the shortest possible name for the plug, but its parameters can be used to add parts back in.

Parameters:
[in]includeNodeNameIf true, then the plug's node name is prefixed to the name of the plug, with a dot separating it from the attribute name. If false, then just the attribute name is returned. (default: false)
[in]includeNonMandatoryIndicesIf the plug's attribute is a non-instanced element of a multi which is NOT marked as indexMatters, then setting this parameter true will cause its index to be included in the returned string anyway.
If the attribute is marked as indexMatters then its array index will be included regardless of the setting of this parameter.
If the attribute is instanced then it is not affected by this parameter. See the next parameter instead. (default: false)
[in]includeInstancedIndicesIf the plug's attribute is an element of an instanced multi, then setting this parameter true will cause the array index to be included in the returned string. For example, if you are planning to append the returned plug name to a node's dagPath, then the instance index is unnecessary as it can be determined from the dagPath. (default: false)
[in]useFullAttributePathNormally, the plug's attribute path is compressed so that any compound ancestors which do not serve to uniquely identify the plug are removed. Setting this parameter true will cause the full attribute path to be used. (default: false)
[in]useAliasDisplay aliased name if alias exists. (default: false)
[in]useLongNamesNormally, short attribute names are used. Setting this true will cause long names to be used. (default: false)
[out]ReturnStatusReturn status.
Returns:
The name of the plug.
Status Codes:
Examples:
affectsNode.cpp, cgfxShaderNode.cpp, and maTranslator.cpp.
MStatus getSetAttrCmds ( MStringArray cmds,
MPlug::MValueSelector  valueSelector = kAll,
bool  useLongNames = false 
)

Returns an array of strings containing setAttr commands for this plug and all of its descendent plugs.

Parameters:
[out]cmdsArray of strings in which the setAttr commands are to be returned.

[in]valueSelector
kAll- return setAttr commands for the plug and its children, regardless of their values.
kNonDefault- only return setAttr commands for the plug or its children if they are not at their default values.
kChanged- for nodes from referenced files, setAttr commands are only returned if the plug or one of its children has changed since its file was loaded. For all other nodes, the behaviour is the same a kNonDefault.

Note that if the plug is compound and one of its children has changed, then setAttrs will be generated for *all* of its children, even those which have not changed.
(default: kAll)

[in]useLongNamesNormally, the returned commands will use the short names for flags and attributes. If this parameter is true then their long names will be used instead. (default: false)
Returns:
Status code
Status Codes:
bool isNetworked ( MStatus ReturnStatus = NULL) const

This method determines if the plug is networked or non-networked.

Networked plugs are part of a dependency node network and define points where connections have been made to the nodes attributes.

Non-networked plugs are user created plugs that are used to refer to an attribute of a node so that it can be connected. If the attribute that the plug refers to has been connected then there will also be a corresponding networked plug.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true
  • false
Status Codes:
bool isArray ( MStatus ReturnStatus = NULL) const

This method determines if the plug is an array plug.

Array plugs refer to array attributes and contain element plugs.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true
  • false
Status Codes:
Examples:
apiMeshShape.cpp, and polyModifierCmd.cpp.
bool isElement ( MStatus ReturnStatus = NULL) const

This method determines if the plug is an element plug.

Element plugs refer to array attributes and are members of array plugs.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true
  • false
Status Codes:
bool isCompound ( MStatus ReturnStatus = NULL) const

This method determines if the plug is a compound plug.

Compound plugs refer to compound attributes and have child plugs.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true
  • false
Status Codes:
Examples:
polyModifierCmd.cpp.
bool isChild ( MStatus ReturnStatus = NULL) const

This method determines if the plug is a child plug.

A child plug's parent is always a compound plug.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true
  • false
Status Codes:
Examples:
GLSLShaderNode.cpp.
bool isProcedural ( MStatus ReturnStatus = NULL) const

This method determines if the plug is a procedural plug.

A procedural plug is one which is created by Maya's internal procedures or by the nodes themselves and which should not be saved to or restored from files.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true
  • false
Status Codes:
Examples:
maTranslator.cpp.
unsigned int logicalIndex ( MStatus ReturnStatus = NULL) const

Returns the logical index of the element this plug refers to.

The logical index is a sparse index, equivalent to the array index used in MEL.

This plug must be an element plug, and may be either networked or non-networked.

Parameters:
[out]ReturnStatusStatus Code
Returns:
The logical array index of the element this plug refers to
Status Codes:
  • MS::kSuccess The operation succeeded
  • MS::kFailure Object error - no plug
  • MS::kInvalidDataType This plug is not an element plug
Examples:
apiMeshShape.cpp, dynExprField.cpp, ownerEmitter.cpp, polyModifierCmd.cpp, simpleEmitter.cpp, sweptEmitter.cpp, and torusField.cpp.
MStatus selectAncestorLogicalIndex ( unsigned int  index,
const MObject attribute = MObject::kNullObj 
)

This method is a convenience routine to allow quick iteration and construction of plugs with array plugs in their ancestry.

It selects a plug into the current object by changing an ancestor array's logical index.

The passed attribute must be either the attribute of the current plug, or the attribute of an ancestor's plug. It must be an array attribute. By default, it refers to the attribute of the current plug.

If the passed attribute is the attribute of this plug, then this plug will change to refer to its indexth element plug.

For example, consider the following attribute tree. The topmost attribute is a compound attribute "in". It consists of two children: an enum attribute "operation" and a typed attribute "value". Both "value" and "in" are array attributes. To iterate through all of the values, you could write a loop like this:

    MPlug inPlug (node, inAttribute);
    MPlug valuePlug (node, valueAttribute);
    MPlug plug (node, valueAttribute);
    for (i = 0; i < inPlug.numElements (); i++)
    {
        valuePlug.selectAncestorLogicalIndex (i, inAttribute);
        (for j = 0; j < valuePlug.numElements (); j++)
        {
            plug.selectAncestorLogicalIndex (i, inAttribute);
            plug.selectAncestorLogicalIndex (j, valueAttribute);
            // ...
        }
    }

This method is only valid for non-networked plugs since networked plugs are part of a dependency node and can only be modified by making or breaking connections.

Parameters:
[in]indexindex value to be set
[in]attributearray attribute whose index will be changed
Returns:
Status code
Status Codes:
Examples:
apiMeshShape.cpp.
unsigned int getExistingArrayAttributeIndices ( MIntArray indices,
MStatus ReturnStatus = NULL 
)

This method will return a list of the logical indices of the elements in an array attribute that are either connected or have had their value set.

This method is useful when the logical indices of connected/set elements are sparse.

Parameters:
[in]indicesA list to store the logical indices of the set/connected elements.
[out]ReturnStatusStatus Code
Returns:
The number of set/connected elements
Status Codes:
unsigned int numElements ( MStatus ReturnStatus = NULL) const

Return the total number of elements in the datablock of this array plug.

The return count will include all existing non-connected elements plus connected elements if they have been evaluated. It will not include connected elements that have not yet been placed into the datablock. The method MPlug::evaluateNumElements can be used in the sitution where you want an accurate count that includes all connected elements.

This method is only valid for array plugs, as no other plugs have elements.

Parameters:
[out]ReturnStatusStatus Code
Returns:
Total number of elements
Status Codes:
  • MS::kSuccess The count was successfully returned
  • MS::kFailure The plug is not an array plug or does not contain a valid node or attribute
Examples:
polyModifierCmd.cpp, and ShadingConnection.cpp.
unsigned int evaluateNumElements ( MStatus ReturnStatus = NULL)

Return the total number of elements in the datablock of this array plug.

The return count will include both connected and non-connected elements, and will perform an evaluate in order to make sure that the datablock is as up-to-date as possible since some nodes do not place array elements into the datablock until the attribute is evaluated.

Because this method performs an evaluate, it should not be called from within the compute of a node. Instead, if you want to know the number of elements in an array plug while in a compute, use either MDataBlock::inputArrayValue or MDataBlock::outputArrayValue because they are more efficient and will not result in recursion.

This method is only valid for array plugs, as no other plugs have elements.

Parameters:
[out]ReturnStatusStatus Code
Returns:
Total number of elements
Status Codes:
  • MS::kSuccess The count was successfully returned
  • MS::kFailure The plug is not an array plug or does not contain a valid node or attribute
unsigned int numChildren ( MStatus ReturnStatus = NULL) const

Return the total number of children of this compound plug.

This method is only valid for networked plugs as non-networked plugs contain no information about their children. If this plug is non-networked then a networked version of the plug will be used. If a networked plug does not exist then 0 will be returned.

This method is also only valid for compound plugs or the root plug, since no other plugs have children.

Parameters:
[out]ReturnStatusStatus Code
Returns:
Total number of children
Status Codes:
Examples:
componentScaleManip.cpp, polyModifierCmd.cpp, rotateManip.cpp, and ShadingConnection.cpp.
unsigned int numConnectedElements ( MStatus ReturnStatus = NULL) const

Return the total number of connected element plugs belonging to this array plug.

This method is only valid for networked plugs as non-networked plugs contain no information about their children. If this plug is non-networked then a networked version of the plug will be used. If a networked plug does not exist then 0 will be returned.

This method is also only valid for array plugs, as no other plugs have elements.

Parameters:
[out]ReturnStatusStatus Code
Returns:
Total number of elements
Status Codes:
unsigned int numConnectedChildren ( MStatus ReturnStatus = NULL) const

Return the number of children of this plug that are connected in the dependency graph.

This method is only valid for networked plugs as non-networked plugs contain no information about their children. If this plug is non-networked then a networked version of the plug will be used. If a networked plug does not exist then 0 will be returned.

This method is only valid for compound plugs, since no other plugs have children.

Parameters:
[out]ReturnStatusStatus Code
Returns:
Total number of children
Status Codes:
  • MS::kSuccess The count was successfully returned
  • MS::kFailure Object error
  • MS::kInvalidDataType This is not a compound plug
MPlug child ( MObject obj,
MStatus ReturnStatus = NULL 
) const

Returns a plug to a given attribute that is a child of this plug.

This method is only valid for compound plugs.

Parameters:
[in]objThe child attribute.
[out]ReturnStatusStatus code.
Returns:
The child plug
Status Codes:
Examples:
componentScaleManip.cpp, polyModifierCmd.cpp, rotateManip.cpp, and ShadingConnection.cpp.
MPlug child ( unsigned int  index,
MStatus ReturnStatus = NULL 
) const

Returns a plug to a given attribute that is a child of this plug.

This method is only valid for compound plugs.

Parameters:
[in]indexThe index of the plug to be found
[out]ReturnStatusStatus code.
Returns:
The child plug
Status Codes:
MPlug parent ( MStatus ReturnStatus = NULL) const
MPlug array ( MStatus ReturnStatus = NULL) const

Returns the array to which this element plug belongs.

This method is only valid for networked element plugs.

Parameters:
[out]ReturnStatusStatus Code
Returns:
The array of this plug.
Status Codes:
MPlug elementByLogicalIndex ( unsigned int  index,
MStatus ReturnStatus = NULL 
) const

This method will find and return a plug with the given logical index.

The logical index is the sparse array index used in MEL scripts. If a plug does not exist at the given Index, Maya will create a plug at that index. This is not the case with elementByPhysicalIndex(). If needed, elementByLogicalIndex can be used to expand an array plug on a node. It is important to note that Maya assumes that all such plugs serve a purpose and it will not free non-networked plugs that result from such an array expansion.

The returned plug may or may not be connected.

Parameters:
[in]indexThe index of the plug to be found
[out]ReturnStatusStatus Code
Returns:
A plug with the given index
Status Codes:
  • MS::kSuccess a plug for the given index was successfully returned
  • MS::kFailure Could not get a plug for the given index
Examples:
closestPointOnCurveCmd.cpp, componentScaleManip.cpp, pointOnMeshCmd.cpp, and polyModifierCmd.cpp.
MPlug elementByPhysicalIndex ( unsigned int  index,
MStatus ReturnStatus = NULL 
) const

This method will find and return a plug with the given physical index.

The index can range from 0 to numElements() - 1. This function is particularly useful for iteration through the element plugs of an array plug. It is equivalent to operator [] (int) This method is only valid for array plugs.

If the returned plug is networked, the networked plug will be returned. Otherwise, a non-networked plug will be returned.

Parameters:
[in]indexThe physical array index of the plug to be found
[out]ReturnStatusStatus Code
Returns:
A plug with the given index
Status Codes:
  • MS::kSuccess a plug for the given index was successfully returned
  • MS::kFailure Could not get a plug for the given index
Examples:
polyModifierCmd.cpp, and ShadingConnection.cpp.
MPlug connectionByPhysicalIndex ( unsigned int  index,
MStatus ReturnStatus = NULL 
) const

This method will find and return a connected plug with the given physical index for its connection.

The index can range from 0 to numConnectedElements() - 1. This method varies from elementByPhysicalIndex in that elementByPhysicalIndex will return plugs pointing to all existing data in the datablock regardless of whether the plug is connected or not.

This method is only valid for array plugs.

Parameters:
[in]indexThe physical array index of the plug to be found
[out]ReturnStatusStatus Code
Returns:
A plug with the given index
Status Codes:
  • MS::kSuccess a plug for the given index was successfully returned
  • MS::kFailure Could not get a plug for the given index
bool connectedTo ( MPlugArray array,
bool  asDst,
bool  asSrc,
MStatus ReturnStatus = NULL 
) const

This method finds all of the plugs that this plug is connected with.

This method will always produce the networked version of the connected plugs.

Parameters:
[in]arrayLocation for storing connected plugs (allocated by the caller)
[in]asDstCheck connections with this plug as destination. If there are such connections, put them in array.
[in]asSrcCheck connections with this plug as source. If there are such connections, put them in array.
[out]ReturnStatusStatus Code
Returns:
  • true If the plug has connections as either source or destination. Note that the array is filled in only with the type of connecting plugs requested by asSrc and asDst. Therefore, the method could return true while the array has nothing in it if, for example, the plug has connections as source but the user passes asSrc = false to the method. The parameters asSrc and asDst have no effect on the boolean return value. Setting one true and one false and then checking the length of the array after calling this method is a way to determine whether the connections are source or destination.
  • false If this plug has no connections
Status Codes:
Examples:
cgfxAttrDef.cpp, D3DViewportRenderer.cpp, findTexturesPerPolygonCmd.cpp, GLSLShaderNode.cpp, maTranslator.cpp, nodeInfoCmd.cpp, polyModifierCmd.cpp, polyWriter.cpp, ShadingConnection.cpp, and slopeShaderBehavior.cpp.
bool isConnected ( MStatus ReturnStatus = NULL) const

Determines if this plug is connected to one or more plugs.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true If this plug is connected to another plug
  • false If this plug is not connected to another plug
Status Codes:
Examples:
polyModifierCmd.cpp.
bool isKeyable ( MStatus ReturnStatus = NULL) const

Determines if this plug is keyable.

The default keyability of a plug is determined by its attribute, and can be retrieved using MFnAttribute::isKeyable. Keyable plugs will be keyed by AutoKey and the Set Keyframe UI. Non-keyable plugs prevent the user from setting keys via the obvious UI provided for keying. Being non-keyable is not a hard block against adding keys to an attribute.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true If this plug is keyable
  • false If this plug is not keyable
Status Codes:
MStatus setKeyable ( bool  keyable)

This overrides the default keyability of a plug set with MFnAttribute::setKeyable.

Keyable plugs will be keyed by AutoKey and the Set Keyframe UI. Non-keyable plugs prevent the user from setting keys via the obvious UI provided for keying. Being non-keyable is not a hard block against adding keys to an attribute.

Parameters:
[in]keyableTrue if this plug should be keyable
Returns:
Status code
Status Codes:
bool isLocked ( MStatus ReturnStatus = NULL) const

Determines the locked state of this plug's value.

A plug's locked state determines whether or not the plug's value can be changed.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true If this plug's value is locked
  • false If this plug's value is not locked
Status Codes:
Examples:
maTranslator.cpp.
MStatus setLocked ( bool  locked)

Sets the locked state for this plug's value.

A plug's locked state determines whether or not the plug's value can be changed.

Parameters:
[in]lockedTrue if this plug's value is to be locked
Returns:
Status code
Status Codes:
bool isChannelBoxFlagSet ( MStatus ReturnStatus = NULL) const

Returns true if this plug or its attribute has its channel box flag set.

Attributes will appear in the channel box if their channel box flag is set or if they are keyable.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true channel box flag has been set
  • false channel box flag has not been set
Status Codes:
MStatus setChannelBox ( bool  inChannelBox)

Sets whether this plug is displayed in the channel box.

This overrides the default display of a plug set with MFnAttribute::setChannelBox. Keyable attributes are always shown in the channel box so this flag is ignored on keyable plugs.

Parameters:
[in]inChannelBoxTrue if this plug should be displayed in the channel box
Returns:
Status code
Status Codes:
bool isCachingFlagSet ( MStatus ReturnStatus = NULL) const

Returns true if this plug or its attribute has its caching flag set.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true caching flag has been set
  • false caching flag has not been set
Status Codes:
MStatus setCaching ( bool  isCaching)

Sets whether this plug is cached internally.

Note: turning caching on for a plug will force the plug to become networked. Network plugs take longer to look up in the DG; therefore you should only make a plug cached only if you are certain that the network plug look-up will take less than the saved evaluation cost.

Not all plugs can be made cached (or un-cached). If the attribute is defined to be cached, then you cannot uncache the attribute. As well, you cannot define caching on element plugs.

Parameters:
[in]isCachingTrue if this plug should be cached
Returns:
Status code
Status Codes:
  • MS::kSuccess Successful completion
  • MS::kFailure Object error
  • MS::kInvalidDataType Plug is a multi or plug is marked permanently cached.
bool isNull ( MStatus ReturnStatus = NULL) const

This method determines whether this plug is valid.

A plug is valid if it refers to an attribute.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true this plug is not valid
  • false this plug is valid
Status Codes:
Examples:
componentScaleManip.cpp, D3DViewportRenderer.cpp, findTexturesPerPolygonCmd.cpp, hlslShader.cpp, hwPhongShaderBehavior.cpp, moveManip.cpp, polyModifierCmd.cpp, polyWriter.cpp, rockingTransform.cpp, slopeShaderBehavior.cpp, and surfaceBumpManip.cpp.
MString info ( MStatus ReturnStatus = NULL) const

This method returns a string containing the name of the node this plug belongs to and the attributes that the plug refers to.

The string is of the form dependNode:atr1.atr2[].attr3 ...

This method is useful for debugging purposes.

Parameters:
[out]ReturnStatusStatus Code
Returns:
Returns a string containing dependency node and attribute information for this plug.
Status Codes:
Examples:
apiMeshShape.cpp, nodeInfoCmd.cpp, and nodeMessageCmd.cpp.
bool isFromReferencedFile ( MStatus ReturnStatus = NULL) const

This method determines whether this plug came from a referenced file.

A plug is considered to have come from a referenced file if it is connected and that connection was made within a referenced file.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true plug was created within a referenced file
  • false plug was created within the current scene
Status Codes:
Examples:
maTranslator.cpp.
bool isDynamic ( MStatus ReturnStatus = NULL) const

Determines whether the attribute is of dynamic type or not.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true If the attribute is dynamic
  • false If this attribute is not added by user.
Status Codes:
bool isIgnoredWhenRendering ( MStatus ReturnStatus = NULL) const

Determines whether a connection to the attribute should be ignored during rendering.

Parameters:
[out]ReturnStatusStatus Code
Returns:
  • true If connected, the attribute should be ingored during rendering.
  • false If connected, the attribute should not be ingored during rendering.
Status Codes:
MPlug::FreeToChangeState isFreeToChange ( bool  checkParents = true,
bool  checkChildren = true,
MStatus ReturnStatus = NULL 
) const

Returns true if the plug's value is allowed to be set directly.

A plug isFreeToChange if it is not locked, and it is not a destination or if it is a destination, then it must be a special case (such as connected to an anim curve).

Normally this is not something that needs to be checked, since the DG or MEL operations take care of this for you.

If the parents are not free to change, then the children will not be free to change. However if the parents are free to change, some children may not be free to change.

Parameters:
[in]checkParentsCheck parent plugs.
[in]checkChildrenCheck child plugs.
[out]ReturnStatusStatus Code
Returns:
  • kFreeToChange All tested plugs are free to change.
  • kNotFreeToChange Some of the tested plugs are not free to change.
  • kChildrenNotFreeToChange Some of the children are not free to change.
Status Codes:
Examples:
geometrySurfaceConstraint.cpp.
MDataHandle constructHandle ( MDataBlock mBlock) const

This method returns a data handle constructed for this plug.

Returns:
MDataHandle for this plug
MStatus getValue ( MObject val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

This method returns a copy of the attribute value for the plug and not a reference. The setObject method of this class can be used to modify the plug's value.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asMObject method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
  • MS::kSuccess Value exists and is non-null, and contains the correct information
  • MS::kFailure Either the value is a NULL value (kFailure) or the value does not exist (kObjectDoesNotExist failure)
Examples:
animInfoCmd.cpp, apiMeshShape.cpp, blindDataShader.cpp, cgfxShaderNode.cpp, closestPointCmd.cpp, clothPaintAttrCmd.cpp, componentScaleManip.cpp, curvedArrowsNode.cpp, customAttrManip.cpp, D3DTextureItem.cpp, D3DViewportRenderer.cpp, findFileTexturesCmd.cpp, findTexturesPerPolygonCmd.cpp, GLSLShaderNode.cpp, hlslShader.cpp, hwDecalBumpShader_NV20.cpp, hwReflectBumpShader_NV20.cpp, hwRefractReflectShader_NV20.cpp, hwToonShader_NV20.cpp, hwUnlitShader.cpp, intersectCmd.cpp, MTextureCache.cpp, pnTrianglesNode.cpp, polyExporter.cpp, polyModifierCmd.cpp, polyWriter.cpp, quadricShape.cpp, rotateManip.cpp, ShadingConnection.cpp, shellNode.cpp, and swissArmyManip.cpp.
MStatus getValue ( MDataHandle val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

This method is useful when wanting to retrieve an entire set of values from an array plug with a single call. An MArrayDataHandle can then be constructed from the returned MDataHandle to access the array data values.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

After using the returned MDataHandle, the caller must destroy the handle using MPlug::destructHandle().

Python Notes

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( double &  val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asDouble method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( float &  val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asFloat method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( int &  val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asInt method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( short &  val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asShort method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( bool &  val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asBool method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( MDistance val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asMDistance method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( MAngle val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asMDGContext method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( MTime val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asMTime method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( char &  val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asChar method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus getValue ( MString val,
MDGContext ctx = MDGContext::fsNormal 
) const

NO SCRIPT SUPPORT.

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Python Notes

This method is not available from Python. See asString method instead.

Parameters:
[out]valStorage for the attribute value
[in]ctxContext in which to evaluate the plug (Default is normal)
Returns:
Status Code
Status Codes:
MStatus setValue ( MObject val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setMObject method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
Examples:
cgfxShaderCmd.cpp, closestPointOnCurveCmd.cpp, hlslShader.cpp, pluginMain.cpp, pointOnMeshCmd.cpp, polyModifierCmd.cpp, and polyPrimitiveCmd.cpp.
MStatus setValue ( MPxData val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setMPxData method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( MDataHandle handle)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references with the values in the handle.

This method is most useful when the plug is an array plug, and you've filled the handle with data. Sending the value using this version of setValue will set the handle's data into the datablock and send out the appropriate attributeChanged messages to update the UI related to the attribute.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setMDataHandle method instead.

Parameters:
[in]handleThe handle containing the data to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( double  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setDouble method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( float  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setFloat method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( int  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setInt method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( short  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setShort method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( bool  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setBool method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( MDistance val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setMDistance method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( MAngle val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setMAngle method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( MTime val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setMTime method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( char  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setChar method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( const MString val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setString method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setValue ( const char *  val)

NO SCRIPT SUPPORT.

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Python Notes

This method is not available from Python. See setString method instead.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MObject asMObject ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

This method returns a copy of the attribute value for the plug and not a reference. The setObject method of this class can be used to modify the plug's value.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an MObject
Status Codes:
  • MS::kSuccess Value exists and is non-null, and contains the correct information
  • MS::kFailure Either the value is a NULL value (kFailure) or the value does not exist (kObjectDoesNotExist failure)
MDataHandle asMDataHandle ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

This method is useful when wanting to retrieve an entire set of values from an array plug with a single call. An MArrayDataHandle can then be constructed from the returned MDataHandle to access the array data values.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an MDataHandle. When done using the returned handle, the caller must destroy it using MPlug::destructHandle().
Status Codes:
double asDouble ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as a double
Status Codes:
float asFloat ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as a float
Status Codes:
int asInt ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an int
Status Codes:
short asShort ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as a short
Status Codes:
bool asBool ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as a bool
Status Codes:
MDistance asMDistance ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an MDistance
Status Codes:
MAngle asMAngle ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an MAngle
Status Codes:
MTime asMTime ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an MTime
Status Codes:
char asChar ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[in]ReturnStatusStatus Code
Returns:
Value of plug as a char
Status Codes:
MString asString ( MDGContext ctx = MDGContext::fsNormal,
MStatus ReturnStatus = NULL 
) const

Retrieve the current value of the attribute this plug references.

The default is to get the value at the current time. To specify an alternate time you must create a timed MDGContext that specifies the time of evaluation.

Parameters:
[in]ctxContext in which to evaluate the plug (Default is normal)
[out]ReturnStatusStatus Code
Returns:
Value of plug as an MString
Status Codes:
MStatus setMObject ( MObject val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setMPxData ( MPxData val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setMDataHandle ( MDataHandle handle)

Set the current value of the attribute this plug references with the values in the handle.

This method is most useful when the plug is an array plug, and you've filled the handle with data. Sending the value using this version of setValue will set the handle's data into the datablock and send out the appropriate attributeChanged messages to update the UI related to the attribute.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]handleThe handle containing the data to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setDouble ( double  val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setFloat ( float  val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setInt ( int  val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setShort ( short  val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setBool ( bool  val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setMDistance ( MDistance val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setMAngle ( MAngle val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setMTime ( MTime val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setChar ( char  val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MStatus setString ( const MString val)

Set the current value of the attribute this plug references.

If the attribute is the destination of a connection then setting the value will have no effect as once the node is re-evaluated the attribute value will be reset.

Parameters:
[in]valThe value to which the attribute will be set
Returns:
Status Code
Status Codes:
MPlug & operator= ( const MPlug other)

Assignment operator.

Copies one plug to another.

Networked plugs are not allowed to be duplicated so if the RHS is a networked plug then a non-networked version is returned.

Parameters:
[in]otherthe plug to be copied
Returns:
A reference to the copied plug
MPlug operator[] ( unsigned int  physicalIndex) const

This method will find and return a plug with the given physical index.

This is the same as the elementByPhysicalIndex method.

Parameters:
[in]physicalIndexArray index of child plug
Returns:
A plug with the given index
bool operator== ( const MPlug other) const

Comparison operator for MPlugs.

Plugs are considered equal if they refer to the same node and attribute unless both plugs are networked. In such cases a pointer comparison is done as there can only be one version of a networked plug.

If either or both plugs are null, the plugs are not considered equal.

Parameters:
[in]otherOther plug to compare against
Returns:
  • true If the plugs are equal
  • false If the plugs are not equal
bool operator== ( const MObject attr) const

Comparison operator for a plug and an attribute.

This actually compares the plug's attribute against the other attribute.

Parameters:
[in]attrAttribute to compare against
Returns:
  • true If the plug's attribute is equal
  • false If the plug's attribute is not equal
bool operator!= ( const MPlug other) const

The inequality operator for MPlugs.

Plugs are considered equal if they refer to the same node and attribute unless both plugs are networked. In such cases a pointer comparison is done as there can only be one version of a networked plug.

If either or both plugs are null, the plugs are not considered equal.

Parameters:
[in]otherOther plug to compare against
Returns:
  • true If the plugs are not equal
  • false If the plugs are equal
bool operator!= ( const MObject attr) const

The inequality operator for a plug and an attribute.

This actually compares the plug's attribute against the other attribute.

Parameters:
[in]attrAttribute to compare against
Returns:
  • true If the plug's attribute is not equal
  • false If the plug's attribute is equal
MStatus setNumElements ( unsigned int  elements)

The method is used to pre-allocate the number of elements that an array plug will contain.

The plug passed to this method must be an array plug and there must be no elements already allocated.

The numElements() method is used to find the number of elements already in the array plug.

Parameters:
[in]elementsnew array size
Returns:
  • kSuccess array plug size was changed
  • kFailure failed to change array plug size, plug is not array or array size is already non-zero.
MPlug operator[] ( MObject attr) const

NO SCRIPT SUPPORT.

Returns a plug to the given attribute.

This is only valid for attributes with no arrays in their ancestry.

Parameters:
[in]attrThe attribute of the plug
Returns:
A plug referring to the given attribute, or a NULL plug if the operation fails.
operator MObject ( ) const

NO SCRIPT SUPPORT.

This method returns the attribute for this plug.

Returns:
The attribute for this plug
bool operator! ( ) const

NO SCRIPT SUPPORT.

Returns true if this plug is not valid.

A plug is considered valid if it refers to an attribute.

Returns:
  • true The plug is NOT valid
  • false The plug is valid
bool isSource ( MStatus ReturnStatus = NULL) const

Determines if this plug is connected as a source.

Parameters:
[out]ReturnStatuspointer to a status code object
Returns:
  • true plug is connected as a source
  • false plug is not connected as a source
Status Codes:
bool isDestination ( MStatus ReturnStatus = NULL) const

Determines if this plug is connected as a destination.

Parameters:
[out]ReturnStatuspointer to a status code object
Returns:
  • true plug is connected as a destination
  • false plug is not connected as a destination
Status Codes:
Examples:
meshRemapCmd.cpp, meshRemapTool.cpp, meshReorderCmd.cpp, and meshReorderTool.cpp.
const char * className ( ) [static]

Returns the name of this class.

Returns:
Name of this class.

MPlug MPlug MPlug MPlug MPlug MPlug MPlug MPlug MPlug MPlug
MPlug MPlug MPlug MPlug MPlug MPlug MPlug MPlug MPlug MPlug