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__