Public Types | Public Member Functions | Static Public Member Functions

MPxCommand Class Reference

This reference page is linked to from the following overview topics: Command Plug-in Basics, Command Plug-ins, Example: Creating a Scene, Dependency Graph Plug-in Basics, MPxCommand, Returning results to MEL, MPxToolCommand, polyModifierCmd example, splitUVCmd example, Using the Maya Python API, Differences Between Maya's C++ and Python APIs, Removal of MStatus return codes from .NET API, Creating a Hello World command plug-in using .NET, Using .NET assembly attributes, Appendix D: Frequently asked questions.


Search for all occurrences

Detailed Description

Base class for user commands.

This is the proxy class for creating MEL commands through the API.

Each command is derived from this one, and must have a doIt method, and optionally undoIt, and redoIt methods.

The doIt method should collect whatever information is required to do the task, and store it in local class data. It should finally call redoIt to make the command happen. The redoIt method should do the actual work, using only the local class data. The undoIt method should undo the actual work, again using only the local class data.

Maya contains support for infinite levels of undo. If a command written in a plug-in changes the state of anything in Maya, it should implement undoIt and redoIt methods. As well, if the doIt method returns successfully, Maya will call the method's isUndoable method immediately afterwards. If that method returns true, the instance of this class is retained and passed to Maya's undo manager so that the undoIt and redoIt methods can be called when appropriate. If isUndoable returns false, the command instance is destroyed right away.

So, for example, if a command supports both query and edit modes, in query mode the command should set a flag so that the isUndoable method returns false to prevent that command instance from being retained by the undo manager. In edit mode, where the state of Maya is changed, isUndoable should return true to enable undo and redo.

Examples:

animInfoCmd.cpp, blindComplexDataCmd.cpp, blindDoubleDataCmd.cpp, blindShortDataCmd.cpp, cgfxShaderCmd.h, cleanPerFaceAssignmentCmd.h, closestPointCmd.cpp, closestPointOnCurveCmd.h, closestPointOnNurbsSurfaceCmd.h, clothPaintAttrCmd.h, clusterWeightFunction.cpp, conditionTest.cpp, convertBumpCmd.cpp, convertEdgesToFacesCmd.cpp, convertVerticesToEdgesCmd.cpp, convertVerticesToFacesCmd.cpp, createClipCmd.cpp, cvPosCmd.cpp, dagMessageCmd.cpp, dagPoseInfoCmd.cpp, deletedMsgCmd.cpp, eventTest.cpp, exportJointClusterDataCmd.cpp, exportSkinClusterDataCmd.cpp, fileIOMsgCmd.cpp, filteredAsciiFile.cpp, fluidInfoCmd.cpp, fxManagerCmd.h, geometryCacheConverter.cpp, helix2Cmd.cpp, hlslShader.h, iffInfoCmd.cpp, iffPixelCmd.cpp, iffPpmCmd.cpp, instanceCallbackCmd.cpp, intersectCmd.cpp, intersectOnNurbsSurfaceCmd.h, latticeNoise.h, lockEvent.cpp, meshRemapCmd.h, meshReorderCmd.h, motionPathCmd.cpp, motionTraceCmd.cpp, moveCurveCVsCmd.cpp, nodeCreatedCBCmd.h, nodeInfoCmd.cpp, nodeMessageCmd.cpp, particlePathsCmd.cpp, particleSystemInfoCmd.cpp, peltOverlapCmd.cpp, pfxInfoCmd.cpp, pickCmd.cpp, pointOnMeshCmd.h, polyMessageCmd.cpp, polyModifierCmd.h, polyPrimitiveCmd.cpp, progressWindowCmd.cpp, referenceQueryCmd.cpp, renderViewInteractiveRenderCmd.cpp, renderViewRenderCmd.cpp, renderViewRenderRegionCmd.cpp, sampleCmd.cpp, sampleParticles.cpp, scanDagCmd.cpp, scanDagSyntax.cpp, spiralAnimCurveCmd.cpp, surfaceCreateCmd.cpp, surfaceTwistCmd.cpp, translateCmd.cpp, undoRedoMsgCmd.cpp, userMsgCmd.cpp, viewCallbackTest.cpp, and zoomCameraCmd.cpp.

#include <MPxCommand.h>

Inheritance diagram for MPxCommand:
Inheritance graph
[legend]

List of all members.

