NurbsCurveList Class Reference

Related Scripting Object: NurbsCurveList

A NurbsCurveList is a kind of Geometry and is a collection of NurbsCurve objects. More...

#include <xsi_nurbscurvelist.h>

Inheritance diagram for NurbsCurveList:

Geometry SIObject CBase List of all members.

Public Member Functions

  NurbsCurveList ()
  ~NurbsCurveList ()
  NurbsCurveList (const CRef &in_ref)
  NurbsCurveList (const NurbsCurveList &in_obj)
  NurbsCurveList (const Geometry &in_obj)
bool  IsA (siClassID in_ClassID) const
siClassID  GetClassID () const
NurbsCurveList operator= (const NurbsCurveList &in_obj)
NurbsCurveList operator= (const Geometry &in_geom)
NurbsCurveList operator= (const CRef &in_ref)
CStatus  GetClosed (bool &out_bClosed) const
CNurbsCurveRefArray  GetCurves () const
CControlPointRefArray  GetControlPoints () const
CStatus  GetLength (double &out_dLength) const
CStatus  GetClosestCurvePosition (MATH::CVector3 &in_vPosition, LONG &out_lCurveIndex, double &out_dSquaredDistance, double &out_dUValue, MATH::CVector3 &out_vPosition) const
CStatus  Get (siNurbsFormat in_siNurbsFormat, CNurbsCurveDataArray &out_curves) const
CStatus  Set (const CNurbsCurveDataArray &in_curves, siNurbsFormat in_siNurbsFormat=siSINurbs)
CStatus  AddCurve (const CNurbsCurveData &in_curve, siNurbsFormat in_siNurbsFormat, NurbsCurve &out_NurbsCurve)

Detailed Description

A NurbsCurveList is a kind of Geometry and is a collection of NurbsCurve objects.

We can navigate the NurbsCurveList using the generic terms such as Points or we can choose to use navigate using terms that are specific to the NurbsCurveList such as NurbsCurves, ControlPoints. There are some functions that do not fit with a generic terms such as Knots, which are specific to NURBS, this is why there are specific terms as well as generic terms.

A nurbs curve is defined as follows (surface can be defined similarly in 2 dimensions degree): k, order: k+1, Number of Control Points: n, Knot sequence = t(0), t(1)... t(k)... t(n)... t(n+k+1) Where the knot sequence is non-decreasing which means t(0) <= t(1) <= ..... <= t(n)... <= t(n+k+1)

The above is a general definition for a nurbs curve and IGES standard supports this definition. However in most industrial design systems, people put some constraints on the knot sequence: for a degree k curve, the first k+1 knots and the last k+1 knots are equal, e.g. t(0) = t(1) = ... = t(k) and t(n+1) = t(n+2) =... = t(n+k+1). This ensures the curve passes the start ControlPoint and end ControlPoint which is a nice property to control the final shape of nurbs curve. For now we only support this constrained version of IGES format as we expect most design systems are using this format.

See also:
Primitive::GetGeometry, X3DObject::AddGeometry
Example:
        using namespace XSI;

        Application app;
        Model root = app.GetActiveSceneRoot();

        X3DObject myArc;
        root.AddGeometry( L"Arc", L"NurbsCurve", L"", myArc );

        NurbsCurveList curvelist( myArc.GetActivePrimitive().GetGeometry() );


Constructor & Destructor Documentation

NurbsCurveList (  ) 

Default constructor.

~NurbsCurveList (  ) 

Default destructor.

NurbsCurveList ( const CRef in_ref  ) 

Constructor.

Parameters:
in_ref  constant reference object.

NurbsCurveList ( const NurbsCurveList in_obj  ) 

Copy constructor.

Parameters:
in_obj  constant class object.

NurbsCurveList ( const Geometry in_obj  ) 

Copy constructor.

Parameters:
in_obj  Geometry object.


Member Function Documentation

bool IsA ( siClassID  in_ClassID  )  const [virtual]

Returns true if a given class type is compatible with this API class.

Parameters:
in_ClassID  class type.
Returns:
true if the class is compatible, false otherwise.

