Salome HOME
fab9fba9c8233b32d694b05001af1c62dd31ad69
[modules/smesh.git] / src / SMESHDS / SMESHDS_SubMesh.cxx
1 using namespace std;
2 //=============================================================================
3 // File      : SMESH_SubMesh.cxx
4 // Created   : 
5 // Author    : Yves FRICAUD, OCC
6 // Project   : SALOME
7 // Copyright : OCC 2002
8 // $Header: 
9 //=============================================================================
10
11 #include "SMESHDS_SubMesh.ixx"
12 #include "SMDS_MapIteratorOfExtendedMap.hxx"
13
14 //=======================================================================
15 //function : SMESHDS_SubMesh
16 //purpose  : 
17 //=======================================================================
18 SMESHDS_SubMesh::SMESHDS_SubMesh(const Handle(SMDS_Mesh)& M) : myMesh(M)
19 {
20   myListOfEltIDIsUpdate  = Standard_False;
21   myListOfNodeIDIsUpdate = Standard_False;
22 }
23
24 //=======================================================================
25 //function : AddElement
26 //purpose  : 
27 //=======================================================================
28 void SMESHDS_SubMesh::AddElement (const Handle(SMDS_MeshElement)& ME) 
29 {
30   myElements.Add(ME);
31   myListOfEltIDIsUpdate = Standard_False;
32 }
33
34 //=======================================================================
35 //function : RemoveElement
36 //purpose  : 
37 //=======================================================================
38 void SMESHDS_SubMesh::RemoveElement(const Handle(SMDS_MeshElement)& ME) 
39 {
40   myElements.Remove(ME);
41   myListOfEltIDIsUpdate = Standard_False;
42 }
43 //=======================================================================
44 //function : AddNode
45 //purpose  : 
46 //=======================================================================
47 void SMESHDS_SubMesh::AddNode (const Handle(SMDS_MeshNode)& N) 
48 {
49   myNodes.Add(N);
50   myListOfNodeIDIsUpdate = Standard_False;
51 }
52
53 //=======================================================================
54 //function : RemoveNode
55 //purpose  : 
56 //=======================================================================
57 void SMESHDS_SubMesh::RemoveNode (const Handle(SMDS_MeshNode)& N) 
58 {
59   myNodes.Remove(N);
60   myListOfNodeIDIsUpdate = Standard_False;
61 }
62
63 //=======================================================================
64 //function : NbElements
65 //purpose  : 
66 //=======================================================================
67 Standard_Integer SMESHDS_SubMesh::NbElements() 
68 {
69   return myElements.Extent();
70 }
71
72 //=======================================================================
73 //function : GetElements
74 //purpose  : 
75 //=======================================================================
76 const SMDS_MapOfMeshElement& SMESHDS_SubMesh::GetElements() 
77 {
78   return myElements;
79 }
80 //=======================================================================
81 //function : NbNodes
82 //purpose  : 
83 //=======================================================================
84 Standard_Integer SMESHDS_SubMesh::NbNodes() 
85 {
86   return myNodes.Extent();
87 }
88
89 //=======================================================================
90 //function : GetNodes
91 //purpose  : 
92 //=======================================================================
93 const SMDS_MapOfMeshElement& SMESHDS_SubMesh::GetNodes() 
94 {
95   return myNodes;
96 }
97
98 //=======================================================================
99 //function : GetIDElements
100 //purpose  : 
101 //=======================================================================
102 const TColStd_ListOfInteger& SMESHDS_SubMesh::GetIDElements()
103 {
104   if (!myListOfEltIDIsUpdate) {
105     myListOfEltID.Clear();
106     for (SMDS_MapIteratorOfExtendedMap it(myElements); it.More(); it.Next()) {
107       myListOfEltID.Append(it.Key()->GetID());
108     }
109     myListOfEltIDIsUpdate = Standard_True;
110   }
111   return myListOfEltID;
112 }
113
114 //=======================================================================
115 //function : GetIDNodes
116 //purpose  : 
117 //=======================================================================
118 const TColStd_ListOfInteger& SMESHDS_SubMesh::GetIDNodes()
119 {
120   if (!myListOfNodeIDIsUpdate) {
121     myListOfNodeID.Clear();
122     for (SMDS_MapIteratorOfExtendedMap it(myNodes); it.More(); it.Next()) {
123       myListOfNodeID.Append(it.Key()->GetID());
124     }
125     myListOfNodeIDIsUpdate = Standard_True;
126   }
127   return myListOfNodeID;
128 }