Public Types

enum  MResultType { kLong, kDouble, kString, kNoArg }
 

Types of results from commands.

More...

Public Member Functions

 MPxCommand ()
 Constructor.
virtual ~MPxCommand ()
 Destructor.
virtual MStatus doIt (const MArgList &args)
 This method should perform a command by setting up internal class data and then calling the redoIt method.
virtual MStatus undoIt ()
 This method should undo the work done be the redoIt method based on the internal class data only.
virtual MStatus redoIt ()
 This method should do the actual work of the command based on the internal class data only.
virtual bool isUndoable () const
 This method is used to specify whether or not the command is undoable.
virtual bool hasSyntax () const
 This method specifies whether or not the command has a syntax object.
MSyntax syntax () const
 This method is intended to be used in an MArgDataBase or MArgParser contructor when the plugin command's syntax is being initialized.
bool isHistoryOn () const
 Returns whether history is on.
MString commandString () const
 This method returns the command string that is associated with this command.
MStatus setHistoryOn (bool state)
 This method specifies if history for this command is on.
MStatus setCommandString (const MString &)
 Sets the command string that is associated with this command object.
MStatus setUndoable (bool state)
 This method is obsolete.

Static Public Member Functions

static void displayInfo (const MString &theInfo)
 This method is used to display information in the script editor.
static void displayWarning (const MString &theWarning, bool showLineNumber=false)
 This method is used to display a warning in the script editor.
static void displayError (const MString &theError, bool showLineNumber=false)
 This method is used to display an error in the script editor.
static void clearResult ()
 Initializes the place where results from Maya commands get stored.
static void setResult (unsigned int val)
 This method puts the given value into the return value area for a command.
static void setResult (int val)
 This method puts the given value into the return value area for a command.
static void setResult (double val)
 This method puts the given value into the return value area for a command.
static void setResult (bool val)
 This method puts the given value into the return value area for a command.
static void setResult (const char *val)
 This method puts the given value into the return value area for a command.
static void setResult (const MString &val)
 This method puts the given value into the return value area for a command.
static void setResult (const MIntArray &val)
 This method puts the given values into the return value area for a command.
static void setResult (const MDoubleArray &val)
 This method puts the given values into the return value area for a command.
static void setResult (const MStringArray &val)
 This method puts the given values into the return value area for a command.
static void appendToResult (int val)
 This method will add the given value to the end of the result array of integers.
static void appendToResult (double val)
 This method will add the given value to the end of the result array of doubles.
static void appendToResult (bool val)
 This method will add the given value to the end of the result array of integers.
static void appendToResult (const char *val)
 This method will add the given value to the end of the result array of strings.
static void appendToResult (const MString &val)
 This method will add the given value to the end of the result array of strings.
static void appendToResult (const MStringArray &val)
 This method will add the given value to the end of the result array of strings.
static bool isCurrentResultArray ()
 This method will return whether the return result for the command is an array or not.
static MResultType currentResultType ()
 This method will return the type of the current result for the command.
static MStatus getCurrentResult (int &val)
 This method is not available in Python.
static MStatus getCurrentResult (double &val)
 This method is not available in Python.
static MStatus getCurrentResult (MString &val)
 This method is not available in Python.
static MStatus getCurrentResult (MIntArray &val)
 This method gets the current node's result as an array of integers, if possible.
static MStatus getCurrentResult (MDoubleArray &val)
 This method gets the current node's result as an array of doubles, if possible.
static MStatus getCurrentResult (MStringArray &val)
 This method gets the current node's result as an array of strings, if possible.
static int currentIntResult (MStatus *ReturnStatus=NULL)
 This method gets the current node's result as a int, if possible.
static double currentDoubleResult (MStatus *ReturnStatus=NULL)
 This method gets the current node's result as a double, if possible.
static MString currentStringResult (MStatus *ReturnStatus=NULL)
 This method gets the current node's result as a MString, if possible.
static const char * className ()
 Returns the name of this class.

Member Enumeration Documentation

Types of results from commands.

Enumerator:
kLong 

 

kDouble 

 

kString 

 

kNoArg 

 


Constructor & Destructor Documentation

~MPxCommand ( ) [virtual]

Destructor.

Local class data should be freed here.


Member Function Documentation

MStatus doIt ( const MArgList args) [virtual]

This method should perform a command by setting up internal class data and then calling the redoIt method.

