X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMDS%2FSMDS_Mesh.hxx;h=612082ce47ea78b9cf49bc4571e89459098be71d;hb=2387bfa403855b82751bf9f122295b1fc6923a18;hp=61507199171cdc53354388d9a399670cac269fc8;hpb=c3bf92bd87b770fd81631a3853f7f5bb1ac6a4e8;p=modules%2Fsmesh.git diff --git a/src/SMDS/SMDS_Mesh.hxx b/src/SMDS/SMDS_Mesh.hxx index 615071991..612082ce4 100644 --- a/src/SMDS/SMDS_Mesh.hxx +++ b/src/SMDS/SMDS_Mesh.hxx @@ -32,14 +32,24 @@ #include "SMDS_MeshFace.hxx" #include "SMDS_MeshVolume.hxx" #include "SMDS_MeshElementIDFactory.hxx" -#include "SMDS_Iterator.hxx" +#include "SMDS_ElemIterator.hxx" +#include + +//#ifdef WNT +//#include +//#else +//#define SALOME_WNT_EXPORT +//#endif +#if defined WNT && defined WIN32 && defined SMDS_EXPORTS +#define SMDS_WNT_EXPORT __declspec( dllexport ) +#else +#define SMDS_WNT_EXPORT +#endif #include #include #include -class SMDSControl_BoundaryEdges; - typedef SMDS_Iterator SMDS_NodeIterator; typedef boost::shared_ptr > SMDS_NodeIteratorPtr; typedef SMDS_Iterator SMDS_EdgeIterator; @@ -49,7 +59,7 @@ typedef boost::shared_ptr > SMDS_FaceIterat typedef SMDS_Iterator SMDS_VolumeIterator; typedef boost::shared_ptr > SMDS_VolumeIteratorPtr; -class SMDS_Mesh:public SMDS_MeshObject{ +class SMDS_WNT_EXPORT SMDS_Mesh:public SMDS_MeshObject{ public: SMDS_Mesh(); @@ -58,7 +68,10 @@ public: SMDS_EdgeIteratorPtr edgesIterator() const; SMDS_FaceIteratorPtr facesIterator() const; SMDS_VolumeIteratorPtr volumesIterator() const; + SMDS_ElemIteratorPtr elementsIterator() const; + SMDSAbs_ElementType GetElementType( const int id, const bool iselem ) const; + SMDS_Mesh *AddSubMesh(); virtual SMDS_MeshNode* AddNodeWithID(double x, double y, double z, int ID); @@ -201,11 +214,33 @@ public: const SMDS_MeshFace * f5, const SMDS_MeshFace * f6); + virtual SMDS_MeshFace* AddPolygonalFaceWithID (std::vector nodes_ids, + const int ID); + + virtual SMDS_MeshFace* AddPolygonalFaceWithID (std::vector nodes, + const int ID); + + virtual SMDS_MeshFace* AddPolygonalFace (std::vector nodes); + + virtual SMDS_MeshVolume* AddPolyhedralVolumeWithID + (std::vector nodes_ids, + std::vector quantities, + const int ID); + + virtual SMDS_MeshVolume* AddPolyhedralVolumeWithID + (std::vector nodes, + std::vector quantities, + const int ID); + + virtual SMDS_MeshVolume* AddPolyhedralVolume + (std::vector nodes, + std::vector quantities); + virtual void RemoveElement(const SMDS_MeshElement * elem, - list& removedElems, - list& removedNodes, + std::list& removedElems, + std::list& removedNodes, const bool removenodes = false); - virtual void RemoveElement(const SMDS_MeshElement * elem, const bool removenodes = false); + virtual void RemoveElement(const SMDS_MeshElement * elem, bool removenodes = false); virtual void RemoveNode(const SMDS_MeshNode * node); virtual void RemoveEdge(const SMDS_MeshEdge * edge); virtual void RemoveFace(const SMDS_MeshFace * face); @@ -213,13 +248,41 @@ public: virtual bool RemoveFromParent(); virtual bool RemoveSubMesh(const SMDS_Mesh * aMesh); - + + static bool ChangeElementNodes(const SMDS_MeshElement * elem, + const SMDS_MeshNode * nodes[], + const int nbnodes); + static bool ChangePolyhedronNodes(const SMDS_MeshElement * elem, + std::vector nodes, + std::vector quantities); + + virtual void Renumber (const bool isNodes, const int startID = 1, const int deltaID = 1); + // Renumber all nodes or elements. + const SMDS_MeshNode *FindNode(int idnode) const; const SMDS_MeshEdge *FindEdge(int idnode1, int idnode2) const; const SMDS_MeshFace *FindFace(int idnode1, int idnode2, int idnode3) const; const SMDS_MeshFace *FindFace(int idnode1, int idnode2, int idnode3, int idnode4) const; const SMDS_MeshElement *FindElement(int IDelem) const; - + static const SMDS_MeshEdge* FindEdge(const SMDS_MeshNode * n1, + const SMDS_MeshNode * n2); + static const SMDS_MeshFace* FindFace(const SMDS_MeshNode *n1, + const SMDS_MeshNode *n2, + const SMDS_MeshNode *n3); + static const SMDS_MeshFace* FindFace(const SMDS_MeshNode *n1, + const SMDS_MeshNode *n2, + const SMDS_MeshNode *n3, + const SMDS_MeshNode *n4); + + const SMDS_MeshFace *FindFace(std::vector nodes_ids) const; + static const SMDS_MeshFace* FindFace(std::vector nodes); + + int MaxNodeID() const; + int MinNodeID() const; + int MaxElementID() const; + int MinElementID() const; + + int NbNodes() const; int NbEdges() const; int NbFaces() const; @@ -248,10 +311,10 @@ public: */ bool Contains (const SMDS_MeshElement* elem) const; - typedef set SetOfNodes; - typedef set SetOfEdges; - typedef set SetOfFaces; - typedef set SetOfVolumes; + typedef NCollection_Map SetOfNodes; + typedef NCollection_Map SetOfEdges; + typedef NCollection_Map SetOfFaces; + typedef NCollection_Map SetOfVolumes; private: SMDS_Mesh(SMDS_Mesh * parent); @@ -259,41 +322,25 @@ private: SMDS_MeshFace * createTriangle(const SMDS_MeshNode * node1, const SMDS_MeshNode * node2, const SMDS_MeshNode * node3); - SMDS_MeshFace * createQuadrangle(const SMDS_MeshNode * node1, const SMDS_MeshNode * node2, const SMDS_MeshNode * node3, const SMDS_MeshNode * node4); - - bool registerElement(int ID, SMDS_MeshElement * element); - - const SMDS_MeshEdge* FindEdge(const SMDS_MeshNode * n1, - const SMDS_MeshNode * n2) const; - SMDS_MeshEdge* FindEdgeOrCreate(const SMDS_MeshNode * n1, const SMDS_MeshNode * n2); - - const SMDS_MeshFace* FindFace(const SMDS_MeshNode *n1, - const SMDS_MeshNode *n2, - const SMDS_MeshNode *n3) const; - SMDS_MeshFace* FindFaceOrCreate(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3); - - const SMDS_MeshFace* FindFace(const SMDS_MeshNode *n1, - const SMDS_MeshNode *n2, - const SMDS_MeshNode *n3, - const SMDS_MeshNode *n4) const; - SMDS_MeshFace* FindFaceOrCreate(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4); - void addChildrenWithNodes(set& setOfChildren, + bool registerElement(int ID, SMDS_MeshElement * element); + + void addChildrenWithNodes(std::set& setOfChildren, const SMDS_MeshElement * element, - set& nodes); + std::set& nodes); // Fields PRIVATE @@ -302,7 +349,7 @@ private: SetOfFaces myFaces; SetOfVolumes myVolumes; SMDS_Mesh *myParent; - list myChildren; + std::list myChildren; SMDS_MeshElementIDFactory *myNodeIDFactory; SMDS_MeshElementIDFactory *myElementIDFactory; @@ -311,4 +358,5 @@ private: bool myHasInverseElements; }; + #endif