Version: 8.3.0
SMESH_Mesh_i.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 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, or (at your option) any later version.
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.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 // File : SMESH_Mesh_i.hxx
23 // Author : Paul RASCLE, EDF
24 // Module : SMESH
25 
26 #ifndef _SMESH_MESH_I_HXX_
27 #define _SMESH_MESH_I_HXX_
28 
29 #include "SMESH.hxx"
30 
31 #include "SMESH_Hypothesis.hxx"
32 #include "SMESH_Mesh.hxx"
33 #include "SMESH_subMesh.hxx"
34 #include "SMDS_ElemIterator.hxx"
35 
36 #include <SALOME_GenericObj_i.hh>
37 #include <SALOMEconfig.h>
38 #include CORBA_SERVER_HEADER(SMESH_Gen)
39 #include CORBA_SERVER_HEADER(SMESH_Mesh)
40 #include CORBA_SERVER_HEADER(SMESH_Group)
41 #include CORBA_SERVER_HEADER(SMESH_Hypothesis)
42 #include CORBA_CLIENT_HEADER(GEOM_Gen)
43 
44 #include <map>
45 
46 class SMESH_Gen_i;
47 class SMESH_GroupBase_i;
48 class SMESH_subMesh_i;
49 class SMESH_PreMeshInfo;
50 class SMESH_MeshEditor_i;
51 class DriverMED_W_Field;
52 class SMESHDS_Mesh;
53 
55  public virtual POA_SMESH::SMESH_Mesh,
56  public virtual SALOME::GenericObj_i
57 {
58  SMESH_Mesh_i();
59  SMESH_Mesh_i(const SMESH_Mesh_i&);
60 public:
61  SMESH_Mesh_i( PortableServer::POA_ptr thePOA,
62  SMESH_Gen_i* myGen_i,
63  CORBA::Long studyId );
64 
65  virtual ~SMESH_Mesh_i();
66 
67  // --- CORBA
68 
69  void SetShape( GEOM::GEOM_Object_ptr theShapeObject )
70  throw (SALOME::SALOME_Exception);
71 
72  CORBA::Boolean HasShapeToMesh()
73  throw (SALOME::SALOME_Exception);
74 
75  GEOM::GEOM_Object_ptr GetShapeToMesh()
76  throw (SALOME::SALOME_Exception);
77 
78  CORBA::Boolean IsLoaded()
79  throw (SALOME::SALOME_Exception);
80 
81  void Load()
82  throw (SALOME::SALOME_Exception);
83 
84  void Clear()
85  throw (SALOME::SALOME_Exception);
86 
87  void ClearSubMesh(CORBA::Long ShapeID)
88  throw (SALOME::SALOME_Exception);
89 
90  SMESH::Hypothesis_Status AddHypothesis(GEOM::GEOM_Object_ptr aSubShape,
91  SMESH::SMESH_Hypothesis_ptr anHyp,
92  CORBA::String_out anErrorText)
93  throw (SALOME::SALOME_Exception);
94 
95  SMESH::Hypothesis_Status RemoveHypothesis(GEOM::GEOM_Object_ptr aSubShape,
96  SMESH::SMESH_Hypothesis_ptr anHyp)
97  throw (SALOME::SALOME_Exception);
98 
99  SMESH::ListOfHypothesis* GetHypothesisList(GEOM::GEOM_Object_ptr aSubShape)
100  throw (SALOME::SALOME_Exception);
101 
102  SMESH::submesh_array* GetSubMeshes()
103  throw (SALOME::SALOME_Exception);
104 
105  SMESH::SMESH_subMesh_ptr GetSubMesh(GEOM::GEOM_Object_ptr aSubShape, const char* theName)
106  throw (SALOME::SALOME_Exception);
107 
108  void RemoveSubMesh( SMESH::SMESH_subMesh_ptr theSubMesh )
109  throw (SALOME::SALOME_Exception);
110 
111  SMESH::SMESH_Group_ptr CreateGroup( SMESH::ElementType theElemType, const char* theName )
112  throw (SALOME::SALOME_Exception);
113 
114  SMESH::SMESH_GroupOnGeom_ptr CreateGroupFromGEOM(SMESH::ElementType theElemType,
115  const char* theName,
116  GEOM::GEOM_Object_ptr theGeomObj )
117  throw (SALOME::SALOME_Exception);
118 
119  SMESH::SMESH_GroupOnFilter_ptr CreateGroupFromFilter(SMESH::ElementType theElemType,
120  const char* theName,
121  SMESH::Filter_ptr theFilter )
122  throw (SALOME::SALOME_Exception);
123 
124  void RemoveGroup( SMESH::SMESH_GroupBase_ptr theGroup )
125  throw (SALOME::SALOME_Exception);
126 
127  void RemoveGroupWithContents( SMESH::SMESH_GroupBase_ptr theGroup )
128  throw (SALOME::SALOME_Exception);
129 
130  SMESH::ListOfGroups* GetGroups()
131  throw (SALOME::SALOME_Exception);
132 
133  CORBA::Long NbGroups()
134  throw (SALOME::SALOME_Exception);
135 
136  SMESH::SMESH_Group_ptr UnionGroups( SMESH::SMESH_GroupBase_ptr theGroup1,
137  SMESH::SMESH_GroupBase_ptr theGroup2,
138  const char* theName )
139  throw (SALOME::SALOME_Exception);
140 
141  SMESH::SMESH_Group_ptr UnionListOfGroups( const SMESH::ListOfGroups& theGroups,
142  const char* theName)
143  throw (SALOME::SALOME_Exception);
144 
145  SMESH::SMESH_Group_ptr IntersectGroups( SMESH::SMESH_GroupBase_ptr theGroup1,
146  SMESH::SMESH_GroupBase_ptr theGroup2,
147  const char* theName )
148  throw (SALOME::SALOME_Exception);
149 
150  SMESH::SMESH_Group_ptr IntersectListOfGroups( const SMESH::ListOfGroups& theGroups,
151  const char* theName )
152  throw (SALOME::SALOME_Exception);
153 
154  SMESH::SMESH_Group_ptr CutGroups( SMESH::SMESH_GroupBase_ptr theGroup1,
155  SMESH::SMESH_GroupBase_ptr theGroup2,
156  const char* theName )
157  throw (SALOME::SALOME_Exception);
158 
159  SMESH::SMESH_Group_ptr CutListOfGroups( const SMESH::ListOfGroups& theMainGroups,
160  const SMESH::ListOfGroups& theToolGroups,
161  const char* theName )
162  throw (SALOME::SALOME_Exception);
163 
164  SMESH::SMESH_Group_ptr CreateDimGroup( const SMESH::ListOfIDSources& theGroups,
165  SMESH::ElementType theElemType,
166  const char* theName,
167  SMESH::NB_COMMON_NODES_ENUM theNbCommonNodes,
168  CORBA::Boolean theUnderlyingOnly )
169  throw (SALOME::SALOME_Exception);
170 
171 
172  SMESH::SMESH_Group_ptr ConvertToStandalone( SMESH::SMESH_GroupBase_ptr theGroupOn )
173  throw (SALOME::SALOME_Exception);
174 
175  SMESH::log_array* GetLog(CORBA::Boolean clearAfterGet)
176  throw (SALOME::SALOME_Exception);
177 
178  SMESH::SMESH_MeshEditor_ptr GetMeshEditor() throw (SALOME::SALOME_Exception);
179 
180  SMESH::SMESH_MeshEditor_ptr GetMeshEditPreviewer() throw (SALOME::SALOME_Exception);
181 
182  CORBA::Boolean HasModificationsToDiscard() throw (SALOME::SALOME_Exception);
183 
184  void ClearLog() throw (SALOME::SALOME_Exception);
185 
186  CORBA::Long GetId() throw (SALOME::SALOME_Exception);
187 
188  CORBA::Long GetStudyId() throw (SALOME::SALOME_Exception);
189 
190  // --- C++ interface
191 
192  void SetImpl(::SMESH_Mesh* impl);
193  ::SMESH_Mesh& GetImpl(); // :: force no namespace here
194 
195  SMESH_Gen_i* GetGen() { return _gen_i; }
196 
197  int ImportUNVFile( const char* theFileName )
198  throw (SALOME::SALOME_Exception);
199 
200  int ImportSTLFile( const char* theFileName )
201  throw (SALOME::SALOME_Exception);
202 
203  SMESH::ComputeError* ImportGMFFile( const char* theFileName,
204  bool theMakeRequiredGroups)
205  throw (SALOME::SALOME_Exception);
206 
210  SMESH::DriverMED_ReadStatus ImportMEDFile( const char* theFileName, const char* theMeshName )
211  throw (SALOME::SALOME_Exception);
212 
213  SMESH::DriverMED_ReadStatus ImportCGNSFile( const char* theFileName,
214  const int theMeshIndex,
215  std::string& theMeshName)
216  throw (SALOME::SALOME_Exception);
217 
221  void SetAutoColor(CORBA::Boolean theAutoColor)
222  throw (SALOME::SALOME_Exception);
223 
224  CORBA::Boolean GetAutoColor()
225  throw (SALOME::SALOME_Exception);
226 
230  CORBA::Boolean HasDuplicatedGroupNamesMED();
234  char* GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits);
235 
236  void ExportToMEDX( const char* file,
237  CORBA::Boolean auto_groups,
238  SMESH::MED_VERSION version,
239  CORBA::Boolean overwrite,
240  CORBA::Boolean autoDimension=true) throw (SALOME::SALOME_Exception);
241  void ExportToMED ( const char* file,
242  CORBA::Boolean auto_groups,
243  SMESH::MED_VERSION version ) throw (SALOME::SALOME_Exception);
244  void ExportMED ( const char* file,
245  CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
246 
247  void ExportSAUV( const char* file, CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
248 
249  void ExportDAT( const char* file ) throw (SALOME::SALOME_Exception);
250  void ExportUNV( const char* file ) throw (SALOME::SALOME_Exception);
251  void ExportSTL( const char* file, bool isascii ) throw (SALOME::SALOME_Exception);
252  void ExportCGNS(SMESH::SMESH_IDSource_ptr meshPart,
253  const char* file,
254  CORBA::Boolean overwrite) throw (SALOME::SALOME_Exception);
255  void ExportGMF(SMESH::SMESH_IDSource_ptr meshPart,
256  const char* file,
257  CORBA::Boolean withRequiredGroups) throw (SALOME::SALOME_Exception);
258 
259  void ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
260  const char* file,
261  CORBA::Boolean auto_groups,
262  SMESH::MED_VERSION version,
263  CORBA::Boolean overwrite,
264  CORBA::Boolean autoDim,
265  const GEOM::ListOfFields& fields,
266  const char* geomAssocFields) throw (SALOME::SALOME_Exception);
267  void ExportPartToDAT(SMESH::SMESH_IDSource_ptr meshPart,
268  const char* file) throw (SALOME::SALOME_Exception);
269  void ExportPartToUNV(SMESH::SMESH_IDSource_ptr meshPart,
270  const char* file) throw (SALOME::SALOME_Exception);
271  void ExportPartToSTL(SMESH::SMESH_IDSource_ptr meshPart,
272  const char* file,
273  CORBA::Boolean isascii) throw (SALOME::SALOME_Exception);
274 
275  CORBA::Double GetComputeProgress();
276 
277  CORBA::Long NbNodes()
278  throw (SALOME::SALOME_Exception);
279 
280  CORBA::Long NbElements()
281  throw (SALOME::SALOME_Exception);
282 
283  CORBA::Long Nb0DElements()
284  throw (SALOME::SALOME_Exception);
285 
286  CORBA::Long NbBalls()
287  throw (SALOME::SALOME_Exception);
288 
289  CORBA::Long NbEdges()
290  throw (SALOME::SALOME_Exception);
291 
292  CORBA::Long NbEdgesOfOrder(SMESH::ElementOrder order)
293  throw (SALOME::SALOME_Exception);
294 
295  CORBA::Long NbFaces()
296  throw (SALOME::SALOME_Exception);
297 
298  CORBA::Long NbFacesOfOrder(SMESH::ElementOrder order)
299  throw (SALOME::SALOME_Exception);
300 
301  CORBA::Long NbTriangles()
302  throw (SALOME::SALOME_Exception);
303 
304  CORBA::Long NbTrianglesOfOrder(SMESH::ElementOrder order)
305  throw (SALOME::SALOME_Exception);
306 
307  CORBA::Long NbBiQuadTriangles()
308  throw (SALOME::SALOME_Exception);
309 
310  CORBA::Long NbQuadrangles()
311  throw (SALOME::SALOME_Exception);
312 
313  CORBA::Long NbQuadranglesOfOrder(SMESH::ElementOrder order)
314  throw (SALOME::SALOME_Exception);
315 
316  CORBA::Long NbBiQuadQuadrangles()
317  throw (SALOME::SALOME_Exception);
318 
319  CORBA::Long NbPolygons()
320  throw (SALOME::SALOME_Exception);
321 
322  CORBA::Long NbPolygonsOfOrder(SMESH::ElementOrder order=SMESH::ORDER_ANY)
323  throw (SALOME::SALOME_Exception);
324 
325  CORBA::Long NbVolumes()
326  throw (SALOME::SALOME_Exception);
327 
328  CORBA::Long NbVolumesOfOrder(SMESH::ElementOrder order)
329  throw (SALOME::SALOME_Exception);
330 
331  CORBA::Long NbTetras()
332  throw (SALOME::SALOME_Exception);
333 
334  CORBA::Long NbTetrasOfOrder(SMESH::ElementOrder order)
335  throw (SALOME::SALOME_Exception);
336 
337  CORBA::Long NbHexas()
338  throw (SALOME::SALOME_Exception);
339 
340  CORBA::Long NbHexasOfOrder(SMESH::ElementOrder order)
341  throw (SALOME::SALOME_Exception);
342 
343  CORBA::Long NbTriQuadraticHexas()
344  throw (SALOME::SALOME_Exception);
345 
346  CORBA::Long NbPyramids()
347  throw (SALOME::SALOME_Exception);
348 
349  CORBA::Long NbPyramidsOfOrder(SMESH::ElementOrder order)
350  throw (SALOME::SALOME_Exception);
351 
352  CORBA::Long NbPrisms()
353  throw (SALOME::SALOME_Exception);
354 
355  CORBA::Long NbPrismsOfOrder(SMESH::ElementOrder order)
356  throw (SALOME::SALOME_Exception);
357 
358  CORBA::Long NbHexagonalPrisms()
359  throw (SALOME::SALOME_Exception);
360 
361  CORBA::Long NbPolyhedrons()
362  throw (SALOME::SALOME_Exception);
363 
364  CORBA::Long NbSubMesh()
365  throw (SALOME::SALOME_Exception);
366 
367  SMESH::long_array* GetElementsId()
368  throw (SALOME::SALOME_Exception);
369 
370  SMESH::long_array* GetElementsByType( SMESH::ElementType theElemType )
371  throw (SALOME::SALOME_Exception);
372 
373  SMESH::long_array* GetNodesId()
374  throw (SALOME::SALOME_Exception);
375 
376  SMESH::ElementType GetElementType( CORBA::Long id, bool iselem )
377  throw (SALOME::SALOME_Exception);
378 
379  SMESH::EntityType GetElementGeomType( CORBA::Long id )
380  throw (SALOME::SALOME_Exception);
381 
382  SMESH::GeometryType GetElementShape( CORBA::Long id )
383  throw (SALOME::SALOME_Exception);
384 
388  SMESH::long_array* GetSubMeshElementsId(CORBA::Long ShapeID)
389  throw (SALOME::SALOME_Exception);
390 
396  SMESH::long_array* GetSubMeshNodesId(CORBA::Long ShapeID, CORBA::Boolean all)
397  throw (SALOME::SALOME_Exception);
398 
402  SMESH::ElementType GetSubMeshElementType(CORBA::Long ShapeID)
403  throw (SALOME::SALOME_Exception);
404 
405  char* Dump();
406 
407  // Create groups of elements preventing computation of a sub-shape
408  SMESH::ListOfGroups* MakeGroupsOfBadInputElements( int theSubShapeID,
409  const char* theGroupName)
410  throw (SALOME::SALOME_Exception);
411 
412  // Internal methods not available through CORBA
413  // They are called by corresponding interface methods
414  SMESH_Hypothesis::Hypothesis_Status addHypothesis(GEOM::GEOM_Object_ptr aSubShape,
415  SMESH::SMESH_Hypothesis_ptr anHyp,
416  std::string* anErrorText=0);
417 
418  SMESH_Hypothesis::Hypothesis_Status removeHypothesis(GEOM::GEOM_Object_ptr aSubShape,
419  SMESH::SMESH_Hypothesis_ptr anHyp);
420 
421  static SMESH::Hypothesis_Status
422  ConvertHypothesisStatus (SMESH_Hypothesis::Hypothesis_Status theStatus);
423 
424  static void PrepareForWriting (const char* file, bool overwrite = true);
425 
426  //int importMEDFile( const char* theFileName, const char* theMeshName );
427 
428  SMESH::SMESH_subMesh_ptr createSubMesh( GEOM::GEOM_Object_ptr theSubShapeObject );
429 
430  bool removeSubMesh(SMESH::SMESH_subMesh_ptr theSubMesh,
431  GEOM::GEOM_Object_ptr theSubShapeObject );
432 
433  SMESH::SMESH_GroupBase_ptr createGroup(SMESH::ElementType theElemType,
434  const char* theName,
435  const TopoDS_Shape& theShape = TopoDS_Shape(),
436  const SMESH_PredicatePtr& thePred = SMESH_PredicatePtr());
437 
438  void removeGroup( const int theId );
439 
440  SMESH::SMESH_subMesh_ptr getSubMesh(int shapeID);
441  // return an existing subMesh object for the shapeID. shapeID == submeshID.
442 
443  const std::map<int, SMESH::SMESH_GroupBase_ptr>& getGroups() { return _mapGroups; }
444  // return existing group objects
445 
446  void onHypothesisModified();
447  // callback from _impl to forget not loaded mesh data (issue 0021208)
448 
449  void checkMeshLoaded();
450 
456  void CheckGeomModif();
462  void CheckGeomGroupModif();
463 
464  CORBA::LongLong GetMeshPtr();
465 
469  void CreateGroupServants();
470 
474  SMESH::ListOfGroups* GetGroups(const std::list<int>& groupIDs) const;
475 
480  SMESH::double_array* GetNodeXYZ(CORBA::Long id);
481 
486  SMESH::long_array* GetNodeInverseElements(CORBA::Long id);
487 
491  SMESH::NodePosition* GetNodePosition(CORBA::Long NodeID);
492 
496  SMESH::ElementPosition GetElementPosition(CORBA::Long ElemID);
497 
502  CORBA::Long GetShapeID(CORBA::Long id);
503 
509  CORBA::Long GetShapeIDForElem(CORBA::Long id);
510 
515  CORBA::Long GetElemNbNodes(CORBA::Long id);
516 
520  SMESH::long_array* GetElemNodes(CORBA::Long id);
521 
527  CORBA::Long GetElemNode(CORBA::Long id, CORBA::Long index);
528 
533  CORBA::Boolean IsMediumNode(CORBA::Long ide, CORBA::Long idn);
534 
539  CORBA::Boolean IsMediumNodeOfAnyElem(CORBA::Long idn,
540  SMESH::ElementType theElemType);
541 
545  CORBA::Long ElemNbEdges(CORBA::Long id);
546 
550  CORBA::Long ElemNbFaces(CORBA::Long id);
554  SMESH::long_array* GetElemFaceNodes(CORBA::Long elemId, CORBA::Short faceIndex);
555 
559  SMESH::double_array* GetFaceNormal(CORBA::Long faceId, CORBA::Boolean normalized);
560 
564  CORBA::Long FindElementByNodes(const SMESH::long_array& nodes);
565 
569  CORBA::Boolean IsPoly(CORBA::Long id);
570 
574  CORBA::Boolean IsQuadratic(CORBA::Long id);
575 
579  CORBA::Double GetBallDiameter(CORBA::Long id);
580 
584  SMESH::double_array* BaryCenter(CORBA::Long id);
585 
589  virtual SMESH::MedFileInfo* GetMEDFileInfo();
590 
594  void SetParameters (const char* theParameters);
595 
599  char* GetParameters();
600 
604  SMESH::string_array* GetLastParameters();
605 
609  CORBA::Boolean IsUnorderedSubMesh(CORBA::Long submeshID);
613  virtual SMESH::submesh_array_array* GetMeshOrder();
617  virtual ::CORBA::Boolean SetMeshOrder(const SMESH::submesh_array_array& theSubMeshArray);
618 
619 
623  static void CollectMeshInfo(const SMDS_ElemIteratorPtr theItr,
624  SMESH::long_array& theInfo);
628  static SMDS_ElemIteratorPtr GetElements(SMESH::SMESH_IDSource_ptr obj,
629  SMESH::ElementType type);
630 
631  // =========================
632  // SMESH_IDSource interface
633  // =========================
634 
635  virtual SMESH::long_array* GetIDs();
641  virtual SMESH::long_array* GetMeshInfo();
645  virtual SMESH::long_array* GetNbElementsByType();
649  virtual SMESH::array_of_ElementType* GetTypes();
653  virtual SMESH::SMESH_Mesh_ptr GetMesh();
658  bool IsMeshInfoCorrect();
662  virtual SALOMEDS::TMPFile* GetVtkUgStream();
663 
664  std::map<int, SMESH_subMesh_i*> _mapSubMesh_i; //NRI
665  std::map<int, ::SMESH_subMesh*> _mapSubMesh; //NRI
666 
667 private:
668  std::string prepareMeshNameAndGroups( const char* file, CORBA::Boolean overwrite );
669 
673  void checkGroupNames();
674 
675  /*
676  * Write GEOM fields to MED file
677  */
678  void exportMEDFields( DriverMED_W_Field & writer,
679  SMESHDS_Mesh* meshDS,
680  const GEOM::ListOfFields& fields,
681  const char* geomAssocFields);
685  void convertMeshOrder(const TListOfListOfInt& theIdsOrder,
686  SMESH::submesh_array_array& theSubMeshOrder,
687  const bool theIsDump);
688 
692  TListOfListOfInt findConcurrentSubMeshes();
693 
694 private:
695 
696  static int _idGenerator;
697  ::SMESH_Mesh* _impl; // :: force no namespace here
699  int _id; // id given by creator (unique within the creator instance)
700  int _studyId;
701  std::map<int, SMESH::SMESH_subMesh_ptr> _mapSubMeshIor;
702  std::map<int, SMESH::SMESH_GroupBase_ptr> _mapGroups;
703  std::map<int, SMESH::SMESH_Hypothesis_ptr> _mapHypo;
706  SMESH::MedFileInfo_var _medFileInfo;
707  SMESH_PreMeshInfo* _preMeshInfo; // mesh info before full loading from study file
708 
709  SMESH_PreMeshInfo* & changePreMeshInfo() { return _preMeshInfo; }
710  friend class SMESH_PreMeshInfo;
711 
712 private:
713 
714  // Data used to track changes of GEOM groups
715  struct TGeomGroupData {
716  // keep study entry but not ior because GEOM_Object actually changes if
717  // number of items in a group varies (1) <-> (>1)
718  std::string _groupEntry;
719  std::set<int> _indices; // indices of group items within group's main shape
720  CORBA::Object_var _smeshObject; // SMESH object depending on GEOM group
721  };
722  std::list<TGeomGroupData> _geomGroupData;
723  int _mainShapeTick; // to track modifications of the meshed shape
724 
728  void addGeomGroupData(GEOM::GEOM_Object_ptr theGeomObj,
729  CORBA::Object_ptr theSmeshObj);
733  void removeGeomGroupData(CORBA::Object_ptr theSmeshObj);
737  TopoDS_Shape newGroupShape( TGeomGroupData & groupData);
738 
739 };
740 
741 #endif