The actual action performed by the command should be done in the redoIt method. This is a pure virtual method, and must be overridden in derived classes.

Parameters:
[in]argsList of arguments passed to the command.
Returns:
Status code
Status Codes:

Reimplemented in MPxConstraintCommand, MPxToolCommand, MTemplateAction< ActionClass, CommandName, CommandSyntax >, MTemplateCreateNodeCommand< CommandClass, CommandName, NodeName >, and MTemplateAction< CommandClass, CommandName, CommandSyntax >.

Examples:
animInfoCmd.cpp, blindComplexDataCmd.cpp, blindDoubleDataCmd.cpp, blindShortDataCmd.cpp, cgfxShaderCmd.h, cleanPerFaceAssignmentCmd.h, closestPointCmd.cpp, closestPointOnCurveCmd.h, closestPointOnNurbsSurfaceCmd.h, clothPaintAttrCmd.h, clusterWeightFunction.cpp, conditionTest.cpp, convertBumpCmd.cpp, convertEdgesToFacesCmd.cpp, convertVerticesToEdgesCmd.cpp, convertVerticesToFacesCmd.cpp, createClipCmd.cpp, cvPosCmd.cpp, dagMessageCmd.cpp, dagPoseInfoCmd.cpp, deletedMsgCmd.cpp, eventTest.cpp, exportJointClusterDataCmd.cpp, exportSkinClusterDataCmd.cpp, fileIOMsgCmd.cpp, filteredAsciiFile.cpp, fluidInfoCmd.cpp, fxManagerCmd.h, geometryCacheConverter.cpp, helix2Cmd.cpp, hlslShader.h, iffInfoCmd.cpp, iffPixelCmd.cpp, instanceCallbackCmd.cpp, intersectCmd.cpp, intersectOnNurbsSurfaceCmd.h, latticeNoise.h, lockEvent.cpp, meshRemapCmd.h, meshReorderCmd.h, motionPathCmd.cpp, motionTraceCmd.cpp, moveCurveCVsCmd.cpp, nodeCreatedCBCmd.h, nodeInfoCmd.cpp, nodeMessageCmd.cpp, particlePathsCmd.cpp, particleSystemInfoCmd.cpp, peltOverlapCmd.cpp, pfxInfoCmd.cpp, pickCmd.cpp, pointOnMeshCmd.h, polyMessageCmd.cpp, polyPrimitiveCmd.cpp, progressWindowCmd.cpp, referenceQueryCmd.cpp, renderViewInteractiveRenderCmd.cpp, renderViewRenderCmd.cpp, renderViewRenderRegionCmd.cpp, sampleCmd.cpp, sampleParticles.cpp, scanDagCmd.cpp, scanDagSyntax.cpp, spiralAnimCurveCmd.cpp, surfaceCreateCmd.cpp, surfaceTwistCmd.cpp, translateCmd.cpp, undoRedoMsgCmd.cpp, userMsgCmd.cpp, viewCallbackTest.cpp, and zoomCameraCmd.cpp.
MStatus undoIt ( ) [virtual]
MStatus redoIt ( ) [virtual]
bool isUndoable ( ) const [virtual]

This method is used to specify whether or not the command is undoable.

In the base class, it always returns false. If you are writing a command that might be eligible for undo, you should override this method.

After Maya executes the command's doIt method, it will call isUndoable. If isUndoable returns true, Maya will retain the instance of the class and pass it to Maya's undo manager so that the undoIt and redoIt methods can be called when appropriate. If isUndoable returns false, the command instance will be immediately destroyed.

So, for example, if a command supports both query and edit modes, in query mode the command should set a flag so that the isUndoable method returns false to prevent that command instance from being retained by the undo manager. In edit mode, where the state of Maya is changed, isUndoable should return true to enable undo and redo.

Returns:
  • true This command is undoable
  • false This command is not undoable (default)

Reimplemented in MTemplateCommand< CommandClass, CommandName, CommandSyntax >, and MTemplateCommand< CommandClass, CommandName, MTemplateCreateNodeCommand_newSyntax >.

