3ds Max C++ API Reference
NURBSULoftSurface Class Reference

#include <surf_api.h>

+ Inheritance diagram for NURBSULoftSurface:

Public Member Functions

DllExport NURBSULoftSurface (void)
 
virtual DllExport ~NURBSULoftSurface (void)
 
DllExport NURBSULoftSurfaceoperator= (const NURBSULoftSurface &surf)
 
DllExport void SetNumCurves (int num)
 
DllExport int GetNumCurves (void)
 
DllExport int AppendCurve (int index, BOOL flip, double startpoint=0.0, double tension=0.0, BOOL useTangent=FALSE, BOOL flipTangent=FALSE)
 
DllExport int AppendCurve (NURBSId id, BOOL flip, double startpoint=0.0, double tension=0.0, BOOL useTangent=FALSE, BOOL flipTangent=FALSE)
 
DllExport void SetParent (int pnum, int index)
 
DllExport void SetParentId (int pnum, NURBSId id)
 
DllExport int GetParent (int pnum)
 
DllExport NURBSId GetParentId (int pnum)
 
DllExport void SetFlip (int pnum, BOOL flip)
 
DllExport BOOL GetFlip (int pnum)
 
DllExport void SetCurveStartPoint (TimeValue t, int pnum, double startpoint)
 
DllExport double GetCurveStartPoint (TimeValue t, int pnum)
 
DllExport void SetCurveTension (TimeValue t, int pnum, double tension)
 
DllExport double GetCurveTension (TimeValue t, int pnum)
 
DllExport void SetCurveUseSurfaceTangent (int pnum, BOOL useTangent)
 
DllExport BOOL GetCurveUseSurfaceTangent (int pnum)
 
DllExport void SetFlipTangent (int pnum, BOOL flipTangent)
 
DllExport BOOL GetFlipTangent (int pnum)
 
DllExport void SetAutoAlign (BOOL autoalign)
 
DllExport BOOL GetAutoAlign ()
 
DllExport void SetCloseLoft (BOOL closeLoft)
 
DllExport BOOL GetCloseLoft ()
 
- Public Member Functions inherited from NURBSSurface
voidGetSurfCache ()
 
const voidGetSurfCache () const
 
void SetSurfCache (void *pCache)
 
DllExport NURBSSurface (void)
 
virtual DllExport ~NURBSSurface (void)
 
DllExport NURBSSurfaceoperator= (const NURBSSurface &surf)
 
DllExport BOOL Renderable ()
 
DllExport void Renderable (BOOL state)
 
DllExport BOOL FlipNormals ()
 
DllExport void FlipNormals (BOOL state)
 
DllExport BOOL GenerateUVs (int channel=0)
 
DllExport void SetGenerateUVs (BOOL state, int channel=0)
 
DllExport int MatID ()
 
DllExport void MatID (int id)
 
DllExport Point2 GetTextureUVs (TimeValue t, int i, int channel=0)
 
DllExport void SetTextureUVs (TimeValue t, int i, Point2 pt, int channel=0)
 
DllExport void GetTileOffset (TimeValue t, float &ut, float &vt, float &uo, float &vo, float &a, int channel=0)
 
DllExport void SetTileOffset (TimeValue t, float ut, float vt, float uo, float vo, float a, int channel=0)
 
DllExport NURBSTextureSurfaceGetTextureSurface (int channel)
 
DllExport void SetTextureSurface (int channel, NURBSTextureSurface &texSurf)
 
DllExport int NumChannels ()
 
DllExport int GetChannelFromIndex (int index)
 
DllExport BOOL IsClosedInU (void)
 
DllExport BOOL IsClosedInV (void)
 
DllExport BOOL Evaluate (TimeValue t, double u, double v, Point3 &pt, Point3 &dPdU, Point3 &dPdV) const
 
DllExport BOOL Evaluate (TimeValue t, double u, double v, Point3 &pt, Point3 &dPdU, Point3 &dPdV, Point3 &d2PdU2, Point3 &d2PdV2, Point3 &d2PdUdV) const
 
DllExport void GetParameterRange (TimeValue t, double &uMin, double &uMax, double &vMin, double &vMax) const
 
DllExport BOOL GetNURBSData (TimeValue t, int &degreeInU, int &degreeInV, int &numInU, int &numInV, NURBSCVTab &cvs, int &numKnotsInU, int &numKnotsInV, NURBSKnotTab &uKnots, NURBSKnotTab &vKnots)
 
DllExport BOOL GetCLPTextureSurfaceData (TimeValue t, int channel, int &degreeInU, int &degreeInV, int &numInU, int &numInV, NURBSCVTab &cvs, int &numKnotsInU, int &numKnotsInV, NURBSKnotTab &uKnots, NURBSKnotTab &vKnots)
 
DllExport int NumTrimLoops (TimeValue t)
 
DllExport int NumCurvesInLoop (TimeValue t, int loop)
 
