Salome HOME
c84a353983c0ac5da9aabf5c5cb5fb6a45a5d539
[modules/smesh.git] / src / SMESH / SMESH_2D_Algo.cxx
1 //  SMESH SMESH : implementaion of SMESH idl descriptions
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
6 //  This library is free software; you can redistribute it and/or 
7 //  modify it under the terms of the GNU Lesser General Public 
8 //  License as published by the Free Software Foundation; either 
9 //  version 2.1 of the License. 
10 // 
11 //  This library is distributed in the hope that it will be useful, 
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 //  Lesser General Public License for more details. 
15 // 
16 //  You should have received a copy of the GNU Lesser General Public 
17 //  License along with this library; if not, write to the Free Software 
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19 // 
20 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : SMESH_2D_Algo.cxx
25 //  Author : Paul RASCLE, EDF
26 //  Module : SMESH
27 //  $Header$
28
29 using namespace std;
30 #include "SMESH_2D_Algo.hxx"
31 #include "SMESH_Gen.hxx"
32
33 #include "utilities.h"
34
35 //=============================================================================
36 /*!
37  *  
38  */
39 //=============================================================================
40
41 SMESH_2D_Algo::SMESH_2D_Algo(int hypId, int studyId, SMESH_Gen* gen)
42   : SMESH_Algo(hypId, studyId, gen)
43 {
44 //   _compatibleHypothesis.push_back("hypothese_2D_bidon");
45   _type = ALGO_2D;
46   gen->_map2D_Algo[hypId] = this;
47 }
48
49 //=============================================================================
50 /*!
51  *  
52  */
53 //=============================================================================
54
55 SMESH_2D_Algo::~SMESH_2D_Algo()
56 {
57 }
58
59 //=============================================================================
60 /*!
61  *  
62  */
63 //=============================================================================
64
65 int SMESH_2D_Algo::NumberOfWires(const TopoDS_Shape& S)
66 {
67   int i = 0;
68   for (TopExp_Explorer exp(S,TopAbs_WIRE); exp.More(); exp.Next())
69     i++;
70   return i;
71 }
72
73 //=============================================================================
74 /*!
75  *  
76  */
77 //=============================================================================
78
79 int SMESH_2D_Algo::NumberOfPoints(SMESH_Mesh& aMesh, const TopoDS_Wire& W)
80 {
81   int nbPoints = 0;
82   for (TopExp_Explorer exp(W,TopAbs_EDGE); exp.More(); exp.Next())
83     {
84       const TopoDS_Edge& E = TopoDS::Edge(exp.Current());
85       int nb = aMesh.GetSubMesh(E)->GetSubMeshDS()->NbNodes();
86       //SCRUTE(nb);
87       nbPoints += nb +1; // internal points plus 1 vertex of 2 (last point ?)
88     }
89   //SCRUTE(nbPoints);
90   return nbPoints;
91 }