Salome HOME
updating or adding when merging in the main trunk with the version in the
[modules/smesh.git] / src / SMESH_I / SMESH_MEDMesh_i.cxx
index 23fb01fe6ff3aae2ccc651f72308671cce4cd5d7..25ce55bfe3b3fedfa11e95fa5b322af840b2fb49 100644 (file)
@@ -1,19 +1,36 @@
-using namespace std;
-//=============================================================================
-// File      : SMESH_MEDMesh_i.cxx
-// Project   : SALOME
-// Copyright : EDF 2001
-//=============================================================================
+//  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
+//
+//  Copyright (C) 2003  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. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SMESH_MEDMesh_i.cxx
+//  Module : SMESH
 
+using namespace std;
 #include "SMESH_MEDMesh_i.hxx"
 #include "SMESH_Mesh_i.hxx"
 
 #include "SMESHDS_Mesh.hxx"
 #include "SMESHDS_SubMesh.hxx"
 
-#include "SMDS_MapIteratorOfExtendedMap.hxx"
-#include "SMDS_MapOfMeshElement.hxx"
-
 #include <TopExp.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopoDS.hxx>
@@ -42,7 +59,6 @@ extern "C"
 #include <stdio.h>
 }
 
-
 //=============================================================================
 /*!
  * Default constructor
@@ -51,9 +67,10 @@ extern "C"
 // PN Est-ce un const ?
 SMESH_MEDMesh_i::SMESH_MEDMesh_i()
 {
-  BEGIN_OF("Default Constructor SMESH_MEDMesh_i");
-  END_OF("Default Constructor SMESH_MEDMesh_i");
+       BEGIN_OF("Default Constructor SMESH_MEDMesh_i");
+       END_OF("Default Constructor SMESH_MEDMesh_i");
 }
+
 //=============================================================================
 /*!
  * Destructor
@@ -62,23 +79,25 @@ SMESH_MEDMesh_i::SMESH_MEDMesh_i()
 SMESH_MEDMesh_i::~SMESH_MEDMesh_i()
 {
 }
+
 //=============================================================================
 /*!
  * Constructor
  */
 //=============================================================================
-SMESH_MEDMesh_i::SMESH_MEDMesh_i( ::SMESH_Mesh_i* m_i ) :_meshId(""),
-                                                        _compte(false),
-                                                        _creeFamily(false),
-                                                        _famIdent(0),
-                                                        _indexElts(0), 
-                                                        _indexEnts(0) 
+SMESH_MEDMesh_i::SMESH_MEDMesh_i(::SMESH_Mesh_i * m_i):_meshId(""),
+                                                      _compte(false),
+                                                      _creeFamily(false),
+                                                      _famIdent(0),
+                                                      _indexElts(0),
+                                                      _indexEnts(0)
 {
-  _mesh_i = m_i;
-  _meshDS = _mesh_i->GetImpl().GetMeshDS();
+       BEGIN_OF("Constructor SMESH_MEDMesh_i");
 
-  BEGIN_OF("Constructor SMESH_MEDMesh_i");
-  END_OF("Constructor SMESH_MEDMesh_i");
+       _mesh_i = m_i;
+       _meshDS = _mesh_i->GetImpl().GetMeshDS();
+
+       END_OF("Constructor SMESH_MEDMesh_i");
 }
 
 //=============================================================================
@@ -86,257 +105,301 @@ SMESH_MEDMesh_i::SMESH_MEDMesh_i( ::SMESH_Mesh_i* m_i ) :_meshId(""),
  * CORBA: Accessor for Name
  */
 //=============================================================================