Examples:
blindComplexDataCmd.cpp, blindDoubleDataCmd.cpp, cgfxShaderCmd.h, closestPointCmd.cpp, closestPointOnCurveCmd.h, closestPointOnNurbsSurfaceCmd.h, clothPaintAttrCmd.h, convertBumpCmd.cpp, convertEdgesToFacesCmd.cpp, convertVerticesToEdgesCmd.cpp, convertVerticesToFacesCmd.cpp, createClipCmd.cpp, cvPosCmd.cpp, dagPoseInfoCmd.cpp, exportJointClusterDataCmd.cpp, exportSkinClusterDataCmd.cpp, fxManagerCmd.h, helix2Cmd.cpp, helixTool.cpp, hlslShader.h, iffInfoCmd.cpp, iffPixelCmd.cpp, intersectCmd.cpp, intersectOnNurbsSurfaceCmd.h, meshRemapCmd.h, meshReorderCmd.h, moveNumericTool.cpp, moveTool.cpp, pointOnMeshCmd.h, polyPrimitiveCmd.cpp, referenceQueryCmd.cpp, and zoomCameraCmd.cpp.
bool hasSyntax ( ) const [virtual]

This method specifies whether or not the command has a syntax object.

Returns:
Boolean value: true if this command uses syntax objects, false otherwise.
Examples:
fxManagerCmd.h, and geometryCacheConverter.cpp.
MSyntax syntax ( ) const

This method is intended to be used in an MArgDataBase or MArgParser contructor when the plugin command's syntax is being initialized.

The user should declare and define a syntax contstructing method that must be registered with Maya by passing the function pointer as a parameter in MFnPlugin::registerCommand(). The result is that when MPxCommand::syntax() is called it returns the syntax object that the user has created in the custom syntax constructing method that was registered. To avoid conflicts it is important that the user's custom syntax defining method be given a name other than "syntax." It can have any other name as long as it corresponds with the function pointer used to register the method with Maya.

Returns:
The syntax object
bool isHistoryOn ( ) const

Returns whether history is on.

Returns:
Boolean value: true if history is on, false otherwise.
Examples:
fxManagerCmd.h.
MString commandString ( ) const

This method returns the command string that is associated with this command.

Returns:
The command string for this command object
Examples:
fxManagerCmd.h.
MStatus setHistoryOn ( bool  state)

This method specifies if history for this command is on.

Parameters:
[in]statetrue if history is to be on , false otherwise
Returns:
Status code
Status Codes:
Examples:
fxManagerCmd.h.
MStatus setCommandString ( const MString name)

Sets the command string that is associated with this command object.

Parameters:
[in]nameThe command name to be set
Returns:
Status code
Status Codes:
Examples:
fxManagerCmd.h.
void displayInfo ( const MString theInfo) [static]

This method is used to display information in the script editor.

Parameters:
[in]theInfoThe string to be displayed
void displayWarning ( const MString theWarning,
bool  showLineNumber = false 
) [static]

This method is used to display a warning in the script editor.

NOTE: Displaying of line numbers must be enabled in the MEL editor window before the showLineNumber parameter has an affect.

Parameters:
[in]theWarningThe warning string to be displayed
[in]showLineNumberSet to true if you want the line number of this command to be displayed. See NOTE above.
void displayError ( const MString theError,
bool  showLineNumber = false 
) [static]

This method is used to display an error in the script editor.

NOTE: Displaying of line numbers must be enabled in the MEL editor window before the showLineNumber parameter has an affect.

Parameters:
[in]theErrorThe error string to be displayed
[in]showLineNumberSet to true if you want the line number of this command to be displayed See NOTE above.
void setResult ( unsigned int  val) [static]

This method puts the given value into the return value area for a command.

The value is cast to an int internally because the Maya command engine does not support unsigned ints.

Parameters:
[in]valThe value to be set
Examples:
convertEdgesToFacesCmd.cpp, convertVerticesToEdgesCmd.cpp, convertVerticesToFacesCmd.cpp, and cvExpandCmd.cpp.
void setResult ( int  val) [static]

This method puts the given value into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( double  val) [static]

This method puts the given value into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( bool  val) [static]

This method puts the given value into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( const char *  val) [static]

This method puts the given value into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( const MString val) [static]

This method puts the given value into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( const MIntArray val) [static]

This method puts the given values into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( const MDoubleArray val) [static]

This method puts the given values into the return value area for a command.

Parameters:
[in]valThe value to be set
void setResult ( const MStringArray val) [static]

This method puts the given values into the return value area for a command.

Parameters:
[in]valThe value to be set
void appendToResult ( int  val) [static]

