00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSINURBSCURVELIST_H__
00018 #define __XSINURBSCURVELIST_H__
00019
00020 #include <xsi_geometry.h>
00021 #include <xsi_nurbsdata.h>
00022
00023 namespace XSI {
00024
00025 class CControlPointRefArray;
00026 class CNurbsCurveRefArray;
00027 class NurbsCurve;
00028 class CKnotArray;
00029
00030
00065
00066
00067 class SICPPSDKDECL NurbsCurveList : public Geometry
00068 {
00069 public:
00071 NurbsCurveList();
00072
00074 ~NurbsCurveList();
00075
00079 NurbsCurveList(const CRef& in_ref);
00080
00084 NurbsCurveList(const NurbsCurveList& in_obj);
00085
00089 NurbsCurveList(const Geometry& in_obj);
00090
00095 bool IsA( siClassID in_ClassID) const;
00096
00100 siClassID GetClassID() const;
00101
00107 NurbsCurveList& operator=(const NurbsCurveList& in_obj);
00108
00114 NurbsCurveList& operator=(const Geometry& in_geom);
00115
00121 NurbsCurveList& operator=(const CRef& in_ref);
00122
00128 CStatus GetClosed(bool& out_bClosed) const;
00129
00133 CNurbsCurveRefArray GetCurves()const;
00134
00138 CControlPointRefArray GetControlPoints()const;
00139
00146 CStatus GetLength(double& out_dLength)const;
00147
00157 CStatus GetClosestCurvePosition
00158 (
00159 MATH::CVector3& in_vPosition,
00160 LONG& out_lCurveIndex,
00161 double& out_dSquaredDistance,
00162 double& out_dUValue,
00163 MATH::CVector3& out_vPosition
00164 )const;
00165
00172 CStatus Get
00173 (
00174 siNurbsFormat in_siNurbsFormat,
00175 CNurbsCurveDataArray& out_curves
00176 )const;
00177
00186 CStatus Set
00187 (
00188 const CNurbsCurveDataArray& in_curves,
00189 siNurbsFormat in_siNurbsFormat = siSINurbs
00190 );
00191
00199 CStatus AddCurve
00200 (
00201 const CNurbsCurveData& in_curve,
00202 siNurbsFormat in_siNurbsFormat,
00203 NurbsCurve& out_NurbsCurve
00204 );
00205
00206 private:
00207 NurbsCurveList * operator&() const;
00208 NurbsCurveList * operator&();
00209 };
00210
00211 };
00212
00213 #endif // __XSINURBSCURVELIST_H__