Reimplemented from Geometry.

siClassID GetClassID (  )  const [virtual]

Returns the type of the API class.

Returns:
The class type.

Reimplemented from Geometry.

NurbsCurveList& operator= ( const NurbsCurveList in_obj  ) 

Creates an object from another object. The newly created object is set to empty if the input object is not compatible.

Parameters:
in_obj  constant class object.
Returns:
The new NurbsCurveList object.

NurbsCurveList& operator= ( const Geometry in_geom  ) 

Creates a Polygon object from a Geometry object. The newly created object is set to empty if the input Geometry object is not compatible.

Parameters:
in_geom  Source geometry
Returns:
The new NurbsCurveList object.

Reimplemented from Geometry.

NurbsCurveList& operator= ( const CRef in_ref  ) 

Creates an object from a reference object. The newly created object is set to empty if the input reference object is not compatible.

Parameters:
in_ref  constant class object.
Returns:
The new NurbsCurveList object.

Reimplemented from Geometry.

CStatus GetClosed ( bool &  out_bClosed  )  const

Returns true if the curve list is closed or false otherwise.

Return values:
out_bClosed  return true if the curve list is closed or false otherwise.
Returns:
CStatus::OK success

CStatus::Fail other failure

CNurbsCurveRefArray GetCurves (  )  const

Returns an array of all NurbsCurve objects on this NurbsCurveList object.

Returns:
Array of NurbsCurve objects.

CControlPointRefArray GetControlPoints (  )  const

Returns an array of all ControlPoint objects on this NurbsCurveList object.

Returns:
A ControlPoint array.

CStatus GetLength ( double &  out_dLength  )  const

Returns an array of all ControlPoint objects on this NurbsCurveList object. This corresponds to the sum of the length of the NurbsCurve composing this NurbsCurveList.

Return values:
out_dLength  returns the length of the NurbsCurveList
Returns:
CStatus::OK success

CStatus::Fail other failure

CStatus GetClosestCurvePosition ( MATH::CVector3 in_vPosition,
LONG &  out_lCurveIndex,
double &  out_dSquaredDistance,
double &  out_dUValue,
MATH::CVector3 out_vPosition  
) const

Returns the curve index, position of the point on it, U value and distance from the given position.

Parameters:
in_vPosition  A position expressed in the NurbsCurveList object frame of reference.
Return values:
out_lCurveIndex  The curve index to which the position is the closest.
out_dSquaredDistance  The squared distance of the specified position to the curve point.
out_dUValue  The corresponding UValue on the NurbsCurve.
out_vPosition  The actual curve point position at U value.
Returns:
CStatus::OK success

CStatus::Fail other failure

CStatus Get ( siNurbsFormat  in_siNurbsFormat,
CNurbsCurveDataArray out_curves  
) const

Returns a complete data description of this nurbs curve list.

Parameters:
in_siNurbsFormat  Specifies how the data is formatted.
Return values:
out_curves  The entire curve data description.
Returns:
CStatus::OK success

CStatus::Fail other failure

CStatus Set ( const CNurbsCurveDataArray in_curves,
siNurbsFormat  in_siNurbsFormat = siSINurbs  
)

Sets the current NurbsCurveList geometry, from a complete data description of a nurbs curve list. This is only available from compiled operators. If you use it on a object with clusters and you change the topology the burden of updating the clusters is on the user.

Parameters:
in_curves  The data for the new representation of this NurbsCurveList.
in_siNurbsFormat  Specifies how the data is formatted.
Returns:
CStatus::OK success

CStatus::AccessDenied function used outside of a plug-in operator context.

CStatus AddCurve ( const CNurbsCurveData in_curve,
siNurbsFormat  in_siNurbsFormat,
NurbsCurve out_NurbsCurve  
)

Adds a curve to this NurbsCurveList object.

Parameters:
in_curve  The data description for the new NurbsCurve.
in_siNurbsFormat  Specifies how the data is formatted.
Return values:
out_NurbsCurve  The new NurbsCurve.
Returns:
CStatus::OK success

CStatus::AccessDenied function used outside of a plug-in operator context.


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