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 __XSINURBSSURFACEMESH_H__
00018 #define __XSINURBSSURFACEMESH_H__
00019
00020 #include <xsi_geometry.h>
00021 #include <xsi_nurbsdata.h>
00022 #include <xsi_pointlocatordata.h>
00023
00024 namespace XSI {
00025
00026 class CControlPointRefArray;
00027 class CNurbsSurfaceRefArray;
00028 class CKnotArray;
00029 class CTrimDataArray;
00030 class NurbsSurface;
00031
00032
00056
00057
00058 class SICPPSDKDECL NurbsSurfaceMesh : public Geometry
00059 {
00060 public:
00062 NurbsSurfaceMesh();
00063
00065 ~NurbsSurfaceMesh();
00066
00070 NurbsSurfaceMesh(const CRef& in_ref);
00071
00075 NurbsSurfaceMesh(const NurbsSurfaceMesh& in_obj);
00076
00080 NurbsSurfaceMesh(const Geometry& in_obj);
00081
00086 bool IsA( siClassID in_ClassID) const;
00087
00091 siClassID GetClassID() const;
00092
00098 NurbsSurfaceMesh& operator=(const NurbsSurfaceMesh& in_obj);
00099
00105 NurbsSurfaceMesh& operator=(const Geometry& in_geom);
00106
00112 NurbsSurfaceMesh& operator=(const CRef& in_ref);
00113
00117 CNurbsSurfaceRefArray GetSurfaces()const;
00118
00130 CStatus GetClosestSurfacePosition
00131 (
00132 MATH::CVector3& in_vPosition,
00133 LONG& out_lSurfaceIndex,
00134 double& out_dSquaredDistance,
00135 double& out_dUValue,
00136 double& out_dVValue,
00137 MATH::CVector3& out_vPosition
00138 )const;
00139
00140
00147 CStatus Get
00148 (
00149 siNurbsFormat in_siNurbsFormat,
00150 CNurbsSurfaceDataArray& out_surfaces
00151 )const;
00152
00165 CStatus Set
00166 (
00167 const CNurbsSurfaceDataArray& in_surfaces,
00168 siNurbsFormat in_siNurbsFormat = siSINurbs
00169 );
00170
00171
00181 CStatus AddSurfaceWithTrim
00182 (
00183 const CNurbsSurfaceData& in_surface,
00184 const CTrimCurveDataArray& in_trims,
00185 siNurbsFormat in_siNurbsFormat,
00186 NurbsSurface& out_Surface
00187 );
00188
00196 CStatus AddSurface
00197 (
00198 const CNurbsSurfaceData& in_surface,
00199 siNurbsFormat in_siNurbsFormat,
00200 NurbsSurface& out_Surface
00201 );
00202
00262 CStatus GetSubSurfaceIndexArray
00263 (
00264 const PointLocatorData& in_ptLocators,
00265 LONG in_nbPointLocatorsIndices,
00266 const LONG* in_pPointLocatorsIndices,
00267 LONG* out_pIndices
00268 ) const;
00269
00365 CStatus GetNormalizedUVArray
00366 (
00367 const PointLocatorData& in_ptLocators,
00368 LONG in_nbPointLocatorsIndices,
00369 const LONG* in_pPointLocatorsIndices,
00370 float* out_pNormalizedUVs
00371 ) const;
00372
00390 PointLocatorData ConstructPointLocators
00391 (
00392 LONG in_nbPointLocators,
00393 const LONG* in_pSubSurfaceIndices,
00394 const float* in_pNormalizedUVs
00395 ) const;
00396
00397 private:
00398 NurbsSurfaceMesh * operator&() const;
00399 NurbsSurfaceMesh * operator&();
00400 };
00401
00402 };
00403
00404 #endif // __XSINURBSSURFACEMESH_H__