-char * SMESH_MEDMesh_i::getName()      
-  throw (SALOME::SALOME_Exception)
+char *SMESH_MEDMesh_i::getName() throw(SALOME::SALOME_Exception)
 {
-  if (_meshDS == NULL)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
+       if (_meshDS == NULL)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
 
-  try
-    {
-      // A COMPLETER PAR LE NOM DU MAILLAGE
-      //return CORBA::string_dup(_mesh_i->getName().c_str());
-      return CORBA::string_dup("toto");
-    }
-  catch(...)
-    {
-      MESSAGE("Exception en accedant au nom");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
+       try
+       {
+               // A COMPLETER PAR LE NOM DU MAILLAGE
+               //return CORBA::string_dup(_mesh_i->getName().c_str());
+               return CORBA::string_dup("toto");
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant au nom");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for corbaindex cuisine interne 
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getCorbaIndex() 
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getCorbaIndex()throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Non Implemente");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
+       MESSAGE("Non Implemente");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Space Dimension
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getSpaceDimension() 
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getSpaceDimension()throw(SALOME::SALOME_Exception)
 {
-  // PN : Il semblerait que la dimension soit fixee a 3
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  return 3;
+       // PN : Il semblerait que la dimension soit fixee a 3
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       return 3;
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Mesh Dimension
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getMeshDimension()
+CORBA::Long SMESH_MEDMesh_i::getMeshDimension()throw(SALOME::SALOME_Exception)
+{
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       // PN : Il semblerait que la dimension soit fixee a 3
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       return 3;
+}
+//=============================================================================
+/*!
+ * CORBA: Accessor for the boolean _isAGrid
+ */
+//=============================================================================
+CORBA::Boolean SMESH_MEDMesh_i::getIsAGrid() throw (SALOME::SALOME_Exception)
+{
+  MESSAGE("!!!!!! NOT YET IMPLEMENTED !!!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return false;
+}
+//=============================================================================
+/*!
+ * CORBA: Accessor for the connectivities, to see if they exist
+ */
+//=============================================================================
+CORBA::Boolean
+SMESH_MEDMesh_i::existConnectivity(SALOME_MED::medConnectivity connectivityType,
+                                  SALOME_MED::medEntityMesh entity)
   throw (SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  // PN : Il semblerait que la dimension soit fixee a 3
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  return 3;
+  MESSAGE("!!!!!! IMPLEMENTED BUT ONLY PARTIALLY !!!!!!");
+
+
+  return false;
+
 }
 //=============================================================================
 /*!
- * CORBA: Accessor for Coordinates System
+ * CORBA: Accessor for Coordinate
  */
 //=============================================================================
-char * SMESH_MEDMesh_i::getCoordinateSystem()
+CORBA::Double SMESH_MEDMesh_i::getCoordinate(CORBA::Long Number, CORBA::Long Axis)
   throw (SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  // PN : En dur. Non encore prevu
-  try
-    {
-      string systcoo="CARTESIEN";
-      return CORBA::string_dup(systcoo.c_str());
-    }
-  catch(...)
-    {
-      MESSAGE("Exception en accedant au maillage");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
+  MESSAGE("!!!!!! NOT YET IMPLEMENTED !!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return 0.0;
+}
+//=============================================================================
+/*!
+ * CORBA: Accessor for Coordinates System
+ */
+//=============================================================================
+char *SMESH_MEDMesh_i::getCoordinatesSystem() throw(SALOME::SALOME_Exception)
+{
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       // PN : En dur. Non encore prevu
+       try
+       {
+               string systcoo = "CARTESIEN";
+               return CORBA::string_dup(systcoo.c_str());
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant au maillage");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Coordinates
  */
 //=============================================================================
-Engines::double_array * SMESH_MEDMesh_i::getCoordinates(SALOME_MED::medModeSwitch typeSwitch)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::double_array * SMESH_MEDMesh_i::getCoordinates(
+       SALOME_MED::medModeSwitch typeSwitch) throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  Engines::double_array_var myseq = new Engines::double_array;
-  try
-    {
-      // PN  : En dur
-      int spaceDimension=3;
-      int nbNodes=_meshDS->NbNodes();
-      SCRUTE(nbNodes);
-      myseq->length(nbNodes*spaceDimension);
-      int i = 0;
-      SMDS_MeshNodesIterator itNodes(_meshDS);
-      for (;itNodes.More();itNodes.Next()) 
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       SALOME_MED::double_array_var myseq = new SALOME_MED::double_array;
+       try
        {
+               // PN  : En dur
+               int spaceDimension = 3;
+               int nbNodes = _meshDS->NbNodes();
+               SCRUTE(nbNodes);
+               myseq->length(nbNodes * spaceDimension);
+               int i = 0;
+
+               SMDS_Iterator<const SMDS_MeshNode *> * itNodes=_meshDS->nodesIterator();
+               while(itNodes->more())
+               {
+                       const SMDS_MeshNode* node = itNodes->next();
 
-         const Handle(SMDS_MeshElement)& elem = itNodes.Value();
-         const Handle(SMDS_MeshNode)& node =_meshDS->GetNode(1,elem);
-
-         if (typeSwitch == SALOME_MED::MED_FULL_INTERLACE)
-           {
-             myseq[i*3]=node->X();
-             myseq[i*3+1]=node->Y();
-             myseq[i*3+2]=node->Z();
-             SCRUTE(myseq[i*3]);
-             SCRUTE(myseq[i*3+1]);
-             SCRUTE(myseq[i*3+2]);
-           }
-         else
-           {
-             ASSERT(typeSwitch == SALOME_MED::MED_NO_INTERLACE);
-             myseq[i]=node->X();
-             myseq[i+nbNodes]=node->Y();
-             myseq[i+(nbNodes*2)]=node->Z();
-             SCRUTE(myseq[i]);
-             SCRUTE(myseq[i+nbNodes]);
-             SCRUTE(myseq[i+(nbNodes*2)]);
-           }
-         i++;
+                       if (typeSwitch == SALOME_MED::MED_FULL_INTERLACE)
+                       {
+                               myseq[i * 3] = node->X();
+                               myseq[i * 3 + 1] = node->Y();
+                               myseq[i * 3 + 2] = node->Z();
+                               SCRUTE(myseq[i * 3]);
+                               SCRUTE(myseq[i * 3 + 1]);
+                               SCRUTE(myseq[i * 3 + 2]);
+                       }
+                       else
+                       {
+                               ASSERT(typeSwitch == SALOME_MED::MED_NO_INTERLACE);
+                               myseq[i] = node->X();
+                               myseq[i + nbNodes] = node->Y();
+                               myseq[i + (nbNodes * 2)] = node->Z();
+                               SCRUTE(myseq[i]);
+                               SCRUTE(myseq[i + nbNodes]);
+                               SCRUTE(myseq[i + (nbNodes * 2)]);
+                       }
+                       i++;
+               }
+               delete itNodes;
        }
-    }
-  catch(...)
-    {       
-      MESSAGE("Exception en accedant aux coordonnees");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
-  return myseq._retn();
+       catch(...)
+       {
+               MESSAGE("Exception en accedant aux coordonnees");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
+       return myseq._retn();
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Coordinates Names
  */
 //=============================================================================
-Engines::string_array  * SMESH_MEDMesh_i::getCoordinatesNames() 
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::string_array *
+       SMESH_MEDMesh_i::getCoordinatesNames()throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  Engines::string_array_var myseq = new Engines::string_array;
-  try
-    {
-      // PN : en dur
-      int spaceDimension=3;
-      myseq->length(spaceDimension);
-      myseq[0]=CORBA::string_dup("x");
-      myseq[1]=CORBA::string_dup("y");
-      myseq[2]=CORBA::string_dup("z");
-    }
-  catch(...)
-    {       
-      MESSAGE("Exception en accedant aux noms des coordonnees");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
-  return myseq._retn();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
+       try
+       {
+               // PN : en dur
+               int spaceDimension = 3;
+               myseq->length(spaceDimension);
+               myseq[0] = CORBA::string_dup("x");
+               myseq[1] = CORBA::string_dup("y");
+               myseq[2] = CORBA::string_dup("z");
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant aux noms des coordonnees");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
+       return myseq._retn();
 
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Coordinates Units
  */
 //=============================================================================
-Engines::string_array *  SMESH_MEDMesh_i::getCoordinatesUnits()
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::string_array *
+       SMESH_MEDMesh_i::getCoordinatesUnits()throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  Engines::string_array_var myseq = new Engines::string_array;
-  try
-    {
-      // PN : en dur
-      int spaceDimension=3;
-      myseq->length(spaceDimension);
-      myseq[0]=CORBA::string_dup("m");
-      myseq[1]=CORBA::string_dup("m");
-      myseq[2]=CORBA::string_dup("m");
-    }
-  catch(...)
-    {       
-      MESSAGE("Exception en accedant aux unites des coordonnees");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
-  return myseq._retn();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
+       try
+       {
+               // PN : en dur
+               int spaceDimension = 3;
+               myseq->length(spaceDimension);
+               myseq[0] = CORBA::string_dup("m");
+               myseq[1] = CORBA::string_dup("m");
+               myseq[2] = CORBA::string_dup("m");
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant aux unites des coordonnees");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
+       return myseq._retn();
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Number of Nodes
  */
 //=============================================================================
-CORBA::Long  SMESH_MEDMesh_i::getNumberOfNodes() 
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfNodes()throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  try
-    {
-      return _meshDS->NbNodes();
-    }
-  catch(...)
-    {       
-      MESSAGE("Exception en accedant au nombre de noeuds");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       try
+       {
+               return _meshDS->NbNodes();
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant au nombre de noeuds");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for number of Types
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfTypes(SALOME_MED::medEntityMesh entity) 
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfTypes(SALOME_MED::medEntityMesh entity)
+throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  try
-    {
-      if (! _compte)
-       calculeNbElts();
-      int retour = 0; 
-      if ( _mapNbTypes.find(entity)!=_mapNbTypes.end())
-       retour=_mapNbTypes[entity];
-      return retour;
-    }
-  catch(...)
-    {       
-      MESSAGE("Exception en accedant au nombre de Types");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       try
+       {
+               if (!_compte)
+                       calculeNbElts();
+               int retour = 0;
+               if (_mapNbTypes.find(entity) != _mapNbTypes.end())
+                       retour = _mapNbTypes[entity];
+               return retour;
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant au nombre de Types");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
 }
 
 //=============================================================================
@@ -345,49 +408,51 @@ CORBA::Long SMESH_MEDMesh_i::getNumberOfTypes(SALOME_MED::medEntityMesh entity)
  *       Not implemented for MED_ALL_ENTITIES
  */
 //=============================================================================
-SALOME_MED::medGeometryElement_array * SMESH_MEDMesh_i::getTypes (SALOME_MED::medEntityMesh entity) 
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::medGeometryElement_array *
+       SMESH_MEDMesh_i::getTypes(SALOME_MED::medEntityMesh entity) throw(SALOME::
+       SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  if (entity ==SALOME_MED::MED_ALL_ENTITIES)
-    THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ENTITIES",\
-                                SALOME::BAD_PARAM);
-  if (! _compte)
-    calculeNbElts();
-  SALOME_MED::medGeometryElement_array_var myseq = 
-    new SALOME_MED::medGeometryElement_array;
-  try
-    {
-      if ( _mapNbTypes.find(entity) ==_mapNbTypes.end())
-       THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh"\
-                                    ,SALOME::BAD_PARAM);
-      int nbTypes=_mapNbTypes[entity];
-
-      myseq->length(nbTypes);
-               
-      if ( _mapIndToVectTypes.find(entity) ==_mapIndToVectTypes.end())
-       THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh"\
-                                    ,SALOME::INTERNAL_ERROR);
-
-      int index=_mapIndToVectTypes[entity];
-      ASSERT( _TypesId[index].size()!=0);
-      int i=0;
-      vector<SALOME_MED::medGeometryElement>::iterator it;
-      for (it=_TypesId[index].begin();it!=_TypesId[index].end();it++)
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       if (entity == SALOME_MED::MED_ALL_ENTITIES)
+               THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ENTITIES",
+                       SALOME::BAD_PARAM);
+       if (!_compte)
+               calculeNbElts();
+       SALOME_MED::medGeometryElement_array_var myseq =
+               new SALOME_MED::medGeometryElement_array;
+       try
        {
-         myseq[i++]=*it;
-       };
-    }
-  catch(...)
-    {       
-      MESSAGE("Exception en accedant aux differents types");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
-  return myseq._retn();
+               if (_mapNbTypes.find(entity) == _mapNbTypes.end())
+                       THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh",
+                               SALOME::BAD_PARAM);
+               int nbTypes = _mapNbTypes[entity];
+
+               myseq->length(nbTypes);
+
+               if (_mapIndToVectTypes.find(entity) == _mapIndToVectTypes.end())
+                       THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh",
+                               SALOME::INTERNAL_ERROR);
+
+               int index = _mapIndToVectTypes[entity];
+               ASSERT(_TypesId[index].size() != 0);
+               int i = 0;
+               vector < SALOME_MED::medGeometryElement >::iterator it;
+               for (it = _TypesId[index].begin(); it != _TypesId[index].end(); it++)
+               {
+                       myseq[i++] = *it;
+               };
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant aux differents types");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
+       }
+       return myseq._retn();
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns number of elements of type medGeometryElement
@@ -398,307 +463,362 @@ SALOME_MED::medGeometryElement_array * SMESH_MEDMesh_i::getTypes (SALOME_MED::me
  * qui ne doit pas pouvoir avoir deux valeurs differentes pour un geomElement 
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfElements(SALOME_MED::medEntityMesh entity, 
-                                                SALOME_MED::medGeometryElement geomElement)
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfElements(SALOME_MED::
+       medEntityMesh entity,
+       SALOME_MED::medGeometryElement geomElement) throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  if (geomElement == SALOME_MED::MED_ALL_ELEMENTS)
-    THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ELEMENTS", \
-                                SALOME::BAD_PARAM);
-  if (! _compte)
-    calculeNbElts();
-
-  try
-    {
-      int retour = 0; 
-      if ( _mapIndToSeqElts.find(geomElement)!=_mapIndToSeqElts.end())
-       { 
-         int index = _mapIndToSeqElts[geomElement];
-         retour=_seq_elemId[index]->length();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       if (geomElement == SALOME_MED::MED_ALL_ELEMENTS)
+               THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ELEMENTS",
+                       SALOME::BAD_PARAM);
+       if (!_compte)
+               calculeNbElts();
+
+       try
+       {
+               int retour = 0;
+               if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end())
+               {
+                       int index = _mapIndToSeqElts[geomElement];
+
+                       retour = _seq_elemId[index]->length();
+               }
+               return retour;
+       }
+       catch(...)
+       {
+               MESSAGE("Exception en accedant au nombre d élements");
+               THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+                       SALOME::INTERNAL_ERROR);
        }
-      return retour;
-    }
-  catch(...)
-    {
-      MESSAGE("Exception en accedant au nombre d élements");
-      THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
-                                  ,SALOME::INTERNAL_ERROR);
-    }
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for connectivities
  */
 //=============================================================================
-Engines::long_array *  SMESH_MEDMesh_i::getConnectivity(SALOME_MED::medModeSwitch typeSwitch,
-                                                       SALOME_MED::medConnectivity mode, 
-                                                       SALOME_MED::medEntityMesh entity, 
-                                                       SALOME_MED::medGeometryElement geomElement)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+SMESH_MEDMesh_i::getConnectivity(SALOME_MED::medModeSwitch typeSwitch,
+                                SALOME_MED::medConnectivity mode,
+                                SALOME_MED::medEntityMesh entity,
+                                SALOME_MED::medGeometryElement geomElement)
+  throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  if (mode != SALOME_MED::MED_NODAL)
-    THROW_SALOME_CORBA_EXCEPTION("Not Implemented",\
-                                SALOME::BAD_PARAM);
-  if (typeSwitch == SALOME_MED::MED_NO_INTERLACE)
-    THROW_SALOME_CORBA_EXCEPTION("Not Yet Implemented",\
-                                SALOME::BAD_PARAM);
-  if (! _compte)
-    calculeNbElts();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       if (mode != SALOME_MED::MED_NODAL)
+               THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
+       if (typeSwitch == SALOME_MED::MED_NO_INTERLACE)
+               THROW_SALOME_CORBA_EXCEPTION("Not Yet Implemented", SALOME::BAD_PARAM);
+       if (!_compte)
+               calculeNbElts();
 
-  // Faut-il renvoyer un pointeur vide ???
-  if ( _mapIndToSeqElts.find(geomElement)!=_mapIndToSeqElts.end())
-    THROW_SALOME_CORBA_EXCEPTION("No Such Element in the mesh"\
-                                ,SALOME::BAD_PARAM);
+       // Faut-il renvoyer un pointeur vide ???
+       if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end())
+               THROW_SALOME_CORBA_EXCEPTION("No Such Element in the mesh",
+                       SALOME::BAD_PARAM);
 
-  int index=_mapIndToSeqElts[geomElement];
-  return _seq_elemId[index]._retn();
+       int index = _mapIndToSeqElts[geomElement];
+
+       return _seq_elemId[index]._retn();
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for connectivities
  */
 //=============================================================================
-Engines::long_array* SMESH_MEDMesh_i::getConnectivityIndex(SALOME_MED::medConnectivity mode, 
-                                                          SALOME_MED::medEntityMesh entity) 
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+SMESH_MEDMesh_i::getConnectivityIndex(SALOME_MED::medConnectivity mode,
+                                     SALOME_MED::medEntityMesh entity)
+  throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: Find an element corresponding to the given connectivity
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getElementNumber(SALOME_MED::medConnectivity mode,
-                                             SALOME_MED::medEntityMesh entity,
-                                             SALOME_MED::medGeometryElement type,
-                                             const Engines::long_array & connectivity
-) 
-  throw (SALOME::SALOME_Exception)
+CORBA::Long
+SMESH_MEDMesh_i::getElementNumber(SALOME_MED::medConnectivity mode,
+                                 SALOME_MED::medEntityMesh entity,
+                                 SALOME_MED::medGeometryElement type,
+                                 const SALOME_MED::long_array & connectivity)
+  throw(SALOME::SALOME_Exception)
 {
-  const char * LOC = "getElementNumber ";
-  MESSAGE(LOC<<"Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return -1;
+       const char *LOC = "getElementNumber ";
+       MESSAGE(LOC << "Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return -1;
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for Ascendant connectivities
  * not implemented for MED_ALL_ENTITIES and MED_MAILLE
  */
 //=============================================================================
-Engines::long_array* SMESH_MEDMesh_i::getReverseConnectivity(SALOME_MED::medConnectivity mode)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+       SMESH_MEDMesh_i::getReverseConnectivity(SALOME_MED::
+       medConnectivity mode) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: Accessor for connectivities
  */
 //=============================================================================
-Engines::long_array* SMESH_MEDMesh_i::getReverseConnectivityIndex(SALOME_MED::medConnectivity mode)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+       SMESH_MEDMesh_i::getReverseConnectivityIndex(SALOME_MED::
+       medConnectivity mode) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns number of families within the mesh
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfFamilies(SALOME_MED::medEntityMesh entity)
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfFamilies(SALOME_MED::
+       medEntityMesh entity) throw(SALOME::SALOME_Exception)
 {
-  if (_creeFamily == false)
-    createFamilies();
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  return _families.size();
+       if (_creeFamily == false)
+               createFamilies();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       return _families.size();
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns number of groups within the mesh
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfGroups(SALOME_MED::medEntityMesh entity) 
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfGroups(SALOME_MED::medEntityMesh entity)
+throw(SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  MESSAGE(" Pas d implementation des groupes dans SMESH");
-  return 0;
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       MESSAGE(" Pas d implementation des groupes dans SMESH");
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns references for families within the mesh
  */
 //=============================================================================
-SALOME_MED::Family_array * SMESH_MEDMesh_i::getFamilies(SALOME_MED::medEntityMesh entity) 
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::Family_array *
+       SMESH_MEDMesh_i::getFamilies(SALOME_MED::
+       medEntityMesh entity) throw(SALOME::SALOME_Exception)
 {
-  if (_creeFamily == false)
-    createFamilies();
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  SALOME_MED::Family_array_var myseq = new SALOME_MED::Family_array;
-  int nbfam= _families.size();
-  myseq->length(nbfam);
-  int i = 0;
-  vector<SALOME_MED::FAMILY_ptr>::iterator it;
-  for (it=_families.begin();it!=_families.end();it++)
-    {
-      myseq[i++]=*it;
-    };
-  return myseq._retn();
+       if (_creeFamily == false)
+               createFamilies();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       SALOME_MED::Family_array_var myseq = new SALOME_MED::Family_array;
+       int nbfam = _families.size();
+       myseq->length(nbfam);
+       int i = 0;
+       vector < SALOME_MED::FAMILY_ptr >::iterator it;
+       for (it = _families.begin(); it != _families.end(); it++)
+       {
+               myseq[i++] = *it;
+       };
+       return myseq._retn();
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns references for family i within the mesh
  */
 //=============================================================================
-SALOME_MED::FAMILY_ptr SMESH_MEDMesh_i::getFamily(SALOME_MED::medEntityMesh entity,
-                                                 CORBA::Long i) 
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::FAMILY_ptr SMESH_MEDMesh_i::getFamily(SALOME_MED::
+       medEntityMesh entity, CORBA::Long i) throw(SALOME::SALOME_Exception)
 {
-  if (_creeFamily == false)
-    createFamilies();
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
+       if (_creeFamily == false)
+               createFamilies();
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
 
-  SCRUTE(_families[i]->getName());
-  MESSAGE ( " SMESH_MEDMesh_i::getFamily " << i )
-  return _families[i];
+       SCRUTE(_families[i]->getName());
+       MESSAGE(" SMESH_MEDMesh_i::getFamily " << i) return _families[i];
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns references for groups within the mesh
  */
 //=============================================================================
-SALOME_MED::Group_array *  SMESH_MEDMesh_i::getGroups(SALOME_MED::medEntityMesh entity) 
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::Group_array *
+       SMESH_MEDMesh_i::getGroups(SALOME_MED::medEntityMesh entity) throw(SALOME::
+       SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  MESSAGE(" Pas d implementation des groupes dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("No group implementation"\
-                              ,SALOME::BAD_PARAM);
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       MESSAGE(" Pas d implementation des groupes dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("No group implementation", SALOME::BAD_PARAM);
 }
+
 //=============================================================================
 /*!
  * CORBA: Returns references for group i within the mesh
  */
 //=============================================================================
-SALOME_MED::GROUP_ptr SMESH_MEDMesh_i::getGroup(SALOME_MED::medEntityMesh entity,
-                                               CORBA::Long i) 
+SALOME_MED::GROUP_ptr SMESH_MEDMesh_i::getGroup(SALOME_MED::
+       medEntityMesh entity, CORBA::Long i) throw(SALOME::SALOME_Exception)
+{
+       if (_mesh_i == 0)
+               THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+                       SALOME::INTERNAL_ERROR);
+       MESSAGE(" Pas d implementation des groupes dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("No group implementation", SALOME::BAD_PARAM);
+}
+//=============================================================================
+/*!
+ * CORBA: Returns references for the global numbering index
+ */
+//=============================================================================
+SALOME_MED::long_array*
+SMESH_MEDMesh_i::getGlobalNumberingIndex(SALOME_MED::medEntityMesh entity)
   throw (SALOME::SALOME_Exception)
 {
-  if (_mesh_i == 0)
-    THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
-                                SALOME::INTERNAL_ERROR);
-  MESSAGE(" Pas d implementation des groupes dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("No group implementation"\
-                              ,SALOME::BAD_PARAM);
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return NULL;
 }
 //=============================================================================
 /*!
- * CORBA: 
+ * CORBA: Returns references for the support of boundary elements of type
+ * entity
  */
 //=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getVolume(SALOME_MED::SUPPORT_ptr mySupport)
+SALOME_MED::SUPPORT_ptr
+SMESH_MEDMesh_i::getBoundaryElements(SALOME_MED::medEntityMesh entity)
   throw (SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return NULL;
 }
 //=============================================================================
 /*!
- * CORBA: 
+ * CORBA: Returns references for the support of the skin of the support
+ * mySupport3D
  */
 //=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getArea(SALOME_MED::SUPPORT_ptr mySupport)
+SALOME_MED::SUPPORT_ptr
+SMESH_MEDMesh_i::getSkin(SALOME_MED::SUPPORT_ptr mySupport3D)
   throw (SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return NULL;
 }
 //=============================================================================
 /*!
  * CORBA: 
  */
 //=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getLength(SALOME_MED::SUPPORT_ptr mySupport)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getVolume(SALOME_MED::
+       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: 
  */
 //=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNormal(SALOME_MED::SUPPORT_ptr mySupport)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getArea(SALOME_MED::
+       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: 
  */
 //=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getBarycenter(SALOME_MED::SUPPORT_ptr mySupport)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getLength(SALOME_MED::
+       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Pas Implemente dans SMESH");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: 
  */
 //=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNeighbourhood(SALOME_MED::SUPPORT_ptr mySupport)
-  throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNormal(SALOME_MED::
+       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
+{
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
+}
+
+//=============================================================================
+/*!
+ * CORBA: 
+ */
+//=============================================================================
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getBarycenter(SALOME_MED::
+       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
+{
+       MESSAGE("Pas Implemente dans SMESH");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
+}
+
+//=============================================================================
+/*!
+ * CORBA: 
+ */
+//=============================================================================
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNeighbourhood(SALOME_MED::
+       SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Non Implemente");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Non Implemente");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * CORBA: add the Mesh in the StudyManager 
@@ -706,313 +826,384 @@ SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNeighbourhood(SALOME_MED::SUPPORT_ptr
  */
 //=============================================================================
 void SMESH_MEDMesh_i::addInStudy(SALOMEDS::Study_ptr myStudy,
-                                SALOME_MED::MESH_ptr myIor)
-  throw (SALOME::SALOME_Exception)
+       SALOME_MED::MESH_ptr myIor) throw(SALOME::SALOME_Exception)
 {
-  BEGIN_OF("MED_Mesh_i::addInStudy");
-  if ( _meshId != "" )
-    {
-      MESSAGE("Mesh already in Study");
-      THROW_SALOME_CORBA_EXCEPTION("Mesh already in Study", \
-                                  SALOME::BAD_PARAM);
-    };
-
-  /*
-    SALOMEDS::StudyBuilder_var myBuilder = myStudy->NewBuilder();
-
-    // Create SComponent labelled 'MED' if it doesn't already exit
-    SALOMEDS::SComponent_var medfather = myStudy->FindComponent("MED");
-    if ( CORBA::is_nil(medfather) ) 
-    {
-    MESSAGE("Add Component MED");
-    medfather = myBuilder->NewComponent("MED");
-    //myBuilder->AddAttribute (medfather,SALOMEDS::Name,"MED");
-    SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
-                      myBuilder->FindOrCreateAttribute(medfather, "AttributeName"));
-    aName->SetValue("MED");
-
-    myBuilder->DefineComponentInstance(medfather,myIor);
-
-    } ;
-
-    MESSAGE("Add a mesh Object under MED");
-    myBuilder->NewCommand();
-    SALOMEDS::SObject_var newObj = myBuilder->NewObject(medfather);
-
-    ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-    ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
-    CORBA::ORB_var &orb = init(0,0);
-    string iorStr = orb->object_to_string(myIor);
-    //myBuilder->AddAttribute(newObj,SALOMEDS::IOR,iorStr.c_str());
-    SALOMEDS::AttributeIOR_var aIOR = SALOMEDS::AttributeIOR::_narrow(
-                      myBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"));
-    aIOR->SetValue(iorStr.c_str());
-
-    //myBuilder->AddAttribute(newObj,SALOMEDS::Name,_mesh_i->getName().c_str());
-    SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
-                      myBuilder->FindOrCreateAttribute(newObj, "AttributeName"));
-    aName->SetValue(_mesh_i->getName().c_str());
-
-    _meshId = newObj->GetID();
-    myBuilder->CommitCommand();
+       BEGIN_OF("MED_Mesh_i::addInStudy");
+       if (_meshId != "")
+       {
+               MESSAGE("Mesh already in Study");
+               THROW_SALOME_CORBA_EXCEPTION("Mesh already in Study",
+                       SALOME::BAD_PARAM);
+       };
 
-  */
-  END_OF("Mesh_i::addInStudy(SALOMEDS::Study_ptr myStudy)");
+       /*
+        * SALOMEDS::StudyBuilder_var myBuilder = myStudy->NewBuilder();
+        * 
+        * // Create SComponent labelled 'MED' if it doesn't already exit
+        * SALOMEDS::SComponent_var medfather = myStudy->FindComponent("MED");
+        * if ( CORBA::is_nil(medfather) ) 
+        * {
+        * MESSAGE("Add Component MED");
+        * medfather = myBuilder->NewComponent("MED");
+        * //myBuilder->AddAttribute (medfather,SALOMEDS::Name,"MED");
+        * SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
+        * myBuilder->FindOrCreateAttribute(medfather, "AttributeName"));
+        * aName->SetValue("MED");
+        * 
+        * myBuilder->DefineComponentInstance(medfather,myIor);
+        * 
+        * } ;
+        * 
+        * MESSAGE("Add a mesh Object under MED");
+        * myBuilder->NewCommand();
+        * SALOMEDS::SObject_var newObj = myBuilder->NewObject(medfather);
+        * 
+        * ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+        * ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
+        * CORBA::ORB_var &orb = init(0,0);
+        * string iorStr = orb->object_to_string(myIor);
+        * //myBuilder->AddAttribute(newObj,SALOMEDS::IOR,iorStr.c_str());
+        * SALOMEDS::AttributeIOR_var aIOR = SALOMEDS::AttributeIOR::_narrow(
+        * myBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"));
+        * aIOR->SetValue(iorStr.c_str());
+        * 
+        * //myBuilder->AddAttribute(newObj,SALOMEDS::Name,_mesh_i->getName().c_str());
+        * SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
+        * myBuilder->FindOrCreateAttribute(newObj, "AttributeName"));
+        * aName->SetValue(_mesh_i->getName().c_str());
+        * 
+        * _meshId = newObj->GetID();
+        * myBuilder->CommitCommand();
+        * 
+        */
+       END_OF("Mesh_i::addInStudy(SALOMEDS::Study_ptr myStudy)");
 }
+
 //=============================================================================
 /*!
  * CORBA: write mesh in a med file
  */
 //=============================================================================
-void SMESH_MEDMesh_i::write(CORBA::Long i, const char* driverMeshName)              
-  throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::write(CORBA::Long i, const char *driverMeshName)
+throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Non Implemente");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
+       MESSAGE("Non Implemente");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
 }
+
 //=============================================================================
 /*!
  * CORBA: read mesh in a med file
  */
 //=============================================================================
-void SMESH_MEDMesh_i::read(CORBA::Long i)           
-  throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::read(CORBA::Long i) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Non Implemente");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
+       MESSAGE("Non Implemente");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
 }
+
 //=============================================================================
 /*!
  * CORBA : release driver
  */
 //=============================================================================
-void SMESH_MEDMesh_i::rmDriver(CORBA::Long i)       
-  throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::rmDriver(CORBA::Long i) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Non Implemente");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
+       MESSAGE("Non Implemente");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
 }
+
 //=============================================================================
 /*!
  * CORBA : attach driver
  */
 //=============================================================================
-CORBA::Long SMESH_MEDMesh_i::addDriver(SALOME_MED::medDriverTypes driverType, 
-                                      const char* fileName, const char* meshName)
-  throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::addDriver(SALOME_MED::medDriverTypes driverType,
+       const char *fileName, const char *meshName) throw(SALOME::SALOME_Exception)
 {
-  MESSAGE("Non Implemente");
-  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
-                              ,SALOME::BAD_PARAM);
-  return 0;
+       MESSAGE("Non Implemente");
+       THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+       return 0;
 }
+
 //=============================================================================
 /*!
  * Calcule le Nb d'elements par entite geometrique
  */
 //=============================================================================
-void SMESH_MEDMesh_i::calculeNbElts()
-  throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception)
 {
-  if (! _compte)
-    {
-      _compte=true;
+       if (!_compte)
+       {
+               _compte = true;
 
-      _mapNbTypes[SALOME_MED::MED_NODE]=1;
-      // On compte les aretes MED_SEG2 ou MED_SEG3
-      // On range les elements dans  les vecteurs correspondants 
+               _mapNbTypes[SALOME_MED::MED_NODE] = 1;
+               // On compte les aretes MED_SEG2 ou MED_SEG3
+               // On range les elements dans  les vecteurs correspondants 
 
-      _mapIndToSeqElts[SALOME_MED::MED_SEG2]=_indexElts++;
-      _mapIndToSeqElts[SALOME_MED::MED_SEG3]=_indexElts++;
-      _mapIndToVectTypes[SALOME_MED::MED_EDGE]=_indexEnts++;
+               _mapIndToSeqElts[SALOME_MED::MED_SEG2] = _indexElts++;
+               _mapIndToSeqElts[SALOME_MED::MED_SEG3] = _indexElts++;
+               _mapIndToVectTypes[SALOME_MED::MED_EDGE] = _indexEnts++;
 
-      int trouveSeg2=0; 
-      int trouveSeg3=0; 
-      SALOME_MED::medGeometryElement medElement;
-      SMDS_MeshEdgesIterator itEdges(_meshDS);
-      for (;itEdges.More();itEdges.Next()) 
-       {
-         const Handle(SMDS_MeshElement)& elem = itEdges.Value();
-         int nb_of_nodes = elem->NbNodes();
-
-         switch (nb_of_nodes) 
-           {
-           case 2 : 
-             {
-               medElement=SALOME_MED::MED_SEG2;
-               if (trouveSeg2==0)
-                 {
-                   trouveSeg2=1;
-                   _TypesId[SALOME_MED::MED_EDGE].push_back(SALOME_MED::MED_SEG2);
-
-                 }
-               break;
-             }
-           case 3 : 
-             {
-               medElement=SALOME_MED::MED_SEG3;
-               if (trouveSeg3==0)
-                 {
-                   trouveSeg3=1;
-                   _TypesId[SALOME_MED::MED_EDGE].push_back(SALOME_MED::MED_SEG3);
-                 }
-               break;
-             }
-           }
-         int index=_mapIndToSeqElts[medElement];
-         SCRUTE(index);
-         // Traitement de l arete
-         int longueur=_seq_elemId[index]->length();
-         _seq_elemId[index]->length(longueur + nb_of_nodes);
-
-         for (int k=0; k<nb_of_nodes; k++)
-           {
-             _seq_elemId[index][longueur+k]=elem->GetConnection(k+1) +1;
-           }
-       }
+               int trouveSeg2 = 0;
+               int trouveSeg3 = 0;
+               SALOME_MED::medGeometryElement medElement;
 
-      _mapNbTypes[SALOME_MED::MED_EDGE]=trouveSeg2 + trouveSeg3;
+               SMDS_Iterator<const SMDS_MeshEdge*> * itEdges=_meshDS->edgesIterator();
+               while(itEdges->more())
+               {
+                       const SMDS_MeshEdge* elem = itEdges->next();
+                       int nb_of_nodes = elem->NbNodes();
 
-      // On compte les faces MED_TRIA3, MED_HEXA8, MED_TRIA6
-      // On range les elements dans  les vecteurs correspondants 
-      int trouveTria3=0; 
-      int trouveTria6=0; 
-      int trouveQuad4=0; 
+                       switch (nb_of_nodes)
+                       {
+                       case 2:
+                       {
+                               medElement = SALOME_MED::MED_SEG2;
+                               if (trouveSeg2 == 0)
+                               {
+                                       trouveSeg2 = 1;
+                                       _TypesId[SALOME_MED::MED_EDGE].
+                                               push_back(SALOME_MED::MED_SEG2);
+                               }
+                               break;
+                       }
+                       case 3:
+                       {
+                               medElement = SALOME_MED::MED_SEG3;
+                               if (trouveSeg3 == 0)
+                               {
+                                       trouveSeg3 = 1;
+                                       _TypesId[SALOME_MED::MED_EDGE].
+                                               push_back(SALOME_MED::MED_SEG3);
+                               }
+                               break;
+                       }
+                       }
+                       int index = _mapIndToSeqElts[medElement];
+                       SCRUTE(index);
+                       // Traitement de l arete
 
-      _mapIndToSeqElts[SALOME_MED::MED_TRIA3]=_indexElts++;
-      _mapIndToSeqElts[SALOME_MED::MED_TRIA6]=_indexElts++;
-      _mapIndToSeqElts[SALOME_MED::MED_QUAD4]=_indexElts++;
-      _mapIndToVectTypes[SALOME_MED::MED_FACE]=_indexEnts++;
+                       int longueur = _seq_elemId[index]->length();
+                       _seq_elemId[index]->length(longueur + nb_of_nodes);
 
-      SMDS_MeshFacesIterator itFaces(_meshDS);
-      for (;itFaces.More();itFaces.Next()) 
-       {
+                       SMDS_Iterator<const SMDS_MeshNode*> * itn=_meshDS->nodesIterator();
 
-         const Handle(SMDS_MeshElement)& elem = itFaces.Value();
-         int nb_of_nodes = elem->NbNodes();
-
-         switch (nb_of_nodes) 
-           {
-           case 3 : 
-             {
-               medElement=SALOME_MED::MED_TRIA3;
-               if (trouveTria3==0)
-                 {
-                   trouveTria3=1;
-                   _TypesId[SALOME_MED::MED_FACE].push_back(SALOME_MED::MED_TRIA3);
-                 }
-               break;
-             }
-           case 4 : 
-             {
-               medElement=SALOME_MED::MED_QUAD4;
-               if (trouveQuad4==0)
-                 {
-                   trouveQuad4=1;
-                   _TypesId[SALOME_MED::MED_FACE].push_back(SALOME_MED::MED_QUAD4);
-                 }
-               break;
-             }
-           case 6 : 
-             {
-               medElement=SALOME_MED::MED_TRIA6;
-               if (trouveTria6==0)
-                 {
-                   trouveTria6=1;
-                   _TypesId[SALOME_MED::MED_FACE].push_back(SALOME_MED::MED_TRIA6);
-                 }
-               break;
-             }
-           }
-         int index=_mapIndToSeqElts[medElement];
-         SCRUTE(index);
-
-         // Traitement de la face
-         // Attention La numérotation des noeuds Med commence a 1
-
-
-         int longueur = _seq_elemId[index]->length();
-         _seq_elemId[index]->length(longueur+nb_of_nodes);
-
-         for (int k=0; k<nb_of_nodes; k++)
-           {
-             _seq_elemId[index][longueur+k]=elem->GetConnection(k+1) +1;
-           }
+                       for(int k=0; itn->more(); k++)
+                               _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
+                       delete itn;
+               }
+               delete itEdges;
 
-       }
-      _mapNbTypes[SALOME_MED::MED_FACE]=trouveTria3 + trouveTria6 + trouveQuad4;
+               _mapNbTypes[SALOME_MED::MED_EDGE] = trouveSeg2 + trouveSeg3;
 
-      _mapIndToSeqElts[SALOME_MED::MED_HEXA8]=_indexElts++;
-      _mapIndToVectTypes[SALOME_MED::MED_CELL]=_indexEnts++;
-      int index=_mapIndToSeqElts[medElement];
+               // On compte les faces MED_TRIA3, MED_HEXA8, MED_TRIA6
+               // On range les elements dans  les vecteurs correspondants 
+               int trouveTria3 = 0;
+               int trouveTria6 = 0;
+               int trouveQuad4 = 0;
 
-      int trouveHexa8=0;
-      SMDS_MeshVolumesIterator itVolumes(_meshDS);
-      for (;itVolumes.More();itVolumes.Next()) 
-       {
-         const Handle(SMDS_MeshElement)& elem = itVolumes.Value();
-
-         int nb_of_nodes = elem->NbNodes();
-         medElement=SALOME_MED::MED_HEXA8;
-         ASSERT(nb_of_nodes=8);
-
-         if (trouveHexa8 == 0)
-           {
-             trouveHexa8=1;
-             _TypesId[SALOME_MED::MED_CELL].push_back(SALOME_MED::MED_HEXA8);
-           };
-         // Traitement de la maille
-         int longueur=_seq_elemId[index]->length();
-         _seq_elemId[index]->length(longueur+nb_of_nodes);
-
-         for (int k=0; k<nb_of_nodes; k++)
-           {
-             _seq_elemId[index][longueur+k]=elem->GetConnection(k+1) +1;
-           }
-
-        }
-
-      _mapNbTypes[SALOME_MED::MED_CELL]=trouveHexa8;
-      _mapNbTypes[SALOME_MED::MED_ALL_ENTITIES]
-       =trouveHexa8 + trouveTria3 + trouveTria6 + trouveQuad4 + trouveSeg2 + trouveSeg3 ;
-    } /* fin du _compte */
+               _mapIndToSeqElts[SALOME_MED::MED_TRIA3] = _indexElts++;
+               _mapIndToSeqElts[SALOME_MED::MED_TRIA6] = _indexElts++;
+               _mapIndToSeqElts[SALOME_MED::MED_QUAD4] = _indexElts++;
+               _mapIndToVectTypes[SALOME_MED::MED_FACE] = _indexEnts++;
+
+               SMDS_Iterator<const SMDS_MeshFace*> * itFaces=_meshDS->facesIterator();
+               while(itFaces->more())
+               {
+                       const SMDS_MeshFace * elem = itFaces->next();
+                       int nb_of_nodes = elem->NbNodes();
+
+                       switch (nb_of_nodes)
+                       {
+                       case 3:
+                       {
+                               medElement = SALOME_MED::MED_TRIA3;
+                               if (trouveTria3 == 0)
+                               {
+                                       trouveTria3 = 1;
+                                       _TypesId[SALOME_MED::MED_FACE].
+                                               push_back(SALOME_MED::MED_TRIA3);
+                               }
+                               break;
+                       }
+                       case 4:
+                       {
+                               medElement = SALOME_MED::MED_QUAD4;
+                               if (trouveQuad4 == 0)
+                               {
+                                       trouveQuad4 = 1;
+                                       _TypesId[SALOME_MED::MED_FACE].
+                                               push_back(SALOME_MED::MED_QUAD4);
+                               }
+                               break;
+                       }
+                       case 6:
+                       {
+                               medElement = SALOME_MED::MED_TRIA6;
+                               if (trouveTria6 == 0)
+                               {
+                                       trouveTria6 = 1;
+                                       _TypesId[SALOME_MED::MED_FACE].
+                                               push_back(SALOME_MED::MED_TRIA6);
+                               }
+                               break;
+                       }
+                       }
+                       int index = _mapIndToSeqElts[medElement];
+                       SCRUTE(index);
+
+                       // Traitement de la face
+                       // Attention La numérotation des noeuds Med commence a 1
+
+                       int longueur = _seq_elemId[index]->length();
+                       _seq_elemId[index]->length(longueur + nb_of_nodes);
+
+                       SMDS_Iterator<const SMDS_MeshNode*> * itn=_meshDS->nodesIterator();
+
+                       for(int k=0; itn->more(); k++)
+                               _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
+                       delete itn;
+               } //itFaces
+               delete itFaces;
+
+               _mapNbTypes[SALOME_MED::MED_FACE] =
+                       trouveTria3 + trouveTria6 + trouveQuad4;
+
+               _mapIndToSeqElts[SALOME_MED::MED_HEXA8] = _indexElts++;
+               _mapIndToVectTypes[SALOME_MED::MED_CELL] = _indexEnts++;
+               int index = _mapIndToSeqElts[medElement];
+
+               int trouveHexa8 = 0;
+
+               SMDS_Iterator<const SMDS_MeshVolume*> * itVolumes=_meshDS->volumesIterator();
+               while(itVolumes->more())
+               {
+                       const SMDS_MeshVolume * elem = itVolumes->next();
+
+                       int nb_of_nodes = elem->NbNodes();
+                       medElement = SALOME_MED::MED_HEXA8;
+                       ASSERT(nb_of_nodes = 8);
+
+                       if (trouveHexa8 == 0)
+                       {
+                               trouveHexa8 = 1;
+                               _TypesId[SALOME_MED::MED_CELL].push_back(SALOME_MED::MED_HEXA8);
+                       };
+                       // Traitement de la maille
+                       int longueur = _seq_elemId[index]->length();
+                       _seq_elemId[index]->length(longueur + nb_of_nodes);
+
+                       SMDS_Iterator<const SMDS_MeshNode*> * itn=_meshDS->nodesIterator();
+                       for(int k=0; itn->more(); k++)
+                               _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
+                       delete itn;
+               }
+               delete itVolumes;
+
+               _mapNbTypes[SALOME_MED::MED_CELL] = trouveHexa8;
+               _mapNbTypes[SALOME_MED::MED_ALL_ENTITIES]
+                       =
+                       trouveHexa8 + trouveTria3 + trouveTria6 + trouveQuad4 + trouveSeg2 +
+                       trouveSeg3;
+       }// fin du _compte
 };
+
 //=============================================================================
 /*!
  * Creation des familles
  */
 //=============================================================================
-void SMESH_MEDMesh_i::createFamilies()
-  throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::createFamilies() throw(SALOME::SALOME_Exception)
 {
-  string famDes=("Je ne sais pas");
-  string famName0="Famille_";
-  string famName;
-  char numero[10];
-
-  if ( _creeFamily == false)
-    {
-      _creeFamily = true;
-      SMESH_subMesh_i* subMeshServant;
-
-      map<int, SMESH_subMesh_i*>::iterator it;
-      for (it = _mesh_i->_mapSubMesh_i.begin(); it !=  _mesh_i->_mapSubMesh_i.end(); it++) {
-       SMESH_subMesh_i* submesh_i = (*it).second;
-       int famIdent = (*it).first;
-
-       ASSERT (famIdent<999999999);
-       sprintf(numero,"%d\n",famIdent);
-       famName=famName0 + numero;
-
-       SMESH_MEDFamily_i * famservant= new SMESH_MEDFamily_i(famIdent, submesh_i,
-                                                             famName, famDes, SALOME_MED::MED_NODE);
-       SALOME_MED::FAMILY_ptr famille = 
-         SALOME_MED::FAMILY::_narrow(famservant->POA_SALOME_MED::FAMILY::_this());
-       _families.push_back(famille);
-      }
-    } /* fin du _compte */
+       string famDes = ("Je ne sais pas");
+       string famName0 = "Famille_";
+       string famName;
+       char numero[10];
+
+       if (_creeFamily == false)
+       {
+               _creeFamily = true;
+               SMESH_subMesh_i *subMeshServant;
+
+               map < int, SMESH_subMesh_i * >::iterator it;
+               for (it = _mesh_i->_mapSubMesh_i.begin();
+                       it != _mesh_i->_mapSubMesh_i.end(); it++)
+               {
+                       SMESH_subMesh_i *submesh_i = (*it).second;
+                       int famIdent = (*it).first;
+
+                       ASSERT(famIdent < 999999999);
+                       sprintf(numero, "%d\n", famIdent);
+                       famName = famName0 + numero;
+
+                       SMESH_MEDFamily_i *famservant =
+                               new SMESH_MEDFamily_i(famIdent, submesh_i,
+                               famName, famDes, SALOME_MED::MED_NODE);
+                       SALOME_MED::FAMILY_ptr famille =
+                               SALOME_MED::FAMILY::_narrow(famservant->
+                               POA_SALOME_MED::FAMILY::_this());
+                       _families.push_back(famille);
+               }
+       }
 };
+//=============================================================================
+/*!
+ * Gives informations of the considered mesh.
+ */
+//=============================================================================
+SALOME_MED::MESH::meshInfos * SMESH_MEDMesh_i::getMeshGlobal()
+  throw (SALOME::SALOME_Exception)
+{
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return NULL;
+}
+//=============================================================================
+/*!
+ * Gives informations on coordinates of the considered mesh.
+ */
+//=============================================================================
+SALOME_MED::MESH::coordinateInfos * SMESH_MEDMesh_i::getCoordGlobal()
+  throw (SALOME::SALOME_Exception)
+{
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return NULL;
+}
+//=============================================================================
+/*!
+ * Gives informations on connectivities of the considered mesh for the entity
+ * entity.
+ */
+//=============================================================================
+SALOME_MED::MESH::connectivityInfos *
+SMESH_MEDMesh_i::getConnectGlobal(SALOME_MED::medEntityMesh entity)
+  throw (SALOME::SALOME_Exception)
+{
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
 
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return NULL;
+}
+//=============================================================================
+/*!
+ * Gives the type of the element number of entity entity
+ */
+//=============================================================================
+SALOME_MED::medGeometryElement
+SMESH_MEDMesh_i::getElementType(SALOME_MED::medEntityMesh entity,
+                               CORBA::Long number)
+  throw (SALOME::SALOME_Exception)
+{
+  MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+  THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+  return (SALOME_MED::medGeometryElement) 0;
+}