Public Types | Public Member Functions | Static Public Member Functions

MPxCommand Class Reference

This reference page is linked to from the following overview topics: Using the Maya Python API.


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, 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)
  This method is used to display a warning in the script editor.
static void  displayError (const MString &theError)
  This method is used to display an error in the script editor.
static void  displayWarning (const MString &theWarning, bool wantDisplayLineNumber)
  This method is used to display a warning in the script editor.
static void  displayError (const MString &theError, bool wantDisplayLineNumber)
  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 (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] args List 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, 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, 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] state true 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] name The 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] theInfo The string to be displayed
void displayWarning ( const MString theWarning ) [static]

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

Parameters:
[in] theWarning The warning string to be displayed
void displayError ( const MString theError ) [static]

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

Parameters:
[in] theError The error string to be displayed
void displayWarning ( const MString theWarning,
bool  wantDisplayLineNumber 
) [static]

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

NOTE: Displaying of line numbers must be set in the MEL editor window before the wantDisplayLineNumber has an affect.

Parameters:
[in] theWarning The warning string to be displayed
[in] wantDisplayLineNumber Set to true if you want the line number of this command to be displayed. See NOTE above.
void displayError ( const MString theError,
bool  wantDisplayLineNumber 
) [static]

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

NOTE: Displaying of line numbers must be set in the MEL editor window before the wantDisplayLineNumber has an affect.

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

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

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

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

Parameters:
[in] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val The 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] val Storage 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] val Storage 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] val Storage 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] val Storage 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] val Storage 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] val Storage 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] ReturnStatus Optional 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] ReturnStatus Optional 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] ReturnStatus Optional status code. See below.
Returns:
The string result.
Status Codes:
  • MS:kSuccess A value was returned
  • MS:kFailure Cannot convert result to double
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