DllExport BOOL Get2dTrimCurveData (TimeValue t, int loop, int curve, int &degree, int &numCVs, NURBSCVTab &cvs, int &numKnots, NURBSKnotTab &knots)
 
DllExport BOOL Get3dTrimCurveData (TimeValue t, int loop, int curve, int &degree, int &numCVs, NURBSCVTab &cvs, int &numKnots, NURBSKnotTab &knots)
 
DllExport TessApproxGetProdTess (NURBSTessType type=kNTessSurface)
 
DllExport TessApproxGetViewTess (NURBSTessType type=kNTessSurface)
 
DllExport void SetProdTess (TessApprox &tess, NURBSTessType type=kNTessSurface)
 
DllExport void SetViewTess (TessApprox &tess, NURBSTessType type=kNTessSurface)
 
DllExport void ClearViewTess (NURBSTessType type=kNTessSurface)
 
DllExport void ClearProdTess (NURBSTessType type=kNTessSurface)
 
- Public Member Functions inherited from NURBSObject
DllExport NURBSObject (void)
 
virtual DllExport ~NURBSObject (void)
 
DllExport NURBSObjectoperator= (const NURBSObject &pt)
 
DllExport void SetName (const MCHAR *name)
 
DllExport const MCHARGetName (void)
 
DllExport NURBSType GetType () const
 
DllExport NURBSKind GetKind () const
 
DllExport NURBSId GetId () const
 
DllExport void SetId (NURBSId id)
 
DllExport void SetNSet (NURBSSet *nset)
 
DllExport void SetObject (Object *object)
 
DllExport ObjectGetMAXObject ()
 
DllExport NURBSSetGetNSet ()
 
DllExport int GetIndex ()
 
DllExport BOOL IsSelected ()
 
DllExport void SetSelected (BOOL set)
 

Friends

class NURBSSet
 

Additional Inherited Members

- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 
- Protected Member Functions inherited from NURBSObject
DllExport void Clean (NURBSIdTab ids)
 
- Protected Attributes inherited from NURBSSurface
NURBSTextureChannelSet mTextureChannelSet
 
BOOL mFlipNormals
 
BOOL mRenderable
 
int mMatID
 
BOOL mClosedInU
 
BOOL mClosedInV
 
TessApproxmpVTess
 
TessApproxmpRTess
 
TessApproxmpRTessDisp
 
TessApproxmpVTessCurve
 
TessApproxmpRTessCurve
 
voidmpSurfCache
 
- Protected Attributes inherited from NURBSObject
MCHAR mName [NURBS_NAME_SIZE]
 
NURBSType mType
 
NURBSKind mKind
 
NURBSId mId
 
ObjectmpObject
 
NURBSSetmpNSet
 
BOOL mSelected
 

Detailed Description

See also
Class NURBSSurface.

Description:
This class defines a dependent U Loft surface. A U Loft surface interpolates a surface across multiple curve sub-objects. The curves become U-axis contours of the surface. Methods are available to get/set the number of curves used to make the loft, append curves to the list, get/set the parent ids, and get/set the flipped state for each of the curves.

All methods of this class are implemented by the system.

Constructor & Destructor Documentation

◆ NURBSULoftSurface()

Remarks
Constructor. The data members are initialized as follows:

mType = kNULoftSurface;

mpObject = NULL;

mpNSet = NULL;

mParentId.SetCount(0);

mParentIndex.SetCount(0);

mFlip.SetCount(0);

mCurveStartParam.SetCount(0);

mTension.SetCount(0);

mUseTangents.SetCount(0);

mFlipTangents.SetCount(0);

mAutoAlign = FALSE;

mCloseLoft = FALSE;

◆ ~NURBSULoftSurface()

virtual DllExport ~NURBSULoftSurface ( void  )
virtual
Remarks
Destructor.

Member Function Documentation

◆ operator=()

DllExport NURBSULoftSurface& operator= ( const NURBSULoftSurface surf)
Remarks
Assignment operator.
Parameters:
const NURBSULoftSurface& surf

The surface to assign.

◆ SetNumCurves()

DllExport void SetNumCurves ( int  num)
Remarks
Sets the number of curves used by the U loft.
Parameters:
int num

The number of curves to set.

◆ GetNumCurves()

DllExport int GetNumCurves ( void  )
Remarks
Returns the number of curves used by the surface.

◆ AppendCurve() [1/2]

DllExport int AppendCurve ( int  index,
BOOL  flip,
double  startpoint = 0.0,
double  tension = 0.0,
BOOL  useTangent = FALSE,
BOOL  flipTangent = FALSE 
)
Remarks
Adds a curve to the end of the list of curves used to make the U loft surface.
Parameters:
int index

The index of the curve to add in the NURBSSet.

BOOL flip

TRUE to flip the orientation of this curve's normal used to build the loft; otherwise FALSE.
Returns
The number of curves in the list prior to this one being added.

◆ AppendCurve() [2/2]

