X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_Mesh.hxx;h=6ec2d3d9cabf5c1438c63fbcf0cb005cbcb8a79c;hp=8b8fc0a55b0ef5f9d4f93240732a14c802ed22a4;hb=193c49c87753b6ccabb2b5e6dc935aa480d2d43e;hpb=be0348c630bec8c50d15094deeec95f5cc2d7a8b diff --git a/src/SMESHDS/SMESHDS_Mesh.hxx b/src/SMESHDS/SMESHDS_Mesh.hxx index 8b8fc0a55..6ec2d3d9c 100644 --- a/src/SMESHDS/SMESHDS_Mesh.hxx +++ b/src/SMESHDS/SMESHDS_Mesh.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -35,6 +35,8 @@ #include #include +#include + class TopoDS_Solid ; class TopoDS_Shell ; class TopoDS_Face ; @@ -50,8 +52,6 @@ class SMDS_MeshVolume ; class SMDS_Mesh0DElement; class SMDS_BallElement; -#include - /* * Using of native hash_map isn't portable and don't work on WIN32 platform. * So this functionality implement on new NCollection_DataMap technology @@ -511,6 +511,14 @@ public: virtual SMDS_MeshFace* AddPolygonalFace (const std::vector& nodes); + virtual SMDS_MeshFace* AddQuadPolygonalFaceWithID(const std::vector & nodes_ids, + const int ID); + + virtual SMDS_MeshFace* AddQuadPolygonalFaceWithID(const std::vector & nodes, + const int ID); + + virtual SMDS_MeshFace* AddQuadPolygonalFace(const std::vector & nodes); + virtual SMDS_MeshVolume* AddPolyhedralVolumeWithID (const std::vector& nodes_ids, const std::vector& quantities, @@ -566,9 +574,7 @@ public: SMESHDS_SubMesh * MeshElements(const TopoDS_Shape & S) const; SMESHDS_SubMesh * MeshElements(const int Index) const; std::list SubMeshIndices() const; - const std::map& SubMeshes() const - { return myShapeIndexToSubMesh; } - const TopoDS_Shape& GetCurrentSubShape() const { return myCurSubShape; } + SMESHDS_SubMeshIteratorPtr SubMeshes() const; bool HasHypothesis(const TopoDS_Shape & S); const std::list& GetHypothesis(const TopoDS_Shape & S) const; @@ -601,22 +607,14 @@ public: ~SMESHDS_Mesh(); private: - void addNodeToSubmesh( const SMDS_MeshNode* aNode, int Index ) - { - //Update or build submesh - std::map::iterator it = myShapeIndexToSubMesh.find( Index ); - if ( it == myShapeIndexToSubMesh.end() ) - it = myShapeIndexToSubMesh.insert( std::make_pair(Index, new SMESHDS_SubMesh(this, Index) )).first; - it->second->AddNode( aNode ); // add aNode to submesh - } - + ShapeToHypothesis myShapeToHypothesis; int myMeshID, myPersistentID; TopoDS_Shape myShape; - typedef std::map TShapeIndexToSubMesh; - TShapeIndexToSubMesh myShapeIndexToSubMesh; + class SubMeshHolder; + SubMeshHolder* mySubMeshHolder; TopTools_IndexedMapOfShape myIndexToShape; @@ -626,14 +624,8 @@ private: SMESHDS_Script* myScript; bool myIsEmbeddedMode; - // optimize addition of nodes/elements to submeshes by, SetNodeInVolume() etc: - // avoid search of submeshes in maps bool add( const SMDS_MeshElement* elem, SMESHDS_SubMesh* subMesh ); SMESHDS_SubMesh* getSubmesh( const TopoDS_Shape & shape); - SMESHDS_SubMesh* getSubmesh( const int Index ); - int myCurSubID; - TopoDS_Shape myCurSubShape; - SMESHDS_SubMesh* myCurSubMesh; };