X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_Mesh.hxx;h=a5a54907b5855004ce5d61545f54cc4809ecebd5;hp=fdf90a30b400efc9238ac50e352d69dc58f7744b;hb=e83db15137230fbe580ba47c5d9f28aacb2aca9e;hpb=42c7eb97f9ec27537b638c98ef69dc55f19fa1cd diff --git a/src/SMESHDS/SMESHDS_Mesh.hxx b/src/SMESHDS/SMESHDS_Mesh.hxx index fdf90a30b..a5a54907b 100644 --- a/src/SMESHDS/SMESHDS_Mesh.hxx +++ b/src/SMESHDS/SMESHDS_Mesh.hxx @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -52,21 +53,30 @@ #if __GNUC__ < 3 #include namespace gstd { using ::hash_map; }; // inherit globals - #else + #elif __GNUC__ == 3 #include #if __GNUC_MINOR__ == 0 namespace gstd = std; // GCC 3.0 #else namespace gstd = ::__gnu_cxx; // GCC 3.1 and later #endif + #else // GCC 4.0 and later + #include + namespace gstd = ::__gnu_cxx; #endif #else // ... there are other compilers, right? namespace gstd = std; #endif +#if defined WNT && defined WIN32 && defined SMESHDS_EXPORTS +#define SMESHDS_WNT_EXPORT __declspec( dllexport ) +#else +#define SMESHDS_WNT_EXPORT +#endif + class SMESHDS_GroupBase; -class SMESHDS_Mesh:public SMDS_Mesh{ +class SMESHDS_WNT_EXPORT SMESHDS_Mesh:public SMDS_Mesh{ public: SMESHDS_Mesh(int MeshID); void ShapeToMesh(const TopoDS_Shape & S); @@ -197,8 +207,9 @@ public: void Renumber (const bool isNodes, const int startID=1, const int deltaID=1); void SetNodeInVolume(SMDS_MeshNode * aNode, const TopoDS_Shell & S); - void SetNodeOnFace(SMDS_MeshNode * aNode, const TopoDS_Face & S); - void SetNodeOnEdge(SMDS_MeshNode * aNode, const TopoDS_Edge & S); + void SetNodeInVolume(SMDS_MeshNode * aNode, const TopoDS_Solid & S); + void SetNodeOnFace(SMDS_MeshNode * aNode, const TopoDS_Face & S, double u=0., double v=0.); + void SetNodeOnEdge(SMDS_MeshNode * aNode, const TopoDS_Edge & S, double u=0.); void SetNodeOnVertex(SMDS_MeshNode * aNode, const TopoDS_Vertex & S); void UnSetNodeOnShape(const SMDS_MeshNode * aNode); void SetMeshElementOnShape(const SMDS_MeshElement * anElt, @@ -223,8 +234,8 @@ public: SMESHDS_SubMesh * NewSubMesh(int Index); int AddCompoundSubmesh(const TopoDS_Shape& S, TopAbs_ShapeEnum type = TopAbs_SHAPE); void SetNodeInVolume(const SMDS_MeshNode * aNode, int Index); - void SetNodeOnFace(SMDS_MeshNode * aNode, int Index); - void SetNodeOnEdge(SMDS_MeshNode * aNode, int Index); + void SetNodeOnFace(SMDS_MeshNode * aNode, int Index , double u=0., double v=0.); + void SetNodeOnEdge(SMDS_MeshNode * aNode, int Index , double u=0.); void SetNodeOnVertex(SMDS_MeshNode * aNode, int Index); void SetMeshElementOnShape(const SMDS_MeshElement * anElt, int Index); @@ -263,6 +274,15 @@ private: #endif + void addNodeToSubmesh( const SMDS_MeshNode* aNode, int Index ) + { + //Update or build submesh + map::iterator it = myShapeIndexToSubMesh.find( Index ); + if ( it == myShapeIndexToSubMesh.end() ) + it = myShapeIndexToSubMesh.insert( make_pair(Index, new SMESHDS_SubMesh() )).first; + it->second->AddNode( aNode ); // add aNode to submesh + } + typedef std::list THypList; #ifndef WNT