-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 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
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopoDS_Shape.hxx>
+#include <map>
+
class TopoDS_Solid ;
class TopoDS_Shell ;
class TopoDS_Face ;
class SMDS_Mesh0DElement;
class SMDS_BallElement;
-#include <NCollection_DataMap.hxx>
-#include <map>
/*
* Using of native hash_map isn't portable and don't work on WIN32 platform.
* So this functionality implement on new NCollection_DataMap technology
*/
+#include <NCollection_DataMap.hxx>
#include "SMESHDS_DataMapOfShape.hxx"
+typedef std::list<const SMESHDS_Hypothesis*> THypList;
+typedef NCollection_DataMap< TopoDS_Shape, THypList, SMESHDS_Hasher > ShapeToHypothesis;
class SMESHDS_GroupBase;
class DownIdType;
virtual SMDS_MeshFace* AddPolygonalFace (const std::vector<const SMDS_MeshNode*>& nodes);
+ virtual SMDS_MeshFace* AddQuadPolygonalFaceWithID(const std::vector<int> & nodes_ids,
+ const int ID);
+
+ virtual SMDS_MeshFace* AddQuadPolygonalFaceWithID(const std::vector<const SMDS_MeshNode*> & nodes,
+ const int ID);
+
+ virtual SMDS_MeshFace* AddQuadPolygonalFace(const std::vector<const SMDS_MeshNode*> & nodes);
+
virtual SMDS_MeshVolume* AddPolyhedralVolumeWithID
(const std::vector<int>& nodes_ids,
const std::vector<int>& quantities,
SMESHDS_SubMesh * MeshElements(const TopoDS_Shape & S) const;
SMESHDS_SubMesh * MeshElements(const int Index) const;
std::list<int> SubMeshIndices() const;
- const std::map<int,SMESHDS_SubMesh*>& SubMeshes() const
- { return myShapeIndexToSubMesh; }
- const TopoDS_Shape& GetCurrentSubShape() const { return myCurSubShape; }
+ SMESHDS_SubMeshIteratorPtr SubMeshes() const;
bool HasHypothesis(const TopoDS_Shape & S);
const std::list<const SMESHDS_Hypothesis*>& GetHypothesis(const TopoDS_Shape & S) const;
bool IsUsedHypothesis(const SMESHDS_Hypothesis * H) const;
+ const ShapeToHypothesis & GetHypotheses() const { return myShapeToHypothesis; }
+
SMESHDS_Script * GetScript();
void ClearScript();
+
int ShapeToIndex(const TopoDS_Shape & aShape) const;
const TopoDS_Shape& IndexToShape(int ShapeIndex) const;
int MaxShapeIndex() const { return myIndexToShape.Extent(); }
~SMESHDS_Mesh();
private:
- void addNodeToSubmesh( const SMDS_MeshNode* aNode, int Index )
- {
- //Update or build submesh
- std::map<int,SMESHDS_SubMesh*>::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
- }
-
- typedef std::list<const SMESHDS_Hypothesis*> THypList;
-
- typedef NCollection_DataMap< TopoDS_Shape, THypList, SMESHDS_Hasher > ShapeToHypothesis;
ShapeToHypothesis myShapeToHypothesis;
int myMeshID, myPersistentID;
TopoDS_Shape myShape;
- typedef std::map<int,SMESHDS_SubMesh*> TShapeIndexToSubMesh;
- TShapeIndexToSubMesh myShapeIndexToSubMesh;
+ class SubMeshHolder;
+ SubMeshHolder* mySubMeshHolder;
TopTools_IndexedMapOfShape myIndexToShape;
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;
};