HT_NURBS_Trim

Functions

~HT_NURBS_Trim

void

SetPoly

void

SetCurve

void

SetCollection

HT_NURBS_Trim *

PrependCollection

void

SetOptions

void

SetList

void

SetNext

void

SetStart

void

SetEnd

TK_Status

Read

TK_Status

Write

TK_Status

ReadAscii

TK_Status

WriteAscii

TK_Status

read_collection_ascii

TK_Status

write_collection_ascii

HT_NURBS_Trim *

GetNext

HT_NURBS_Trim const *

GetNext

int

GetType

int

GetCount

float const *

GetPoints

float *

GetPoints

int

GetDegree

float

GetStart

float

GetEnd

int

GetOptions

float const *

GetWeights

float *

GetWeights

float const *

GetKnots

float *

GetKnots

HT_NURBS_Trim const *

GetList

HT_NURBS_Trim *

GetList

Detailed Description

class HT_NURBS_Trim : public BBaseOpcodeHandler

Does not handle any top level opcodes, but rather only the trim types allowable on nurbs surfaces.

HT_NURBS_Trim

is a helper class to handle reading and writing of the nurbs surface trims. Trims may be of type NS_TRIM_POLY, NS_TRIM_CURVE, or NS_TRIM_COLLECTION. In any case, though, all coordinates are specified with respect to the parameterization of the NURBS surface. This parameterization is always from 0 to 1 in each direction. Some solid modelers parameterize with respect to the contents of their knot vectors, meaning that coordinates may need to be rescaled. To do so, the formula is “u =

(u - u_knots[u_degree]) / (u_knots[u_control_point_count] - knots[u_degree])”. Values coming out of HOOPS will already be properly scaled.

Public Functions

~HT_NURBS_Trim()
void SetPoly(int count, float const points[] = 0)

allocates space for the coordinates (polyline vertices or curve control points), and copies values if they were given. Also handles initializing the type of this trim to NS_TRIM_POLY.

void SetCurve(int degree, int control_count, float const points[] = 0, float const weights[] = 0, float const knots[] = 0, float start_u = 0, float end_u = 1)

Configures *this to handle the reading or writing of a trim curve. Also handles initializing the type of this trim to NS_TRIM_CURVE.

void SetCollection()

Configures *this to read or write a trim collection

HT_NURBS_Trim *PrependCollection()

Prepends a trim to the internal trim collection

inline void SetOptions(int o)

sets the options bit flags to indicate the presence of all of the optional fields

inline void SetList(HT_NURBS_Trim *node)

sets the head of the list of a NS_TRIM_COLLECTION.

inline void SetNext(HT_NURBS_Trim *next)

sets the next pointer of a trim. Used for linked list management

inline void SetStart(float start)
inline void SetEnd(float end)
virtual TK_Status Read(BStreamFileToolkit &tk)

Reads data from the toolkit buffer, decodes/decompresses it, and maps it to the opcode handlers data members. User-defined classes which need to write out custom data should utilize one of the available GetData() methods.

Parameters:

tk – A reference to the BStreamFileToolkit object.

Returns:

The result of the function call.

virtual TK_Status Write(BStreamFileToolkit &tk)

Encodes/compresses data and writes data to the toolkit buffer. User-defined classes which need to write out custom data should utilize one of the available PutData() methods, and first write out the opcode associated with the group of binary data followed by the data itself.

Parameters:

tk – A reference to the BStreamFileToolkit object.

Returns:

The result of the function call.

TK_Status ReadAscii(BStreamFileToolkit &tk)

Deprecated.

TK_Status WriteAscii(BStreamFileToolkit &tk)

Deprecated.

TK_Status read_collection_ascii(BStreamFileToolkit &tk)
TK_Status write_collection_ascii(BStreamFileToolkit &tk)
inline HT_NURBS_Trim *GetNext(void)

gets the next trim in the list

inline HT_NURBS_Trim const *GetNext(void) const
inline int GetType() const

gets an identifier for the trim type. Legal values are NS_TRIM_POLY, NS_TRIM_CURVE, and NS_TRIM_COLLECTION

inline int GetCount() const

(relevant to NS_TRIM_CURVE and NS_TRIM_POLY only), gets the number of vertices in the trim.

inline float const *GetPoints() const

(relevant to NS_TRIM_CURVE and NS_TRIM_POLY only), returns a const pointer to the vertices

inline float *GetPoints()

(relevant to NS_TRIM_CURVE and NS_TRIM_POLY only), returns a mutable pointer to the vertices

inline int GetDegree() const

(relevant to NS_TRIM_CURVE only), returns the degree of the trim curve. Note that this is not necessarily the same as the degree of the surface to be trimmed. (relevant to NS_TRIM_CURVE only), the start point of the trim curve. Parameter is specified in the range of 0 to 1.

inline float GetStart() const

(relevant to NS_TRIM_CURVE only), the end point of the trim curve. Parameter is specified in the range of 0 to 1.

inline float GetEnd() const
inline int GetOptions() const

(relevant to NS_TRIM_CURVE only), returns the options bit flags to indicate the presence of all of the optional fields

inline float const *GetWeights() const

(relevant to NS_TRIM_CURVE only), returns a const pointer to the control point weights

inline float *GetWeights()

(relevant to NS_TRIM_CURVE only), returns a mutable pointer to the control point weights

inline float const *GetKnots() const

(relevant to NS_TRIM_CURVE only), returns a const pointer to the trim curve’s knots

inline float *GetKnots()

(relevant to NS_TRIM_CURVE only), returns a mutable pointer to the trim curve’s knots

inline HT_NURBS_Trim const *GetList() const

(relevant to NS_TRIM_COLLECTION only), returns a const pointer the collection’s linked list

inline HT_NURBS_Trim *GetList()

(relevant to NS_TRIM_COLLECTION only), returns a mutable pointer the collection’s linked list. Note that SetList, not this function, must be used to make the head of the list point somewhere else.