Go to the documentation of this file.00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSINURBSSURFACE_H__
00018 #define __XSINURBSSURFACE_H__
00019
00020 #include <xsi_facet.h>
00021 #include <xsi_nurbsdata.h>
00022
00023 namespace XSI {
00024
00025 class CKnotArray;
00026 class CControlPointRefArray;
00027 class CNurbsSampleRefArray;
00028
00029
00030
00063
00064
00065 class SICPPSDKDECL NurbsSurface : public Facet
00066 {
00067 public:
00069 NurbsSurface();
00070
00072 ~NurbsSurface();
00073
00077 NurbsSurface(const CRef& in_ref);
00078
00082 NurbsSurface(const NurbsSurface& in_obj);
00083
00088 bool IsA( siClassID in_ClassID) const;
00089
00093 siClassID GetClassID() const;
00094
00100 NurbsSurface& operator=(const NurbsSurface& in_obj);
00101
00107 NurbsSurface& operator=(const CRef& in_ref);
00108
00113 CKnotArray GetKnots
00114 (
00115 siNurbsDirection in_siNurbsDirection
00116 )const;
00117
00121 CControlPointRefArray GetControlPoints()const;
00122
00126 CNurbsSampleRefArray GetNurbsSamples()const;
00127
00134 CStatus Get
00135 (
00136 siNurbsFormat in_siNurbsFormat,
00137 CNurbsSurfaceData& out_surface
00138 )const;
00139
00140
00165 CStatus Set
00166 (
00167 const CNurbsSurfaceData& in_surface,
00168 siNurbsFormat in_siNurbsFormat = siSINurbs
00169 );
00170
00181 CStatus EvaluatePosition
00182 (
00183 double in_dUValue,
00184 double in_dVValue,
00185 MATH::CVector3& out_vPosition,
00186 MATH::CVector3& out_vUTangent,
00187 MATH::CVector3& out_vVTangent,
00188 MATH::CVector3& out_vNormal
00189 )const;
00190
00201 CStatus EvaluateNormalizedPosition
00202 (
00203 double in_dUNormalizedValue,
00204 double in_dVNormalizedValue,
00205 MATH::CVector3& out_vPosition,
00206 MATH::CVector3& out_vUTangent,
00207 MATH::CVector3& out_vVTangent,
00208 MATH::CVector3& out_vNormal
00209 )const;
00210
00219 CStatus GetNormalizedUVFromUV
00220 (
00221 double in_dUValue,
00222 double in_dVValue,
00223 double& out_dNormalizedUValue,
00224 double& out_dNormalizedVValue
00225 )const;
00226
00235 CStatus GetUVFromNormalizedUV
00236 (
00237 double in_dNormalizedUValue,
00238 double in_dNormalizedVValue,
00239 double& out_dUValue,
00240 double& out_dVValue
00241 )const;
00242
00246 LONG GetTrimCount()const;
00247
00256 CStatus GetTrim
00257 (
00258 LONG in_lTrimIndex,
00259 siNurbsFormat in_siNurbsFormat,
00260 CTrimCurveData& out_trimcurve
00261 )const;
00262
00263 private:
00264 NurbsSurface * operator&() const;
00265 NurbsSurface * operator&();
00266 };
00267
00268
00293
00294 class SICPPSDKDECL CNurbsSurfaceRefArray : public CFacetRefArray
00295 {
00296 public:
00297
00298 CNurbsSurfaceRefArray();
00299
00303 CNurbsSurfaceRefArray( const CNurbsSurfaceRefArray& in_array );
00304
00309 CRef GetItem( LONG in_index ) const;
00310
00315 CRef GetItem( const CString& in_name ) const;
00316
00320 LONG GetCount() const;
00321
00325 bool IsValid() const;
00326
00327 private:
00328 void* m_ptr;
00329 };
00330
00331 };
00332
00333 #endif // __XSINURBSSURFACE_H__