C++ API Reference
MItSurfaceCV Class Reference

NURBS surface CV iterator. More...

#include <MItSurfaceCV.h>

Public Member Functions

 MItSurfaceCV (const MObject &surface, bool useURows=true, MStatus *ReturnStatus=NULL)
 Constructor. More...
 
 MItSurfaceCV (const MDagPath &surface, const MObject &component=MObject::kNullObj, bool useURows=true, MStatus *ReturnStatus=NULL)
 Constructor. More...
 
virtual ~MItSurfaceCV ()
 Class destructor.
 
bool isDone (MStatus *ReturnStatus=NULL) const
 Returns true if the iteration is finished, i.e. More...
 
bool isRowDone (MStatus *ReturnStatus=NULL) const
 Returns true if the current row has no more CVs to iterate over. More...
 
MStatus next ()
 Advance to the next CV in the iteration. More...
 
MStatus nextRow ()
 Advance to the next row in the iteration. More...
 
MStatus reset ()
 Reset the iterator to the first CV. More...
 
MStatus reset (const MObject &surface, bool useURows=true)
 Reset the iterator to iterate over all CVs on the specified surface. More...
 
MStatus reset (const MDagPath &surface, const MObject &component=MObject::kNullObj, bool useURows=true)
 Reset the iterator to iterate over the CVs of the given surface that are specified in the given component. More...
 
MPoint position (MSpace::Space space=MSpace::kObject, MStatus *ReturnStatus=NULL) const
 Returns the position of the current CV in the iteration in the specified space. More...
 
MStatus setPosition (const MPoint &point, MSpace::Space space=MSpace::kObject)
 Set the position of the current CV in the iteration to the specified point. More...
 
MStatus translateBy (const MVector &vector, MSpace::Space space=MSpace::kObject)
 Move the current CV in the iteration by the sepcified vector. More...
 
int index (MStatus *ReturnStatus=NULL) const
 Get the index of the current CV as it appears in CV array for this surface. More...
 
MStatus getIndex (int &indexU, int &indexV) const
 Get the index of the current CV as it appears in CV array for this surface. More...
 