This method will add the given value to the end of the result array of integers.

The result array can only be of a single type so this method can only be used when the result string has not been set or is already of integer type.

Note: appendToResult cannot be used in conjunction with setResult.

Parameters:
[in]valThe value to be added
void appendToResult ( double  val) [static]

This method will add the given value to the end of the result array of doubles.

The result array can only be of a single type so this method can only be used when the result string has not been set or is already of type double.

Note: appendToResult cannot be used in conjunction with setResult.

Parameters:
[in]valThe value to be added
void appendToResult ( bool  val) [static]

This method will add the given value to the end of the result array of integers.

The result array can only be of a single type so this method can only be used when the result string has not been set or is already of integer type.

Note: appendToResult cannot be used in conjunction with setResult.

Parameters:
[in]valThe value to be added
void appendToResult ( const char *  val) [static]

This method will add the given value to the end of the result array of strings.

The result array can only be of a single type so this method can only be used when the result string has not been set or is already of type string.

Note: appendToResult cannot be used in conjunction with setResult.

Parameters:
[in]valThe value to be added
void appendToResult ( const MString val) [static]

This method will add the given value to the end of the result array of strings.

The result array can only be of a single type so this method can only be used when the result string has not been set or is already of type string.

Note: appendToResult cannot be used in conjunction with setResult.

Parameters:
[in]valThe value to be added
void appendToResult ( const MStringArray val) [static]

This method will add the given value to the end of the result array of strings.

The result array can only be of a single type so this method can only be used when the result string has not been set or is already of type string.

Note: appendToResult cannot be used in conjunction with setResult.

Parameters:
[in]valThe value to be added
bool isCurrentResultArray ( ) [static]

This method will return whether the return result for the command is an array or not.

Returns:
  • true The command result is an array
  • false The command result is not an array
MPxCommand::MResultType currentResultType ( ) [static]

This method will return the type of the current result for the command.

ReturnValue

  • The result type
MStatus getCurrentResult ( int &  val) [static]

This method is not available in Python.

This method gets the current node's result as a int, if possible.

Python Notes

This method is not supported in Python. Please see currentIntResult()

Parameters:
[in]valStorage for the return value
Returns:
Status code
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to int
MStatus getCurrentResult ( double &  val) [static]

This method is not available in Python.

This method gets the current node's result as a double, if possible.

Python Notes

This method is not supported in Python. Please see currentDoubleResult()

Parameters:
[in]valStorage for the return value
Returns:
Status code
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to double
MStatus getCurrentResult ( MString val) [static]

This method is not available in Python.

This method gets the current node's result as a string, if possible.

Python Notes

This method is not supported in Python. Please see currentStringResult()

Parameters:
[in]valStorage for the return value
Returns:
Status code
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to string
MStatus getCurrentResult ( MIntArray val) [static]

This method gets the current node's result as an array of integers, if possible.

Parameters:
[in]valStorage for the return value
Returns:
Status code
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to integer array
MStatus getCurrentResult ( MDoubleArray val) [static]

This method gets the current node's result as an array of doubles, if possible.

Parameters:
[in]valStorage for the return value
Returns:
Status code
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to double array
MStatus getCurrentResult ( MStringArray val) [static]

This method gets the current node's result as an array of strings, if possible.

Parameters:
[in]valStorage for the return value
Returns:
Status code
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to string array
int currentIntResult ( MStatus ReturnStatus = NULL) [static]

This method gets the current node's result as a int, if possible.

Parameters:
[out]ReturnStatusOptional status code. See below.
Returns:
The int result.
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to int
double currentDoubleResult ( MStatus ReturnStatus = NULL) [static]

This method gets the current node's result as a double, if possible.

Parameters:
[out]ReturnStatusOptional status code. See below.
Returns:
The double result.
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to double
MString currentStringResult ( MStatus ReturnStatus = NULL) [static]

This method gets the current node's result as a MString, if possible.

Parameters:
[out]ReturnStatusOptional status code. See below.
Returns:
The string result.
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to string
const char * className ( ) [static]

Returns the name of this class.

Returns:
The name of this class.

Reimplemented in MPxToolCommand.

MStatus setUndoable ( bool  state)

This method is obsolete.

Deprecated:
This method has no effect any more on the undoability of a command.
Parameters:
[in]state

MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand
MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand MPxCommand