00001 //***************************************************************************** 00011 //***************************************************************************** 00012 00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER) 00014 #pragma once 00015 #endif 00016 00017 #ifndef __XSIPOLYGONFACE_H__ 00018 #define __XSIPOLYGONFACE_H__ 00019 00020 #include <xsi_facet.h> 00021 #include <xsi_longarray.h> 00022 #include <xsi_pointlocatordata.h> 00023 00024 namespace XSI { 00025 00026 class CPolygonNodeRefArray; 00027 class CVertexRefArray; 00028 class CEdgeRefArray; 00029 class CPolygonFaceRefArray; 00030 00031 //***************************************************************************** 00051 //***************************************************************************** 00052 00053 class SICPPSDKDECL PolygonFace : public Facet 00054 { 00055 public: 00057 PolygonFace(); 00058 00060 ~PolygonFace(); 00061 00065 PolygonFace(const CRef& in_ref); 00066 00070 PolygonFace(const PolygonFace& in_obj); 00071 00076 bool IsA( siClassID in_ClassID) const; 00077 00081 siClassID GetClassID() const; 00082 00088 PolygonFace& operator=(const PolygonFace& in_obj); 00089 00095 PolygonFace& operator=(const CRef& in_ref); 00096 00100 CPolygonNodeRefArray GetNodes() const; 00101 00105 CVertexRefArray GetVertices() const; 00106 00110 CEdgeRefArray GetEdges() const; 00111 00122 CVertexRefArray GetNeighborVertices(LONG in_lDistance = 1) const; 00123 00134 CEdgeRefArray GetNeighborEdges(LONG in_lDistance = 1) const; 00135 00146 CPolygonFaceRefArray GetNeighborPolygons(LONG in_lDistance = 1) const; 00147 00157 CPolygonFaceRefArray GrowNeighborPolygons(LONG in_lDistance = 1) const; 00158 00215 CLongArray GetTriangleSubIndexArray() const; 00216 00222 ULONG GetTurnInternalEdgeOffset() const; 00223 00224 private: 00225 PolygonFace * operator&() const; 00226 PolygonFace * operator&(); 00227 }; 00228 00229 //***************************************************************************** 00268 //***************************************************************************** 00269 class SICPPSDKDECL CPolygonFaceRefArray : public CFacetRefArray 00270 { 00271 public: 00272 CPolygonFaceRefArray(); 00273 00277 CPolygonFaceRefArray( const CPolygonFaceRefArray& in_array ); 00278 00283 CRef GetItem( LONG in_index ) const; 00284 00289 CRef GetItem( const CString& in_name ) const; 00290 00294 LONG GetCount() const; 00295 00299 bool IsValid() const; 00300 00304 MATH::CVector3Array GetNormalArray() const; 00305 00312 CVertexRefArray GetNeighborVertices(LONG in_lDistance = 1) const; 00313 00320 CEdgeRefArray GetNeighborEdges(LONG in_lDistance = 1) const; 00321 00328 CPolygonFaceRefArray GetNeighborPolygons(LONG in_lDistance = 1) const; 00329 00337 CPolygonFaceRefArray GrowNeighborPolygons(LONG in_lDistance = 1) const; 00338 00343 MATH::CVector3Array GetPolygonNodeNormalArray() const; 00344 00352 CLongArray GetPolygonNodePolygonFaceIndexArray() const; 00353 }; 00354 00355 }; 00356 00357 #endif // __XSIPOLYGONFACE_H__