MObject cv (MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
MObject currentItem (MStatus *ReturnStatus=NULL) const
 Get the current CV in the iteration as a component. More...
 
bool hasHistoryOnCreate (MStatus *ReturnStatus=NULL) const
 This method determines if the shape was created with history. More...
 
MStatus updateSurface ()
 This method is used to signal the surface that it has been changed and needs to redraw itself. More...
 

Static Public Member Functions

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

Detailed Description

NURBS surface CV iterator.

Iterator class for NURBS surface CVs.

Example: Translates the CVs for a surface in the X direction (world space).

MItSurfaceCV cvIter( surface, true, &stat );
MVector vector(1.0,0.0,0.0);
if ( MStatus::kSuccess == stat ) {
for ( ; !cvIter.isDone(); cvIter.nextRow() )
{
for ( ; !cvIter.isRowDone(); cvIter.next() )
{
cvIter.translateBy( vector, MSpace::kWorld );
}
}
cvIter.updateSurface(); // Tell surface is has been changed
}
else {
cerr << "Error creating iterator!" << endl;
}
Examples:
componentScaleManip/componentScaleManip.cpp, cvExpandCmd/cvExpandCmd.cpp, cvPosCmd/cvPosCmd.cpp, lassoTool/lassoTool.cpp, moveTool/moveTool.cpp, skinClusterWeights/skinClusterWeights.cpp, surfaceTwistCmd/surfaceTwistCmd.cpp, and translateCmd/translateCmd.cpp.

Constructor & Destructor Documentation

MItSurfaceCV ( const MObject surface,
bool  useURows = true,
MStatus ReturnStatus = NULL 
)

Constructor.

This constructor is used when iterating over all the CVs on the given surface.

Parameters
[in]surfaceThe surface for the iteration
[in]useURowsIf true then the iterator will iterate in the U direction, otherwise it will be in the V direction.
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MItSurfaceCV ( const MDagPath surface,
const MObject component = MObject::kNullObj,
bool  useURows = true,
MStatus ReturnStatus = NULL 
)

Constructor.

This constructor is used when iterating over a group of CVs. If the component is not given then the iteration will be for the whole surface.

Parameters
[in]surfaceThe surface for the iteration
[in]componentA group of CVs to be iterated on
[in]useURowsIf true then the iterator will iterate in the U direction, otherwise it will be in the V direction.
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.

Member Function Documentation

bool isDone ( MStatus ReturnStatus = NULL) const

Returns true if the iteration is finished, i.e.

there are no more CVs to iterate on.

Parameters
[out]ReturnStatusStatus code
Returns
Boolean value: true if there are no more CVs to iterate on, false otherwise.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
Examples:
componentScaleManip/componentScaleManip.cpp, and cvExpandCmd/cvExpandCmd.cpp.
bool isRowDone ( MStatus ReturnStatus = NULL) const

Returns true if the current row has no more CVs to iterate over.

The row can be in the U or V direction depending on what value of useURows has been set in the constructor.

Parameters
[out]ReturnStatusStatus code
Returns
Boolean value: true if the current row in the iteration is finished, false otherwise.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus next ( )

Advance to the next CV in the iteration.

If the iterator is already at the last CV then this method has no effect. Use isDone to determine if the iterator is at the last CV.

Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus nextRow ( )

Advance to the next row in the iteration.

The row can be in the U or V direction depending on what value of useURows has been set in the constructor.

Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus reset ( )

Reset the iterator to the first CV.

Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus reset ( const MObject surface,
bool  useURows = true 
)

Reset the iterator to iterate over all CVs on the specified surface.

Parameters
[in]surfaceThe surface for the iteration
[in]useURowsIf true then the iterator will iterate in the U direction, otherwise it will be in the V direction.
Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus reset ( const MDagPath surface,
const MObject component = MObject::kNullObj,
bool  useURows = true 
)

Reset the iterator to iterate over the CVs of the given surface that are specified in the given component.

If the component is NULL then the iteration will be over all CVs on the surface.

Parameters
[in]surfaceThe surface for the iteration
[in]componentA group of CVs to be iterated on
[in]useURowsIf true then the iterator will iterate in the U direction, otherwise it will be in the V direction.
Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MPoint position ( MSpace::Space  space = MSpace::kObject,
MStatus ReturnStatus = NULL 
) const

Returns the position of the current CV in the iteration in the specified space.

Parameters
[in]spaceThe coordinate space in which the CV is set
[out]ReturnStatusStatus code
Returns
The position of the current CV in the iteration
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus setPosition ( const MPoint point,
MSpace::Space  space = MSpace::kObject 
)

Set the position of the current CV in the iteration to the specified point.

Parameters
[out]pointThe new position for the current CV in the iteration
[in]spaceThe coordinate space in which the CV is set
Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus translateBy ( const MVector vector,
MSpace::Space  space = MSpace::kObject 
)

Move the current CV in the iteration by the sepcified vector.

Parameters
[out]vectorThe translation vector
[in]spaceThe coordinate space in which the CV is set
Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
int index ( MStatus ReturnStatus = NULL) const

Get the index of the current CV as it appears in CV array for this surface.

The index returned is a single index. To convert this into a double (U,V) index:

sizeInV = MFnNurbsSurfaceInstance.numCVsInV();
indexU = index() / sizeInV;
indexV = index() % sizeInV;
Parameters
[out]ReturnStatusStatus code
Returns
The index for the current CV in the iteration
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus getIndex ( int &  indexU,
int &  indexV 
) const

Get the index of the current CV as it appears in CV array for this surface.

The index returned is a double (U,V) index. To convert this into a single index:

index = numCVsInV()*indexU + indexV
Parameters
[out]indexUStorage for the u index
[out]indexVStorage for the v index
Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MObject cv ( MStatus ReturnStatus = NULL) const

This method is obsolete.

Get the current CV in the iteration as a component.

[as of Maya 2019]

Deprecated:
Use MItSurfaceCV::currentItem instead.

Components are used to specify one or more CVs and are usefull in operating on groups of non-contiguous CVs for a curve or surface. Components do not contain any information about the surface that they refer to so an MDagPath must be specified when dealing with components.

Parameters
[out]ReturnStatusStatus code
Returns
The current CV in the interation
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kInsufficientMemory No memory available.
  • MS::kFailure An object error has occurred.
MObject currentItem ( MStatus ReturnStatus = NULL) const

Get the current CV in the iteration as a component.

Components are used to specify one or more CVs and are usefull in operating on groups of non-contiguous CVs for a curve or surface. Components do not contain any information about the surface that they refer to so an MDagPath must be specified when dealing with components.

Parameters
[out]ReturnStatusStatus code
Returns
The current CV in the interation
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kInsufficientMemory No memory available.
  • MS::kFailure An object error has occurred.
bool hasHistoryOnCreate ( MStatus ReturnStatus = NULL) const

This method determines if the shape was created with history.

If the object that this iterator is attached to is not a shape then this method will fail.

Parameters
[out]ReturnStatus
Returns
Boolean value: true if the shape has history, false otherwise.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MStatus updateSurface ( )

This method is used to signal the surface that it has been changed and needs to redraw itself.

When modifying a large number of CVs, it is most efficient to call this method after all of the CVs have been modified.

Returns
Status code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
const char * className ( )
static

Returns the name of this class.

Returns
The name of this class.

The documentation for this class was generated from the following files: