26 #ifndef _SMESHDS_Mesh_HeaderFile
27 #define _SMESHDS_Mesh_HeaderFile
41 #include <TopTools_IndexedMapOfShape.hxx>
42 #include <TopoDS_Shape.hxx>
43 #include <TopoDS_Solid.hxx>
44 #include <TopoDS_Shell.hxx>
45 #include <TopoDS_Face.hxx>
46 #include <TopoDS_Vertex.hxx>
47 #include <TopoDS_Edge.hxx>
49 #include <NCollection_DataMap.hxx>
115 int n12,
int n23,
int n31,
int ID);
132 int n12,
int n23,
int n34,
int n41,
int ID);
211 int n12,
int n23,
int n31,
212 int n14,
int n24,
int n34,
int ID);
237 int n12,
int n23,
int n34,
int n41,
238 int n15,
int n25,
int n35,
int n45,
270 int n4,
int n5,
int n6,
271 int n12,
int n23,
int n31,
272 int n45,
int n56,
int n64,
273 int n14,
int n25,
int n36,
309 int n5,
int n6,
int n7,
int n8,
310 int n12,
int n23,
int n34,
int n41,
311 int n56,
int n67,
int n78,
int n85,
312 int n15,
int n26,
int n37,
int n48,
365 (std::vector<int> nodes_ids,
366 std::vector<int> quantities,
370 (std::vector<const SMDS_MeshNode*> nodes,
371 std::vector<int> quantities,
375 (std::vector<const SMDS_MeshNode*> nodes,
376 std::vector<int> quantities);
395 std::vector<const SMDS_MeshNode*> nodes);
397 std::vector<const SMDS_MeshNode*> nodes,
398 std::vector<int> quantities);
399 void Renumber (
const bool isNodes,
const int startID=1,
const int deltaID=1);
408 const TopoDS_Shape & S);
410 const TopoDS_Shape & S);
416 {
return myShapeIndexToSubMesh; }
419 const std::list<const SMESHDS_Hypothesis*>&
GetHypothesis(
const TopoDS_Shape & S)
const;
437 const std::set<SMESHDS_GroupBase*>&
GetGroups()
const {
return myGroups; }
447 std::map<int,SMESHDS_SubMesh*>::iterator it = myShapeIndexToSubMesh.find( Index );
448 if ( it == myShapeIndexToSubMesh.end() )
449 it = myShapeIndexToSubMesh.insert( std::make_pair(Index,
new SMESHDS_SubMesh() )).first;
450 it->second->AddNode( aNode );
458 typedef std::list<const SMESHDS_Hypothesis*>
THypList;
virtual SMDS_MeshEdge * AddEdge(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n12)
TShapeIndexToSubMesh myShapeIndexToSubMesh
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n12, int n23, int n31, int n14, int n24, int n34, int ID)
void UnSetNodeOnShape(const SMDS_MeshNode *aNode)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4)
std::map< int, SMESHDS_SubMesh * > TShapeIndexToSubMesh
virtual SMDS_MeshFace * AddFaceWithID(int n1, int n2, int n3, int n4, int ID)
void SetNodeInVolume(SMDS_MeshNode *aNode, const TopoDS_Solid &S)
ShapeToHypothesis myShapeToHypothesis
void RemoveGroup(SMESHDS_GroupBase *theGroup)
virtual SMDS_MeshFace * AddFace(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n31)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n6, int n12, int n23, int n31, int n45, int n56, int n64, int n14, int n25, int n36, int ID)
std::set< SMESHDS_GroupBase * > TGroups
virtual SMDS_MeshFace * AddFaceWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, int ID)
virtual SMDS_MeshNode * AddNode(double x, double y, double z)
SMESHDS_Script * GetScript()
virtual SMDS_MeshFace * AddFace(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n34, const SMDS_MeshNode *n41, const SMDS_MeshNode *n15, const SMDS_MeshNode *n25, const SMDS_MeshNode *n35, const SMDS_MeshNode *n45)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, int ID)
bool HasMeshElements(const TopoDS_Shape &S)
void SetNodeOnFace(SMDS_MeshNode *aNode, int Index, double u=0., double v=0.)
void MoveNode(const SMDS_MeshNode *, double x, double y, double z)
virtual SMDS_MeshEdge * AddEdgeWithID(int n1, int n2, int n12, int ID)
SMESHDS_SubMesh * getSubmesh(const TopoDS_Shape &shape)
bool IsGroupOfSubShapes(const TopoDS_Shape &aSubShape) const
virtual SMDS_MeshEdge * AddEdgeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n12, int ID)
SMESHDS_SubMesh * MeshElements(const int Index)
virtual SMDS_MeshFace * AddFaceWithID(int n1, int n2, int n3, int n4, int n12, int n23, int n34, int n41, int ID)
SMESHDS_Mesh(int theMeshID, bool theIsEmbeddedMode)
virtual SMDS_MeshFace * AddFace(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n34, const SMDS_MeshNode *n41)
void RemoveFreeNode(const SMDS_MeshNode *, SMESHDS_SubMesh *, bool fromGroups=true)
virtual SMDS_MeshVolume * AddPolyhedralVolume(std::vector< const SMDS_MeshNode * > nodes, std::vector< int > quantities)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n12, int n23, int n34, int n41, int n56, int n67, int n78, int n85, int n15, int n26, int n37, int n48, int ID)
void SetMeshElementOnShape(const SMDS_MeshElement *anElt, int Index)
void SetNodeInVolume(SMDS_MeshNode *aNode, const TopoDS_Shell &S)
virtual SMDS_MeshFace * AddFaceWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n31, int ID)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, const SMDS_MeshNode *n7, const SMDS_MeshNode *n8, int ID)
void SetNodeOnVertex(SMDS_MeshNode *aNode, const TopoDS_Vertex &S)
virtual SMDS_MeshFace * AddPolygonalFaceWithID(std::vector< const SMDS_MeshNode * > nodes, const int ID)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n31, const SMDS_MeshNode *n45, const SMDS_MeshNode *n56, const SMDS_MeshNode *n64, const SMDS_MeshNode *n14, const SMDS_MeshNode *n25, const SMDS_MeshNode *n36)
SMESHDS_SubMesh * NewSubMesh(int Index)
void SetNodeOnEdge(SMDS_MeshNode *aNode, const TopoDS_Edge &S, double u=0.)
void RemoveElement(const SMDS_MeshElement *)
SMESHDS_SubMesh * myCurSubMesh
bool add(const SMDS_MeshElement *elem, SMESHDS_SubMesh *subMesh)
std::list< const SMESHDS_Hypothesis * > THypList
const TopoDS_Shape & IndexToShape(int ShapeIndex) const
virtual SMDS_MeshFace * AddFaceWithID(int n1, int n2, int n3, int n12, int n23, int n31, int ID)
bool ChangePolygonNodes(const SMDS_MeshElement *elem, std::vector< const SMDS_MeshNode * > nodes)
TopoDS_Shape myCurSubShape
void addNodeToSubmesh(const SMDS_MeshNode *aNode, int Index)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n34, const SMDS_MeshNode *n41, const SMDS_MeshNode *n15, const SMDS_MeshNode *n25, const SMDS_MeshNode *n35, const SMDS_MeshNode *n45, int ID)
bool ChangeElementNodes(const SMDS_MeshElement *elem, const SMDS_MeshNode *nodes[], const int nbnodes)
virtual SMDS_MeshVolume * AddPolyhedralVolumeWithID(std::vector< const SMDS_MeshNode * > nodes, std::vector< int > quantities, const int ID)
virtual SMDS_MeshFace * AddPolygonalFaceWithID(std::vector< int > nodes_ids, const int ID)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int ID)
void SetNodeOnFace(SMDS_MeshNode *aNode, const TopoDS_Face &S, double u=0., double v=0.)
virtual SMDS_MeshFace * AddFaceWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n34, const SMDS_MeshNode *n41, int ID)
virtual SMDS_MeshVolume * AddPolyhedralVolumeWithID(std::vector< int > nodes_ids, std::vector< int > quantities, const int ID)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, int ID)
bool RemoveHypothesis(const TopoDS_Shape &S, const SMESHDS_Hypothesis *H)
void Renumber(const bool isNodes, const int startID=1, const int deltaID=1)
virtual SMDS_MeshFace * AddFaceWithID(int n1, int n2, int n3, int ID)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int ID)
virtual SMDS_MeshEdge * AddEdge(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2)
const std::map< int, SMESHDS_SubMesh * > & SubMeshes() const
bool HasHypothesis(const TopoDS_Shape &S)
const std::set< SMESHDS_GroupBase * > & GetGroups() const
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n6, int ID)
SMESHDS_SubMesh * MeshElements(const TopoDS_Shape &S) const
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n31, const SMDS_MeshNode *n45, const SMDS_MeshNode *n56, const SMDS_MeshNode *n64, const SMDS_MeshNode *n14, const SMDS_MeshNode *n25, const SMDS_MeshNode *n36, int ID)
virtual SMDS_MeshEdge * AddEdgeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, int ID)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5)
void SetNodeInVolume(const SMDS_MeshNode *aNode, int Index)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int ID)
int MaxShapeIndex() const
virtual SMDS_MeshNode * AddNodeWithID(double x, double y, double z, int ID)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, const SMDS_MeshNode *n7, const SMDS_MeshNode *n8, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n34, const SMDS_MeshNode *n41, const SMDS_MeshNode *n56, const SMDS_MeshNode *n67, const SMDS_MeshNode *n78, const SMDS_MeshNode *n85, const SMDS_MeshNode *n15, const SMDS_MeshNode *n26, const SMDS_MeshNode *n37, const SMDS_MeshNode *n48)
std::list< int > SubMeshIndices()
TopoDS_Shape ShapeToMesh() const
bool ChangePolyhedronNodes(const SMDS_MeshElement *elem, std::vector< const SMDS_MeshNode * > nodes, std::vector< int > quantities)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, const SMDS_MeshNode *n7, const SMDS_MeshNode *n8, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n34, const SMDS_MeshNode *n41, const SMDS_MeshNode *n56, const SMDS_MeshNode *n67, const SMDS_MeshNode *n78, const SMDS_MeshNode *n85, const SMDS_MeshNode *n15, const SMDS_MeshNode *n26, const SMDS_MeshNode *n37, const SMDS_MeshNode *n48, int ID)
void UnSetMeshElementOnShape(const SMDS_MeshElement *anElt, const TopoDS_Shape &S)
virtual SMDS_Mesh0DElement * Add0DElement(const SMDS_MeshNode *node)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, int ID)
virtual SMDS_MeshFace * AddPolygonalFace(std::vector< const SMDS_MeshNode * > nodes)
void RemoveFreeElement(const SMDS_MeshElement *, SMESHDS_SubMesh *, bool fromGroups=true)
virtual SMDS_MeshVolume * AddVolumeWithID(int n1, int n2, int n3, int n4, int n5, int n12, int n23, int n34, int n41, int n15, int n25, int n35, int n45, int ID)
virtual SMDS_Mesh0DElement * Add0DElementWithID(int nodeID, int ID)
virtual SMDS_MeshEdge * AddEdgeWithID(int n1, int n2, int ID)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n31, const SMDS_MeshNode *n14, const SMDS_MeshNode *n24, const SMDS_MeshNode *n34)
int ShapeToIndex(const TopoDS_Shape &aShape) const
virtual void RemoveNode(const SMDS_MeshNode *)
SMESHDS_SubMesh * getSubmesh(const int Index)
bool AddHypothesis(const TopoDS_Shape &SS, const SMESHDS_Hypothesis *H)
virtual SMDS_MeshFace * AddFaceWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, int ID)
SMESHDS_Script * myScript
int AddCompoundSubmesh(const TopoDS_Shape &S, TopAbs_ShapeEnum type=TopAbs_SHAPE)
void AddGroup(SMESHDS_GroupBase *theGroup)
virtual SMDS_MeshVolume * AddVolume(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n5, const SMDS_MeshNode *n6, const SMDS_MeshNode *n7, const SMDS_MeshNode *n8)
NCollection_DataMap< TopoDS_Shape, THypList > ShapeToHypothesis
TopTools_IndexedMapOfShape myIndexToShape
virtual SMDS_Mesh0DElement * Add0DElementWithID(const SMDS_MeshNode *node, int ID)
void SetMeshElementOnShape(const SMDS_MeshElement *anElt, const TopoDS_Shape &S)
void SetNodeOnEdge(SMDS_MeshNode *aNode, int Index, double u=0.)
void SetNodeOnVertex(SMDS_MeshNode *aNode, int Index)
virtual SMDS_MeshFace * AddFace(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4)
const std::list< const SMESHDS_Hypothesis * > & GetHypothesis(const TopoDS_Shape &S) const
void ShapeToMesh(const TopoDS_Shape &S)
virtual SMDS_MeshVolume * AddVolumeWithID(const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4, const SMDS_MeshNode *n12, const SMDS_MeshNode *n23, const SMDS_MeshNode *n31, const SMDS_MeshNode *n14, const SMDS_MeshNode *n24, const SMDS_MeshNode *n34, int ID)