MPxCommand Class Reference
[OpenMaya - API module for common classesProxy classes]

#include <MPxCommand.h>

Inheritance diagram for MPxCommand:

Inheritance graph
[legend]
Collaboration diagram for MPxCommand:

Collaboration graph
[legend]

List of all members.


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.


Public Types

enum  MResultType { kLong, kDouble, kString, kNoArg }
 Types of results from commands. More...

Public Member Functions

 MPxCommand ()
virtual ~MPxCommand ()
virtual MStatus doIt (const MArgList &args)
virtual MStatus undoIt ()
virtual MStatus redoIt ()
virtual bool isUndoable () const
virtual bool hasSyntax () const
MSyntax syntax () const
bool isHistoryOn () const
MString commandString () const
MStatus setHistoryOn (bool state)
MStatus setCommandString (const MString &)
MStatus setUndoable (bool state)
 This method is obsolete.

Static Public Member Functions

static void displayInfo (const MString &theInfo)
static void displayWarning (const MString &theWarning)
static void displayError (const MString &theError)
static void displayWarning (const MString &theWarning, bool wantDisplayLineNumber)
static void displayError (const MString &theError, bool wantDisplayLineNumber)
static void clearResult ()
static void setResult (int val)
static void setResult (double val)
static void setResult (bool val)
static void setResult (const char *val)
static void setResult (const MString &val)
static void setResult (const MIntArray &val)
static void setResult (const MDoubleArray &val)
static void setResult (const MStringArray &val)
static void appendToResult (int val)
static void appendToResult (double val)
static void appendToResult (bool val)
static void appendToResult (const char *val)
static void appendToResult (const MString &val)
static void appendToResult (const MStringArray &val)
static MResultType currentResultType ()
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)
static MStatus getCurrentResult (MDoubleArray &val)
static MStatus getCurrentResult (MStringArray &val)
static int currentIntResult (MStatus *ReturnStatus=NULL)
static double currentDoubleResult (MStatus *ReturnStatus=NULL)
static MString currentStringResult (MStatus *ReturnStatus=NULL)

Member Enumeration Documentation

Types of results from commands.

Enumerator:
kLong   
kDouble   
kString   
kNoArg   


Constructor & Destructor Documentation

MPxCommand::MPxCommand (  ) 

Constructor

MPxCommand::~MPxCommand (  )  [virtual]

Destructor. Local class data should be freed here.


Member Function Documentation

MStatus MPxCommand::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.

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, 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, 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 MPxCommand::undoIt (  )  [virtual]

MStatus MPxCommand::redoIt (  )  [virtual]

bool MPxCommand::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:

bool MPxCommand::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:

MSyntax MPxCommand::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 MPxCommand::isHistoryOn (  )  const

Returns whether history is on.

Returns:
Boolean value: true if history is on, false otherwise.
Examples:

MString MPxCommand::commandString (  )  const

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

Returns:
The command string for this command object
Examples:

MStatus MPxCommand::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:

MStatus MPxCommand::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:

void MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::clearResult (  )  [static]

Initializes the place where results from Maya commands get stored.

void MPxCommand::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:

void MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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

MPxCommand::MResultType MPxCommand::currentResultType (  )  [static]

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

ReturnValue

  • The result type

MStatus MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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 MPxCommand::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

MStatus MPxCommand::setUndoable ( bool  state  ) 

This method is obsolete.

Deprecated:
This method has no effect any more on the undoability of a command.


Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6