Public Member Functions
NurbsCurveList Class Reference

## 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() );

`#include <xsi_nurbscurvelist.h>`

Inheritance diagram for NurbsCurveList:
[legend]

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)

## 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:

- xsi_nurbscurvelist.h