DllExport int AppendCurve ( NURBSId  id,
BOOL  flip,
double  startpoint = 0.0,
double  tension = 0.0,
BOOL  useTangent = FALSE,
BOOL  flipTangent = FALSE 
)
Remarks
Adds a curve to the end of the list of curves used to make the U loft surface.
Parameters:
NURBSId id

The NURBS id of the curve to add.

BOOL flip

TRUE to flip the orientation of this curve's normal used to build the loft; otherwise FALSE.

◆ SetParent()

DllExport void SetParent ( int  pnum,
int  index 
)
Remarks
Sets the index in the NURBSSet of the specified parent object.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

int index

The index into the NURBSSet of the parent surface.

◆ SetParentId()

DllExport void SetParentId ( int  pnum,
NURBSId  id 
)
Remarks
Sets the NURBSId of the specified parent.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

NURBSId id

The id to set.

◆ GetParent()

DllExport int GetParent ( int  pnum)
Remarks
Returns the index in the NURBSSet of the specified parent object.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

◆ GetParentId()

DllExport NURBSId GetParentId ( int  pnum)
Remarks
Returns the NURBSId of the specified parent. Note that a NURBSId won't be valid until the object has been instantiated in the scene
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

◆ SetFlip()

DllExport void SetFlip ( int  pnum,
BOOL  flip 
)
Remarks
This method allows one to control the matching of parent normals when creating the U loft surface.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

BOOL flip

TRUE to flip the orientation of the normal when building the surface at this curve; otherwise FALSE.

◆ GetFlip()

DllExport BOOL GetFlip ( int  pnum)
Remarks
Returns the flip state of the specified parent normal.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

◆ SetCurveStartPoint()

DllExport void SetCurveStartPoint ( TimeValue  t,
int  pnum,
double  startpoint 
)
Remarks
Sets the start point for the specified parent curve. Note: This is only applicable if the parent is a closed curve.
Parameters:
TimeValue t

The time at which to set the start point.

int pnum

The parent number, 0, 1, 2, etc.

double startpoint

The start point in the range 0.0 to 1.0.

◆ GetCurveStartPoint()

DllExport double GetCurveStartPoint ( TimeValue  t,
int  pnum 
)
Remarks
Returns the start point for the specified parent curve. Note: This is only applicable if the parent is a closed curve.
Parameters:
TimeValue t

The time at which to get the start point.

int pnum

The parent number, 0, 1, 2, etc.

◆ SetCurveTension()

DllExport void SetCurveTension ( TimeValue  t,
int  pnum,
double  tension 
)
Remarks
Sets the curve tension for the specified parent curve.
Parameters:
TimeValue t

The time at which to set the tension.

int pnum

The parent number, 0, 1, 2, etc.

double tension

The tension value to set.

◆ GetCurveTension()

DllExport double GetCurveTension ( TimeValue  t,
int  pnum 
)
Remarks
Returns the tension setting of the specified parent curve at the specified time.
Parameters:
TimeValue t

The time at which to get the tension.

int pnum

The parent number, 0, 1, 2, etc.

◆ SetCurveUseSurfaceTangent()

DllExport void SetCurveUseSurfaceTangent ( int  pnum,
BOOL  useTangent 
)
Remarks
Sets the curve use surface tangent setting. If the curve is a curve on surface, turning this on causes the U loft to use the tangency of the surface. This can help blend a loft smoothly onto a surface.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

BOOL useTangent

TRUE to use the tangent; otherwise FALSE.

◆ GetCurveUseSurfaceTangent()

DllExport BOOL GetCurveUseSurfaceTangent ( int  pnum)
Remarks
Returns TRUE if the curve use surface tangent setting is on; FALSE if off.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

◆ SetFlipTangent()

DllExport void SetFlipTangent ( int  pnum,
BOOL  flipTangent 
)
Remarks
Sets the flip tangent setting for the specified parent curve.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

BOOL flipTangent

TRUE to flip the tangent; otherwise FALSE.

◆ GetFlipTangent()

DllExport BOOL GetFlipTangent ( int  pnum)
Remarks
Returns TRUE if the tangent is flipped for the specified parent curve; otherwise FALSE.
Parameters:
int pnum

The parent number, 0, 1, 2, etc.

◆ SetAutoAlign()

DllExport void SetAutoAlign ( BOOL  autoalign)
Remarks
Sets if auto align is on or off.
Parameters:
BOOL autoalign

TRUE for on; FALSE for off.

◆ GetAutoAlign()

DllExport BOOL GetAutoAlign ( )
Remarks
Returns TRUE if auto align is on; otherwise FALSE.

◆ SetCloseLoft()

DllExport void SetCloseLoft ( BOOL  closeLoft)
Remarks
Sets if the loft is closed or not.
Parameters:
BOOL closeLoft

TRUE for closed; FALSE for open.

◆ GetCloseLoft()

DllExport BOOL GetCloseLoft ( )
Remarks
Returns TRUE if loft is closed; otherwise FALSE.
Operators:

Friends And Related Function Documentation

◆ NURBSSet

friend class NURBSSet
friend