Salome HOME
[bos #24169] [CEA 24168] Error in AffectedElemGroupsInRegion
[modules/smesh.git] / src / SMESH_I / SMESH_MeshEditor_i.cxx
index 5ae3c6a6e0cef61d72acfa2773dd632497943ff9..d96c5c99e22847b2bf173ea69fe6865630028480 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -135,9 +135,9 @@ namespace MeshEditor_I {
     {
       // copy element nodes
       int anElemNbNodes = anElem->NbNodes();
-      vector< int > anElemNodesID( anElemNbNodes ) ;
+      vector< smIdType > anElemNodesID( anElemNbNodes ) ;
       SMDS_ElemIteratorPtr itElemNodes = anElem->nodesIterator();
-      for ( int i = 0; itElemNodes->more(); i++)
+      for ( smIdType i = 0; itElemNodes->more(); i++)
       {
         const SMDS_MeshNode* anElemNode = cast2Node( itElemNodes->next() );
         Copy( anElemNode );
@@ -193,8 +193,8 @@ namespace MeshEditor_I {
     //!< Delete theNodeSearcher
     static void Delete()
     {
-      if ( theNodeSearcher )    delete theNodeSearcher;    theNodeSearcher    = 0;
-      if ( theElementSearcher ) delete theElementSearcher; theElementSearcher = 0;
+      if ( theNodeSearcher )    { delete theNodeSearcher; }    theNodeSearcher    = 0;
+      if ( theElementSearcher ) { delete theElementSearcher; } theElementSearcher = 0;
     }
     typedef map < int, SMESH_subMesh * > TDependsOnMap;
     //!< The meshod called by submesh: do my main job
@@ -264,11 +264,11 @@ namespace MeshEditor_I {
    */
   //================================================================================
 
-  void arrayToSet(const SMESH::long_array & IDs,
-                  const SMESHDS_Mesh*       aMesh,
-                  TIDSortedElemSet&         aMap,
-                  const SMDSAbs_ElementType aType = SMDSAbs_All,
-                  SMDS_MeshElement::Filter* aFilter = NULL)
+  void arrayToSet(const SMESH::smIdType_array & IDs,
+                  const SMESHDS_Mesh*           aMesh,
+                  TIDSortedElemSet&             aMap,
+                  const SMDSAbs_ElementType     aType = SMDSAbs_All,
+                  SMDS_MeshElement::Filter*     aFilter = NULL)
   {
     SMDS_MeshElement::NonNullFilter filter1;
     SMDS_MeshElement::TypeFilter    filter2( aType );
@@ -279,13 +279,13 @@ namespace MeshEditor_I {
     SMDS_MeshElement::Filter & filter = *aFilter;
 
     if ( aType == SMDSAbs_Node )
-      for ( CORBA::ULong i = 0; i < IDs.length(); i++ ) {
+      for ( SMESH::smIdType i = 0; i < IDs.length(); i++ ) {
         const SMDS_MeshElement * elem = aMesh->FindNode( IDs[i] );
         if ( filter( elem ))
           aMap.insert( aMap.end(), elem );
       }
     else
-      for ( CORBA::ULong i = 0; i<IDs.length(); i++) {
+      for ( SMESH::smIdType i = 0; i<IDs.length(); i++) {
         const SMDS_MeshElement * elem = aMesh->FindElement( IDs[i] );
         if ( filter( elem ))
           aMap.insert( aMap.end(), elem );
@@ -314,7 +314,7 @@ namespace MeshEditor_I {
     else
     {
       SMESH::array_of_ElementType_var types = theObject->GetTypes();
-      SMESH::long_array_var     aElementsId = theObject->GetIDs();
+      SMESH::smIdType_array_var aElementsId = theObject->GetIDs();
       if ( types->length() == 1 && types[0] == SMESH::NODE)
       {
         for ( CORBA::ULong i = 0; i < aElementsId->length(); i++ )
@@ -523,7 +523,6 @@ TPreviewMesh * SMESH_MeshEditor_i::getPreviewMesh(SMDSAbs_ElementType previewEle
 //================================================================================
 
 SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   const bool hasBadElems = ( getEditor().GetError() && getEditor().GetError()->HasBadElems() );
@@ -574,7 +573,7 @@ SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
          aMeshElem->nodeIterator() );
       while ( itElemNodes->more() ) {
         const SMDS_MeshNode* aMeshNode = itElemNodes->next();
-        int aNodeID = aMeshNode->GetID();
+        smIdType aNodeID = aMeshNode->GetID();
         TNodesMap::iterator anIter = nodesMap.find(aNodeID);
         if ( anIter == nodesMap.end() ) {
           // filling the nodes coordinates
@@ -616,11 +615,10 @@ SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
  */
 //================================================================================
 
-SMESH::long_array* SMESH_MeshEditor_i::GetLastCreatedNodes()
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType_array* SMESH_MeshEditor_i::GetLastCreatedNodes()
 {
   SMESH_TRY;
-  SMESH::long_array_var myLastCreatedNodes = new SMESH::long_array();
+  SMESH::smIdType_array_var myLastCreatedNodes = new SMESH::smIdType_array();
 
   const SMESH_SequenceOfElemPtr& aSeq = getEditor().GetLastCreatedNodes();
   myLastCreatedNodes->length( aSeq.size() );
@@ -639,11 +637,10 @@ SMESH::long_array* SMESH_MeshEditor_i::GetLastCreatedNodes()
  */
 //================================================================================
 
-SMESH::long_array* SMESH_MeshEditor_i::GetLastCreatedElems()
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType_array* SMESH_MeshEditor_i::GetLastCreatedElems()
 {
   SMESH_TRY;
-  SMESH::long_array_var myLastCreatedElems = new SMESH::long_array();
+  SMESH::smIdType_array_var myLastCreatedElems = new SMESH::smIdType_array();
 
   const SMESH_SequenceOfElemPtr& aSeq = getEditor().GetLastCreatedElems();
   myLastCreatedElems->length( aSeq.size() );
@@ -660,7 +657,7 @@ SMESH::long_array* SMESH_MeshEditor_i::GetLastCreatedElems()
 //purpose  : Clears sequences of last created elements and nodes 
 //=======================================================================
 
-void SMESH_MeshEditor_i::ClearLastCreated() throw (SALOME::SALOME_Exception)
+void SMESH_MeshEditor_i::ClearLastCreated()
 {
   SMESH_TRY;
   getEditor().ClearLastCreated();
@@ -675,7 +672,6 @@ void SMESH_MeshEditor_i::ClearLastCreated() throw (SALOME::SALOME_Exception)
 //=======================================================================
 
 SMESH::ComputeError* SMESH_MeshEditor_i::GetLastError()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH::ComputeError_var errOut = new SMESH::ComputeError;
@@ -708,16 +704,16 @@ SMESH::ComputeError* SMESH_MeshEditor_i::GetLastError()
 struct SMESH_MeshEditor_i::_IDSource : public virtual POA_SMESH::SMESH_IDSource,
                                        public virtual SALOME::GenericObj_i
 {
-  SMESH::long_array     _ids;
-  SMESH::ElementType    _type;
-  SMESH::SMESH_Mesh_ptr _mesh;
-  SMESH::long_array* GetIDs()      { return new SMESH::long_array( _ids ); }
-  SMESH::long_array* GetMeshInfo() { return 0; }
-  SMESH::long_array* GetNbElementsByType()
+  SMESH::smIdType_array     _ids;
+  SMESH::ElementType        _type;
+  SMESH::SMESH_Mesh_ptr     _mesh;
+  SMESH::smIdType_array*    GetIDs()      { return new SMESH::smIdType_array( _ids ); }
+  SMESH::smIdType_array* GetMeshInfo() { return 0; }
+  SMESH::smIdType_array* GetNbElementsByType()
   {
-    SMESH::long_array_var aRes = new SMESH::long_array();
+    SMESH::smIdType_array_var aRes = new SMESH::smIdType_array();
     aRes->length(SMESH::NB_ELEMENT_TYPES);
-    for (int i = 0; i < SMESH::NB_ELEMENT_TYPES; i++)
+    for (smIdType i = 0; i < SMESH::NB_ELEMENT_TYPES; i++)
       aRes[ i ] = ( i == _type ) ? _ids.length() : 0;
     return aRes._retn();  
   }
@@ -739,8 +735,8 @@ struct SMESH_MeshEditor_i::_IDSource : public virtual POA_SMESH::SMESH_IDSource,
   }
 };
 
-SMESH::SMESH_IDSource_ptr SMESH_MeshEditor_i::MakeIDSource(const SMESH::long_array& ids,
-                                                           SMESH::ElementType       type)
+SMESH::SMESH_IDSource_ptr SMESH_MeshEditor_i::MakeIDSource(const SMESH::smIdType_array& ids,
+                                                           SMESH::ElementType           type)
 {
   _IDSource* idSrc = new _IDSource;
   idSrc->_mesh = myMesh_i->_this();
@@ -759,12 +755,12 @@ bool SMESH_MeshEditor_i::IsTemporaryIDSource( SMESH::SMESH_IDSource_ptr& idSourc
   return SMESH::DownCast<SMESH_MeshEditor_i::_IDSource*>( idSource );
 }
 
-CORBA::Long* SMESH_MeshEditor_i::GetTemporaryIDs( SMESH::SMESH_IDSource_ptr& idSource,
-                                                  int&                       nbIds)
+SMESH::smIdType* SMESH_MeshEditor_i::GetTemporaryIDs( SMESH::SMESH_IDSource_ptr& idSource,
+                                                      SMESH::smIdType&           nbIds)
 {
   if ( _IDSource* tmpIdSource = SMESH::DownCast<SMESH_MeshEditor_i::_IDSource*>( idSource ))
   {
-    nbIds = (int) tmpIdSource->_ids.length();
+    nbIds = (SMESH::smIdType) tmpIdSource->_ids.length();
     return & tmpIdSource->_ids[0];
   }
   nbIds = 0;
@@ -786,15 +782,14 @@ CORBA::Long* SMESH_MeshEditor_i::GetTemporaryIDs( SMESH::SMESH_IDSource_ptr& idS
 //=============================================================================
 
 CORBA::Boolean
-SMESH_MeshEditor_i::RemoveElements(const SMESH::long_array & IDsOfElements)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::RemoveElements(const SMESH::smIdType_array & IDsOfElements)
 {
   SMESH_TRY;
   initData();
 
-  list< int > IdList;
+  list< smIdType > IdList;
 
-  for ( CORBA::ULong i = 0; i < IDsOfElements.length(); i++ )
+  for ( SMESH::smIdType i = 0; i < IDsOfElements.length(); i++ )
     IdList.push_back( IDsOfElements[i] );
 
   // Update Python script
@@ -816,14 +811,13 @@ SMESH_MeshEditor_i::RemoveElements(const SMESH::long_array & IDsOfElements)
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::RemoveNodes(const SMESH::long_array & IDsOfNodes)
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::RemoveNodes(const SMESH::smIdType_array & IDsOfNodes)
 {
   SMESH_TRY;
   initData();
 
-  list< int > IdList;
-  for ( CORBA::ULong i = 0; i < IDsOfNodes.length(); i++)
+  list< smIdType > IdList;
+  for ( SMESH::smIdType i = 0; i < IDsOfNodes.length(); i++)
     IdList.push_back( IDsOfNodes[i] );
 
   // Update Python script
@@ -844,8 +838,7 @@ CORBA::Boolean SMESH_MeshEditor_i::RemoveNodes(const SMESH::long_array & IDsOfNo
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::RemoveOrphanNodes()
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::RemoveOrphanNodes()
 {
   SMESH_TRY;
   initData();
@@ -859,11 +852,11 @@ CORBA::Long SMESH_MeshEditor_i::RemoveOrphanNodes()
   SMESH::Controls::Filter::GetElementsId( getMeshDS(), predicate, seq );
 
   // remove orphan nodes (if there are any)
-  list< int > IdList( seq.begin(), seq.end() );
+  list< smIdType > IdList( seq.begin(), seq.end() );
 
-  int nbNodesBefore = myMesh->NbNodes();
+  SMESH::smIdType nbNodesBefore = myMesh->NbNodes();
   getEditor().Remove( IdList, true );
-  int nbNodesAfter = myMesh->NbNodes();
+  SMESH::smIdType nbNodesAfter = myMesh->NbNodes();
 
   declareMeshModified( /*isReComputeSafe=*/ IdList.size() == 0 ); // issue 0020693
   return nbNodesBefore - nbNodesAfter;
@@ -878,8 +871,7 @@ CORBA::Long SMESH_MeshEditor_i::RemoveOrphanNodes()
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddNode(CORBA::Double x,CORBA::Double y, CORBA::Double z)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddNode(CORBA::Double x,CORBA::Double y, CORBA::Double z)
 {
   SMESH_TRY;
   initData();
@@ -903,9 +895,8 @@ CORBA::Long SMESH_MeshEditor_i::AddNode(CORBA::Double x,CORBA::Double y, CORBA::
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::Add0DElement(CORBA::Long    IDOfNode,
-                                             CORBA::Boolean DuplicateElements)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::Add0DElement(SMESH::smIdType    IDOfNode,
+                                                 CORBA::Boolean DuplicateElements)
 {
   SMESH_TRY;
   initData();
@@ -934,8 +925,7 @@ CORBA::Long SMESH_MeshEditor_i::Add0DElement(CORBA::Long    IDOfNode,
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddBall(CORBA::Long IDOfNode, CORBA::Double diameter)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddBall(SMESH::smIdType IDOfNode, CORBA::Double diameter)
 {
   SMESH_TRY;
   initData();
@@ -964,18 +954,17 @@ CORBA::Long SMESH_MeshEditor_i::AddBall(CORBA::Long IDOfNode, CORBA::Double diam
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddEdge(const SMESH::long_array & IDsOfNodes)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddEdge(const SMESH::smIdType_array & IDsOfNodes)
 {
   SMESH_TRY;
   initData();
 
-  int NbNodes = IDsOfNodes.length();
+  SMESH::smIdType NbNodes = IDsOfNodes.length();
   SMDS_MeshElement* elem = 0;
   if (NbNodes == 2)
   {
-    CORBA::Long index1 = IDsOfNodes[0];
-    CORBA::Long index2 = IDsOfNodes[1];
+    SMESH::smIdType index1 = IDsOfNodes[0];
+    SMESH::smIdType index2 = IDsOfNodes[1];
     elem = getMeshDS()->AddEdge( getMeshDS()->FindNode(index1),
                                  getMeshDS()->FindNode(index2));
 
@@ -984,9 +973,9 @@ CORBA::Long SMESH_MeshEditor_i::AddEdge(const SMESH::long_array & IDsOfNodes)
                   << index1 << ", " << index2 <<" ])";
   }
   if (NbNodes == 3) {
-    CORBA::Long n1 = IDsOfNodes[0];
-    CORBA::Long n2 = IDsOfNodes[1];
-    CORBA::Long n12 = IDsOfNodes[2];
+    SMESH::smIdType n1 = IDsOfNodes[0];
+    SMESH::smIdType n2 = IDsOfNodes[1];
+    SMESH::smIdType n12 = IDsOfNodes[2];
     elem = getMeshDS()->AddEdge( getMeshDS()->FindNode(n1),
                                  getMeshDS()->FindNode(n2),
                                  getMeshDS()->FindNode(n12));
@@ -1008,8 +997,7 @@ CORBA::Long SMESH_MeshEditor_i::AddEdge(const SMESH::long_array & IDsOfNodes)
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddFace(const SMESH::long_array & IDsOfNodes)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddFace(const SMESH::smIdType_array & IDsOfNodes)
 {
   SMESH_TRY;
   initData();
@@ -1057,8 +1045,7 @@ CORBA::Long SMESH_MeshEditor_i::AddFace(const SMESH::long_array & IDsOfNodes)
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddPolygonalFace (const SMESH::long_array & IDsOfNodes)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddPolygonalFace (const SMESH::smIdType_array & IDsOfNodes)
 {
   SMESH_TRY;
   initData();
@@ -1069,6 +1056,12 @@ CORBA::Long SMESH_MeshEditor_i::AddPolygonalFace (const SMESH::long_array & IDsO
     if ( ! ( nodes[i] = getMeshDS()->FindNode( IDsOfNodes[i] )))
       return 0;
 
+  if ( NbNodes == 0 )
+  {
+    INFOS("Polygon without nodes is forbidden");
+    return 0;
+  }
+
   const SMDS_MeshElement* elem = getMeshDS()->AddPolygonalFace(nodes);
 
   // Update Python script
@@ -1087,8 +1080,7 @@ CORBA::Long SMESH_MeshEditor_i::AddPolygonalFace (const SMESH::long_array & IDsO
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddQuadPolygonalFace (const SMESH::long_array & IDsOfNodes)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddQuadPolygonalFace (const SMESH::smIdType_array & IDsOfNodes)
 {
   SMESH_TRY;
   initData();
@@ -1098,6 +1090,12 @@ CORBA::Long SMESH_MeshEditor_i::AddQuadPolygonalFace (const SMESH::long_array &
   for (int i = 0; i < NbNodes; i++)
     nodes[i] = getMeshDS()->FindNode(IDsOfNodes[i]);
 
+  if ( NbNodes == 0 )
+  {
+    INFOS("Polygon without nodes is forbidden");
+    return 0;
+  }
+
   const SMDS_MeshElement* elem = getMeshDS()->AddQuadPolygonalFace(nodes);
 
   // Update Python script
@@ -1117,8 +1115,7 @@ CORBA::Long SMESH_MeshEditor_i::AddQuadPolygonalFace (const SMESH::long_array &
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddVolume(const SMESH::long_array & IDsOfNodes)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddVolume(const SMESH::smIdType_array & IDsOfNodes)
 {
   SMESH_TRY;
   initData();
@@ -1177,9 +1174,8 @@ CORBA::Long SMESH_MeshEditor_i::AddVolume(const SMESH::long_array & IDsOfNodes)
  *  AddPolyhedralVolume
  */
 //=============================================================================
-CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolume (const SMESH::long_array & IDsOfNodes,
+SMESH::smIdType SMESH_MeshEditor_i::AddPolyhedralVolume (const SMESH::smIdType_array & IDsOfNodes,
                                                      const SMESH::long_array & Quantities)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1217,8 +1213,7 @@ CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolume (const SMESH::long_array & I
  */
 //=============================================================================
 
-CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolumeByFaces (const SMESH::long_array & IdsOfFaces)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::AddPolyhedralVolumeByFaces (const SMESH::smIdType_array & IdsOfFaces)
 {
   SMESH_TRY;
   initData();
@@ -1266,7 +1261,6 @@ SMESH::SMESH_IDSource_ptr
 SMESH_MeshEditor_i::Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObject,
                                                const char*               theGroupName,
                                                CORBA::Boolean            theDuplicateElements)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1278,7 +1272,7 @@ SMESH_MeshEditor_i::Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObje
   if ( idSourceToSet( theObject, getMeshDS(), elements, SMDSAbs_All, /*emptyIfIsMesh=*/1))
     getEditor().Create0DElementsOnAllNodes( elements, elems0D, theDuplicateElements );
 
-  SMESH::long_array_var newElems = new SMESH::long_array;
+  SMESH::smIdType_array_var newElems = new SMESH::smIdType_array;
   newElems->length( elems0D.size() );
   TIDSortedElemSet::iterator eIt = elems0D.begin();
   for ( size_t i = 0; i < elems0D.size(); ++i, ++eIt )
@@ -1335,8 +1329,7 @@ SMESH_MeshEditor_i::Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObje
  */
 //=============================================================================
 
-void SMESH_MeshEditor_i::SetNodeOnVertex(CORBA::Long NodeID, CORBA::Long VertexID)
-  throw (SALOME::SALOME_Exception)
+void SMESH_MeshEditor_i::SetNodeOnVertex(SMESH::smIdType NodeID, CORBA::Long VertexID)
 {
   SMESH_TRY;
 
@@ -1369,9 +1362,8 @@ void SMESH_MeshEditor_i::SetNodeOnVertex(CORBA::Long NodeID, CORBA::Long VertexI
  */
 //=============================================================================
 
-void SMESH_MeshEditor_i::SetNodeOnEdge(CORBA::Long NodeID, CORBA::Long EdgeID,
+void SMESH_MeshEditor_i::SetNodeOnEdge(SMESH::smIdType NodeID, CORBA::Long EdgeID,
                                        CORBA::Double paramOnEdge)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
 
@@ -1413,9 +1405,8 @@ void SMESH_MeshEditor_i::SetNodeOnEdge(CORBA::Long NodeID, CORBA::Long EdgeID,
  */
 //=============================================================================
 
-void SMESH_MeshEditor_i::SetNodeOnFace(CORBA::Long NodeID, CORBA::Long FaceID,
+void SMESH_MeshEditor_i::SetNodeOnFace(SMESH::smIdType NodeID, CORBA::Long FaceID,
                                        CORBA::Double u, CORBA::Double v)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESHDS_Mesh * mesh = getMeshDS();
@@ -1459,8 +1450,7 @@ void SMESH_MeshEditor_i::SetNodeOnFace(CORBA::Long NodeID, CORBA::Long FaceID,
  */
 //=============================================================================
 
-void SMESH_MeshEditor_i::SetNodeInVolume(CORBA::Long NodeID, CORBA::Long SolidID)
-  throw (SALOME::SALOME_Exception)
+void SMESH_MeshEditor_i::SetNodeInVolume(SMESH::smIdType NodeID, CORBA::Long SolidID)
 {
   SMESH_TRY;
   SMESHDS_Mesh * mesh = getMeshDS();
@@ -1489,9 +1479,8 @@ void SMESH_MeshEditor_i::SetNodeInVolume(CORBA::Long NodeID, CORBA::Long SolidID
  */
 //=============================================================================
 
-void SMESH_MeshEditor_i::SetMeshElementOnShape(CORBA::Long ElementID,
+void SMESH_MeshEditor_i::SetMeshElementOnShape(SMESH::smIdType ElementID,
                                                CORBA::Long ShapeID)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESHDS_Mesh * mesh = getMeshDS();
@@ -1522,9 +1511,8 @@ void SMESH_MeshEditor_i::SetMeshElementOnShape(CORBA::Long ElementID,
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::InverseDiag(CORBA::Long NodeID1,
-                                               CORBA::Long NodeID2)
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::InverseDiag(SMESH::smIdType NodeID1,
+                                               SMESH::smIdType NodeID2)
 {
   SMESH_TRY;
   initData();
@@ -1553,9 +1541,8 @@ CORBA::Boolean SMESH_MeshEditor_i::InverseDiag(CORBA::Long NodeID1,
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::DeleteDiag(CORBA::Long NodeID1,
-                                              CORBA::Long NodeID2)
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::DeleteDiag(SMESH::smIdType NodeID1,
+                                              SMESH::smIdType NodeID2)
 {
   SMESH_TRY;
   initData();
@@ -1586,15 +1573,14 @@ CORBA::Boolean SMESH_MeshEditor_i::DeleteDiag(CORBA::Long NodeID1,
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::Reorient(const SMESH::long_array & IDsOfElements)
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::Reorient(const SMESH::smIdType_array & IDsOfElements)
 {
   SMESH_TRY;
   initData();
 
-  for ( CORBA::ULong i = 0; i < IDsOfElements.length(); i++ )
+  for ( SMESH::smIdType i = 0; i < IDsOfElements.length(); i++ )
   {
-    CORBA::Long index = IDsOfElements[i];
+    SMESH::smIdType index = IDsOfElements[i];
     const SMDS_MeshElement * elem = getMeshDS()->FindElement(index);
     if ( elem )
       getEditor().Reorient( elem );
@@ -1616,7 +1602,6 @@ CORBA::Boolean SMESH_MeshEditor_i::Reorient(const SMESH::long_array & IDsOfEleme
 //=============================================================================
 
 CORBA::Boolean SMESH_MeshEditor_i::ReorientObject(SMESH::SMESH_IDSource_ptr theObject)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1625,7 +1610,7 @@ CORBA::Boolean SMESH_MeshEditor_i::ReorientObject(SMESH::SMESH_IDSource_ptr theO
 
   prepareIdSource( theObject );
 
-  SMESH::long_array_var anElementsId = theObject->GetIDs();
+  SMESH::smIdType_array_var anElementsId = theObject->GetIDs();
   CORBA::Boolean isDone = Reorient(anElementsId);
 
   // Update Python script
@@ -1653,7 +1638,6 @@ CORBA::Long SMESH_MeshEditor_i::Reorient2D(SMESH::SMESH_IDSource_ptr the2Dgroup,
                                            const SMESH::DirStruct&   theDirection,
                                            CORBA::Long               theFace,
                                            const SMESH::PointStruct& thePoint)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData(/*deleteSearchers=*/false);
@@ -1737,7 +1721,6 @@ CORBA::Long SMESH_MeshEditor_i::Reorient2D(SMESH::SMESH_IDSource_ptr the2Dgroup,
 CORBA::Long SMESH_MeshEditor_i::Reorient2DBy3D(const SMESH::ListOfIDSources& faceGroups,
                                                SMESH::SMESH_IDSource_ptr     volumeGroup,
                                                CORBA::Boolean                outsideNormal)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1785,10 +1768,9 @@ CORBA::Long SMESH_MeshEditor_i::Reorient2DBy3D(const SMESH::ListOfIDSources& fac
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::TriToQuad (const SMESH::long_array &   IDsOfElements,
+CORBA::Boolean SMESH_MeshEditor_i::TriToQuad (const SMESH::smIdType_array &   IDsOfElements,
                                               SMESH::NumericalFunctor_ptr Criterion,
                                               CORBA::Double               MaxAngle)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1837,7 +1819,6 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuad (const SMESH::long_array &   IDsOfE
 CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr   theObject,
                                                     SMESH::NumericalFunctor_ptr Criterion,
                                                     CORBA::Double               MaxAngle)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1845,7 +1826,7 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr
   TPythonDump aTPythonDump;  // suppress dump in TriToQuad()
 
   prepareIdSource( theObject );
-  SMESH::long_array_var anElementsId = theObject->GetIDs();
+  SMESH::smIdType_array_var anElementsId = theObject->GetIDs();
   CORBA::Boolean isDone = TriToQuad(anElementsId, Criterion, MaxAngle);
 
   if ( !myIsPreviewMode ) {
@@ -1869,9 +1850,8 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::QuadToTri (const SMESH::long_array &   IDsOfElements,
+CORBA::Boolean SMESH_MeshEditor_i::QuadToTri (const SMESH::smIdType_array &   IDsOfElements,
                                               SMESH::NumericalFunctor_ptr Criterion)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1909,7 +1889,6 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTri (const SMESH::long_array &   IDsOfE
 
 CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr   theObject,
                                                     SMESH::NumericalFunctor_ptr Criterion)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1917,7 +1896,7 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr
   TPythonDump aTPythonDump;  // suppress dump in QuadToTri()
 
   prepareIdSource( theObject );
-  SMESH::long_array_var anElementsId = theObject->GetIDs();
+  SMESH::smIdType_array_var anElementsId = theObject->GetIDs();
   CORBA::Boolean isDone = QuadToTri(anElementsId, Criterion);
 
   SMESH::NumericalFunctor_i* aNumericalFunctor =
@@ -1941,7 +1920,6 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr
 //================================================================================
 
 void SMESH_MeshEditor_i::QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1954,6 +1932,8 @@ void SMESH_MeshEditor_i::QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject)
   getEditor().QuadTo4Tri( faces );
   TPythonDump() << this << ".QuadTo4Tri( " << theObject << " )";
 
+  declareMeshModified( /*isReComputeSafe=*/false );
+
   SMESH_CATCH( SMESH::throwCorbaException );
 }
 
@@ -1963,9 +1943,8 @@ void SMESH_MeshEditor_i::QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject)
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::long_array & IDsOfElements,
+CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::smIdType_array & IDsOfElements,
                                               CORBA::Boolean            Diag13)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -1995,7 +1974,6 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::long_array & IDsOfEle
 
 CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr theObject,
                                                     CORBA::Boolean            Diag13)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2003,7 +1981,7 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th
   TPythonDump aTPythonDump;  // suppress dump in SplitQuad()
 
   prepareIdSource( theObject );
-  SMESH::long_array_var anElementsId = theObject->GetIDs();
+  SMESH::smIdType_array_var anElementsId = theObject->GetIDs();
   CORBA::Boolean isDone = SplitQuad(anElementsId, Diag13);
 
   // Update Python script
@@ -2030,7 +2008,6 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th
 
 CORBA::Long SMESH_MeshEditor_i::BestSplit (CORBA::Long                 IDOfQuad,
                                            SMESH::NumericalFunctor_ptr Criterion)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2063,7 +2040,6 @@ CORBA::Long SMESH_MeshEditor_i::BestSplit (CORBA::Long                 IDOfQuad,
 
 void SMESH_MeshEditor_i::SplitVolumesIntoTetra (SMESH::SMESH_IDSource_ptr elems,
                                                 CORBA::Short              methodFlags)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2101,7 +2077,6 @@ void SMESH_MeshEditor_i::SplitHexahedraIntoPrisms( SMESH::SMESH_IDSource_ptr  el
                                                    const SMESH::DirStruct&    facetToSplitNormal,
                                                    CORBA::Short               methodFlags,
                                                    CORBA::Boolean             allDomains)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2115,7 +2090,7 @@ void SMESH_MeshEditor_i::SplitHexahedraIntoPrisms( SMESH::SMESH_IDSource_ptr  el
                             facetToSplitNormal.PS.z ));
   TIDSortedElemSet elemSet;
   prepareIdSource( elems );
-  SMESH::long_array_var anElementsId = elems->GetIDs();
+  SMESH::smIdType_array_var anElementsId = elems->GetIDs();
   SMDS_MeshElement::GeomFilter filter( SMDSGeom_HEXA );
   arrayToSet( anElementsId, getMeshDS(), elemSet, SMDSAbs_Volume, &filter );
 
@@ -2162,7 +2137,6 @@ void SMESH_MeshEditor_i::SplitHexahedraIntoPrisms( SMESH::SMESH_IDSource_ptr  el
 //================================================================================
 
 void SMESH_MeshEditor_i::SplitBiQuadraticIntoLinear(const SMESH::ListOfIDSources& theElems)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2193,12 +2167,11 @@ void SMESH_MeshEditor_i::SplitBiQuadraticIntoLinear(const SMESH::ListOfIDSources
 //=======================================================================
 
 CORBA::Boolean
-SMESH_MeshEditor_i::Smooth(const SMESH::long_array &              IDsOfElements,
-                           const SMESH::long_array &              IDsOfFixedNodes,
-                           CORBA::Long                            MaxNbOfIterations,
+SMESH_MeshEditor_i::Smooth(const SMESH::smIdType_array &          IDsOfElements,
+                           const SMESH::smIdType_array &          IDsOfFixedNodes,
+                           CORBA::Short                           MaxNbOfIterations,
                            CORBA::Double                          MaxAspectRatio,
                            SMESH::SMESH_MeshEditor::Smooth_Method Method)
-  throw (SALOME::SALOME_Exception)
 {
   return smooth( IDsOfElements, IDsOfFixedNodes, MaxNbOfIterations,
                  MaxAspectRatio, Method, false );
@@ -2211,12 +2184,11 @@ SMESH_MeshEditor_i::Smooth(const SMESH::long_array &              IDsOfElements,
 //=======================================================================
 
 CORBA::Boolean
-SMESH_MeshEditor_i::SmoothParametric(const SMESH::long_array &              IDsOfElements,
-                                     const SMESH::long_array &              IDsOfFixedNodes,
-                                     CORBA::Long                            MaxNbOfIterations,
+SMESH_MeshEditor_i::SmoothParametric(const SMESH::smIdType_array &          IDsOfElements,
+                                     const SMESH::smIdType_array &          IDsOfFixedNodes,
+                                     CORBA::Short                           MaxNbOfIterations,
                                      CORBA::Double                          MaxAspectRatio,
                                      SMESH::SMESH_MeshEditor::Smooth_Method Method)
-  throw (SALOME::SALOME_Exception)
 {
   return smooth( IDsOfElements, IDsOfFixedNodes, MaxNbOfIterations,
                  MaxAspectRatio, Method, true );
@@ -2230,11 +2202,10 @@ SMESH_MeshEditor_i::SmoothParametric(const SMESH::long_array &              IDsO
 
 CORBA::Boolean
 SMESH_MeshEditor_i::SmoothObject(SMESH::SMESH_IDSource_ptr              theObject,
-                                 const SMESH::long_array &              IDsOfFixedNodes,
-                                 CORBA::Long                            MaxNbOfIterations,
+                                 const SMESH::smIdType_array &          IDsOfFixedNodes,
+                                 CORBA::Short                           MaxNbOfIterations,
                                  CORBA::Double                          MaxAspectRatio,
                                  SMESH::SMESH_MeshEditor::Smooth_Method Method)
-  throw (SALOME::SALOME_Exception)
 {
   return smoothObject (theObject, IDsOfFixedNodes, MaxNbOfIterations,
                        MaxAspectRatio, Method, false);
@@ -2248,11 +2219,10 @@ SMESH_MeshEditor_i::SmoothObject(SMESH::SMESH_IDSource_ptr              theObjec
 
 CORBA::Boolean
 SMESH_MeshEditor_i::SmoothParametricObject(SMESH::SMESH_IDSource_ptr              theObject,
-                                           const SMESH::long_array &              IDsOfFixedNodes,
-                                           CORBA::Long                            MaxNbOfIterations,
+                                           const SMESH::smIdType_array &          IDsOfFixedNodes,
+                                           CORBA::Short                           MaxNbOfIterations,
                                            CORBA::Double                          MaxAspectRatio,
                                            SMESH::SMESH_MeshEditor::Smooth_Method Method)
-  throw (SALOME::SALOME_Exception)
 {
   return smoothObject (theObject, IDsOfFixedNodes, MaxNbOfIterations,
                        MaxAspectRatio, Method, true);
@@ -2266,13 +2236,12 @@ SMESH_MeshEditor_i::SmoothParametricObject(SMESH::SMESH_IDSource_ptr
 //=============================================================================
 
 CORBA::Boolean
-SMESH_MeshEditor_i::smooth(const SMESH::long_array &              IDsOfElements,
-                           const SMESH::long_array &              IDsOfFixedNodes,
-                           CORBA::Long                            MaxNbOfIterations,
+SMESH_MeshEditor_i::smooth(const SMESH::smIdType_array &          IDsOfElements,
+                           const SMESH::smIdType_array &          IDsOfFixedNodes,
+                           CORBA::Short                           MaxNbOfIterations,
                            CORBA::Double                          MaxAspectRatio,
                            SMESH::SMESH_MeshEditor::Smooth_Method Method,
                            bool                                   IsParametric)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2283,8 +2252,8 @@ SMESH_MeshEditor_i::smooth(const SMESH::long_array &              IDsOfElements,
   arrayToSet(IDsOfElements, aMesh, elements, SMDSAbs_Face);
 
   set<const SMDS_MeshNode*> fixedNodes;
-  for ( CORBA::ULong i = 0; i < IDsOfFixedNodes.length(); i++) {
-    CORBA::Long index = IDsOfFixedNodes[i];
+  for ( SMESH::smIdType i = 0; i < IDsOfFixedNodes.length(); i++) {
+    SMESH::smIdType index = IDsOfFixedNodes[i];
     const SMDS_MeshNode * node = aMesh->FindNode(index);
     if ( node )
       fixedNodes.insert( node );
@@ -2321,12 +2290,11 @@ SMESH_MeshEditor_i::smooth(const SMESH::long_array &              IDsOfElements,
 
 CORBA::Boolean
 SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr              theObject,
-                                 const SMESH::long_array &              IDsOfFixedNodes,
-                                 CORBA::Long                            MaxNbOfIterations,
+                                 const SMESH::smIdType_array &          IDsOfFixedNodes,
+                                 CORBA::Short                           MaxNbOfIterations,
                                  CORBA::Double                          MaxAspectRatio,
                                  SMESH::SMESH_MeshEditor::Smooth_Method Method,
                                  bool                                   IsParametric)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2334,7 +2302,7 @@ SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr              theObjec
   TPythonDump aTPythonDump;  // suppress dump in smooth()
 
   prepareIdSource( theObject );
-  SMESH::long_array_var anElementsId = theObject->GetIDs();
+  SMESH::smIdType_array_var anElementsId = theObject->GetIDs();
   CORBA::Boolean isDone = smooth (anElementsId, IDsOfFixedNodes, MaxNbOfIterations,
                                   MaxAspectRatio, Method, IsParametric);
 
@@ -2360,7 +2328,6 @@ SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr              theObjec
 //=============================================================================
 
 void SMESH_MeshEditor_i::RenumberNodes()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   // Update Python script
@@ -2378,7 +2345,6 @@ void SMESH_MeshEditor_i::RenumberNodes()
 //=============================================================================
 
 void SMESH_MeshEditor_i::RenumberElements()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   // Update Python script
@@ -2396,7 +2362,6 @@ void SMESH_MeshEditor_i::RenumberElements()
 //=======================================================================
 
 SMESH::ListOfGroups* SMESH_MeshEditor_i::getGroups(const std::list<int>* groupIDs)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   if ( !groupIDs )
@@ -2422,7 +2387,6 @@ SMESH_MeshEditor_i::RotationSweepObjects(const SMESH::ListOfIDSources & theNodes
                                          CORBA::Long                    theNbOfSteps,
                                          CORBA::Double                  theTolerance,
                                          const bool                     theMakeGroups)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2625,7 +2589,6 @@ SMESH_MeshEditor_i::ExtrusionSweepObjects(const SMESH::ListOfIDSources & theNode
                                           const SMESH::double_array &    theBasePoint,
                                           const SMESH::double_array &    theAngles,
                                           CORBA::Boolean                 theAnglesVariation)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2708,7 +2671,6 @@ SMESH_MeshEditor_i::ExtrusionByNormal(const SMESH::ListOfIDSources& objects,
                                       CORBA::Boolean                useInputElemsOnly,
                                       CORBA::Boolean                makeGroups,
                                       CORBA::Short                  dim)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -2779,13 +2741,12 @@ SMESH_MeshEditor_i::ExtrusionByNormal(const SMESH::ListOfIDSources& objects,
 //=======================================================================
 
 SMESH::ListOfGroups*
-SMESH_MeshEditor_i::AdvancedExtrusion(const SMESH::long_array & theIDsOfElements,
-                                      const SMESH::DirStruct &  theStepVector,
-                                      CORBA::Long               theNbOfSteps,
-                                      CORBA::Long               theExtrFlags,
-                                      CORBA::Double             theSewTolerance,
-                                      CORBA::Boolean            theMakeGroups)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::AdvancedExtrusion(const SMESH::smIdType_array & theIDsOfElements,
+                                      const SMESH::DirStruct &      theStepVector,
+                                      CORBA::Long                   theNbOfSteps,
+                                      CORBA::Long                   theExtrFlags,
+                                      CORBA::Double                 theSewTolerance,
+                                      CORBA::Boolean                theMakeGroups)
 {
   SMESH_TRY;
   initData();
@@ -2862,7 +2823,7 @@ SMESH_MeshEditor_i::ExtrusionAlongPathObjects(const SMESH::ListOfIDSources & the
                                               const SMESH::ListOfIDSources & theFaces,
                                               SMESH::SMESH_IDSource_ptr      thePathObject,
                                               GEOM::GEOM_Object_ptr          thePathShape,
-                                              CORBA::Long                    theNodeStart,
+                                              SMESH::smIdType                theNodeStart,
                                               CORBA::Boolean                 theHasAngles,
                                               const SMESH::double_array &    theAngles,
                                               CORBA::Boolean                 theAnglesVariation,
@@ -2872,7 +2833,6 @@ SMESH_MeshEditor_i::ExtrusionAlongPathObjects(const SMESH::ListOfIDSources & the
                                               const SMESH::double_array &    theScaleFactors,
                                               CORBA::Boolean                 theScalesVariation,
                                               SMESH::SMESH_MeshEditor::Extrusion_Error& theError)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -3039,7 +2999,7 @@ SMESH_MeshEditor_i::LinearAnglesVariation(SMESH::SMESH_Mesh_ptr       thePathMes
     SMESH_subMesh* aSubMesh = aMeshImp->GetImpl().GetSubMesh( aShape );
     if ( !aSubMesh || !aSubMesh->GetSubMeshDS())
       return aResult._retn();
-    int nbSteps = aSubMesh->GetSubMeshDS()->NbElements();
+    smIdType nbSteps = aSubMesh->GetSubMeshDS()->NbElements();
     if ( nbSteps == nbAngles )
     {
       aResult.inout() = theAngles;
@@ -3097,7 +3057,6 @@ SMESH_MeshEditor_i::mirror(TIDSortedElemSet &                  theElements,
                            CORBA::Boolean                      theCopy,
                            bool                                theMakeGroups,
                            ::SMESH_Mesh*                       theTargetMesh)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -3159,11 +3118,10 @@ SMESH_MeshEditor_i::mirror(TIDSortedElemSet &                  theElements,
 //purpose  :
 //=======================================================================
 
-void SMESH_MeshEditor_i::Mirror(const SMESH::long_array &           theIDsOfElements,
+void SMESH_MeshEditor_i::Mirror(const SMESH::smIdType_array &       theIDsOfElements,
                                 const SMESH::AxisStruct &           theAxis,
                                 SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
                                 CORBA::Boolean                      theCopy)
-  throw (SALOME::SALOME_Exception)
 {
   if ( !myIsPreviewMode ) {
     TPythonDump() << this << ".Mirror( "
@@ -3190,7 +3148,6 @@ void SMESH_MeshEditor_i::MirrorObject(SMESH::SMESH_IDSource_ptr           theObj
                                       const SMESH::AxisStruct &           theAxis,
                                       SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
                                       CORBA::Boolean                      theCopy)
-  throw (SALOME::SALOME_Exception)
 {
   if ( !myIsPreviewMode ) {
     TPythonDump() << this << ".MirrorObject( "
@@ -3213,10 +3170,9 @@ void SMESH_MeshEditor_i::MirrorObject(SMESH::SMESH_IDSource_ptr           theObj
 //=======================================================================
 
 SMESH::ListOfGroups*
-SMESH_MeshEditor_i::MirrorMakeGroups(const SMESH::long_array&            theIDsOfElements,
+SMESH_MeshEditor_i::MirrorMakeGroups(const SMESH::smIdType_array&        theIDsOfElements,
                                      const SMESH::AxisStruct&            theMirror,
                                      SMESH::SMESH_MeshEditor::MirrorType theMirrorType)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -3246,7 +3202,6 @@ SMESH::ListOfGroups*
 SMESH_MeshEditor_i::MirrorObjectMakeGroups(SMESH::SMESH_IDSource_ptr           theObject,
                                            const SMESH::AxisStruct&            theMirror,
                                            SMESH::SMESH_MeshEditor::MirrorType theMirrorType)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -3272,12 +3227,11 @@ SMESH_MeshEditor_i::MirrorObjectMakeGroups(SMESH::SMESH_IDSource_ptr           t
 //=======================================================================
 
 SMESH::SMESH_Mesh_ptr
-SMESH_MeshEditor_i::MirrorMakeMesh(const SMESH::long_array&            theIDsOfElements,
+SMESH_MeshEditor_i::MirrorMakeMesh(const SMESH::smIdType_array&        theIDsOfElements,
                                    const SMESH::AxisStruct&            theMirror,
                                    SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
                                    CORBA::Boolean                      theCopyGroups,
                                    const char*                         theMeshName)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_Mesh_i* mesh_i;
   SMESH::SMESH_Mesh_var mesh;
@@ -3325,7 +3279,6 @@ SMESH_MeshEditor_i::MirrorObjectMakeMesh(SMESH::SMESH_IDSource_ptr           the
                                          SMESH::SMESH_MeshEditor::MirrorType theMirrorType,
                                          CORBA::Boolean                      theCopyGroups,
                                          const char*                         theMeshName)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_Mesh_i* mesh_i;
   SMESH::SMESH_Mesh_var mesh;
@@ -3372,7 +3325,6 @@ SMESH_MeshEditor_i::translate(TIDSortedElemSet        & theElements,
                               CORBA::Boolean            theCopy,
                               bool                      theMakeGroups,
                               ::SMESH_Mesh*             theTargetMesh)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -3423,10 +3375,9 @@ SMESH_MeshEditor_i::translate(TIDSortedElemSet        & theElements,
 //purpose  :
 //=======================================================================
 
-void SMESH_MeshEditor_i::Translate(const SMESH::long_array & theIDsOfElements,
-                                   const SMESH::DirStruct &  theVector,
-                                   CORBA::Boolean            theCopy)
-  throw (SALOME::SALOME_Exception)
+void SMESH_MeshEditor_i::Translate(const SMESH::smIdType_array & theIDsOfElements,
+                                   const SMESH::DirStruct &      theVector,
+                                   CORBA::Boolean                theCopy)
 {
   if (!myIsPreviewMode) {
     TPythonDump() << this << ".Translate( "
@@ -3449,7 +3400,6 @@ void SMESH_MeshEditor_i::Translate(const SMESH::long_array & theIDsOfElements,
 void SMESH_MeshEditor_i::TranslateObject(SMESH::SMESH_IDSource_ptr theObject,
                                          const SMESH::DirStruct &  theVector,
                                          CORBA::Boolean            theCopy)
-  throw (SALOME::SALOME_Exception)
 {
   if (!myIsPreviewMode) {
     TPythonDump() << this << ".TranslateObject( "
@@ -3471,9 +3421,8 @@ void SMESH_MeshEditor_i::TranslateObject(SMESH::SMESH_IDSource_ptr theObject,
 //=======================================================================
 
 SMESH::ListOfGroups*
-SMESH_MeshEditor_i::TranslateMakeGroups(const SMESH::long_array& theIDsOfElements,
-                                        const SMESH::DirStruct&  theVector)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::TranslateMakeGroups(const SMESH::smIdType_array& theIDsOfElements,
+                                        const SMESH::DirStruct&      theVector)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -3500,7 +3449,6 @@ SMESH_MeshEditor_i::TranslateMakeGroups(const SMESH::long_array& theIDsOfElement
 SMESH::ListOfGroups*
 SMESH_MeshEditor_i::TranslateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
                                               const SMESH::DirStruct&   theVector)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -3524,11 +3472,10 @@ SMESH_MeshEditor_i::TranslateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObjec
 //=======================================================================
 
 SMESH::SMESH_Mesh_ptr
-SMESH_MeshEditor_i::TranslateMakeMesh(const SMESH::long_array& theIDsOfElements,
-                                      const SMESH::DirStruct&  theVector,
-                                      CORBA::Boolean           theCopyGroups,
-                                      const char*              theMeshName)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::TranslateMakeMesh(const SMESH::smIdType_array& theIDsOfElements,
+                                      const SMESH::DirStruct&      theVector,
+                                      CORBA::Boolean               theCopyGroups,
+                                      const char*                  theMeshName)
 {
   SMESH_Mesh_i* mesh_i;
   SMESH::SMESH_Mesh_var mesh;
@@ -3575,7 +3522,6 @@ SMESH_MeshEditor_i::TranslateObjectMakeMesh(SMESH::SMESH_IDSource_ptr theObject,
                                             const SMESH::DirStruct&   theVector,
                                             CORBA::Boolean            theCopyGroups,
                                             const char*               theMeshName)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH_Mesh_i* mesh_i;
@@ -3625,7 +3571,6 @@ SMESH_MeshEditor_i::rotate(TIDSortedElemSet &        theElements,
                            CORBA::Boolean            theCopy,
                            bool                      theMakeGroups,
                            ::SMESH_Mesh*             theTargetMesh)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -3674,11 +3619,10 @@ SMESH_MeshEditor_i::rotate(TIDSortedElemSet &        theElements,
 //purpose  :
 //=======================================================================
 
-void SMESH_MeshEditor_i::Rotate(const SMESH::long_array & theIDsOfElements,
-                                const SMESH::AxisStruct & theAxis,
-                                CORBA::Double             theAngle,
-                                CORBA::Boolean            theCopy)
-  throw (SALOME::SALOME_Exception)
+void SMESH_MeshEditor_i::Rotate(const SMESH::smIdType_array & theIDsOfElements,
+                                const SMESH::AxisStruct &     theAxis,
+                                CORBA::Double                 theAngle,
+                                CORBA::Boolean                theCopy)
 {
   if (!myIsPreviewMode) {
     TPythonDump() << this << ".Rotate( "
@@ -3704,7 +3648,6 @@ void SMESH_MeshEditor_i::RotateObject(SMESH::SMESH_IDSource_ptr theObject,
                                       const SMESH::AxisStruct & theAxis,
                                       CORBA::Double             theAngle,
                                       CORBA::Boolean            theCopy)
-  throw (SALOME::SALOME_Exception)
 {
   if ( !myIsPreviewMode ) {
     TPythonDump() << this << ".RotateObject( "
@@ -3725,10 +3668,9 @@ void SMESH_MeshEditor_i::RotateObject(SMESH::SMESH_IDSource_ptr theObject,
 //=======================================================================
 
 SMESH::ListOfGroups*
-SMESH_MeshEditor_i::RotateMakeGroups(const SMESH::long_array& theIDsOfElements,
-                                     const SMESH::AxisStruct& theAxis,
-                                     CORBA::Double            theAngle)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::RotateMakeGroups(const SMESH::smIdType_array& theIDsOfElements,
+                                     const SMESH::AxisStruct&     theAxis,
+                                     CORBA::Double                theAngle)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -3758,7 +3700,6 @@ SMESH::ListOfGroups*
 SMESH_MeshEditor_i::RotateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
                                            const SMESH::AxisStruct&  theAxis,
                                            CORBA::Double             theAngle)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -3783,12 +3724,11 @@ SMESH_MeshEditor_i::RotateObjectMakeGroups(SMESH::SMESH_IDSource_ptr theObject,
 //=======================================================================
 
 SMESH::SMESH_Mesh_ptr
-SMESH_MeshEditor_i::RotateMakeMesh(const SMESH::long_array& theIDsOfElements,
-                                   const SMESH::AxisStruct& theAxis,
-                                   CORBA::Double            theAngleInRadians,
-                                   CORBA::Boolean           theCopyGroups,
-                                   const char*              theMeshName)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::RotateMakeMesh(const SMESH::smIdType_array& theIDsOfElements,
+                                   const SMESH::AxisStruct&     theAxis,
+                                   CORBA::Double                theAngleInRadians,
+                                   CORBA::Boolean               theCopyGroups,
+                                   const char*                  theMeshName)
 {
   SMESH_TRY;
   SMESH::SMESH_Mesh_var mesh;
@@ -3841,7 +3781,6 @@ SMESH_MeshEditor_i::RotateObjectMakeMesh(SMESH::SMESH_IDSource_ptr theObject,
                                          CORBA::Double             theAngleInRadians,
                                          CORBA::Boolean            theCopyGroups,
                                          const char*               theMeshName)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH::SMESH_Mesh_var mesh;
@@ -3894,7 +3833,6 @@ SMESH_MeshEditor_i::scale(SMESH::SMESH_IDSource_ptr  theObject,
                           CORBA::Boolean             theCopy,
                           bool                       theMakeGroups,
                           ::SMESH_Mesh*              theTargetMesh)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -3969,7 +3907,6 @@ void SMESH_MeshEditor_i::Scale(SMESH::SMESH_IDSource_ptr  theObject,
                                const SMESH::PointStruct&  thePoint,
                                const SMESH::double_array& theScaleFact,
                                CORBA::Boolean             theCopy)
-  throw (SALOME::SALOME_Exception)
 {
   if ( !myIsPreviewMode ) {
     TPythonDump() << this << ".Scale( "
@@ -3991,7 +3928,6 @@ SMESH::ListOfGroups*
 SMESH_MeshEditor_i::ScaleMakeGroups(SMESH::SMESH_IDSource_ptr  theObject,
                                     const SMESH::PointStruct&  thePoint,
                                     const SMESH::double_array& theScaleFact)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump aPythonDump; // it is here to prevent dump of GetGroups()
 
@@ -4018,7 +3954,6 @@ SMESH_MeshEditor_i::ScaleMakeMesh(SMESH::SMESH_IDSource_ptr  theObject,
                                   const SMESH::double_array& theScaleFact,
                                   CORBA::Boolean             theCopyGroups,
                                   const char*                theMeshName)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_Mesh_i* mesh_i;
   SMESH::SMESH_Mesh_var mesh;
@@ -4069,7 +4004,6 @@ SMESH::SMESH_Mesh_ptr SMESH_MeshEditor_i::Offset( SMESH::SMESH_IDSource_ptr theO
                                                   CORBA::Boolean            theCopyElements,
                                                   const char*               theMeshName,
                                                   SMESH::ListOfGroups_out   theGroups)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4118,9 +4052,9 @@ SMESH::SMESH_Mesh_ptr SMESH_MeshEditor_i::Offset( SMESH::SMESH_IDSource_ptr theO
     if ( *theMeshName && mesh_var->NbFaces() == 0 )
     {
       // new mesh empty, remove it
-      SALOMEDS::Study_var          study = SMESH_Gen_i::getStudyServant();
+      SALOMEDS::Study_var          study = SMESH_Gen_i::GetSMESHGen()->getStudyServant();
       SALOMEDS::StudyBuilder_var builder = study->NewBuilder();
-      SALOMEDS::SObject_wrap      meshSO = SMESH_Gen_i::ObjectToSObject( mesh_var );
+      SALOMEDS::SObject_wrap      meshSO = SMESH_Gen_i::GetSMESHGen()->ObjectToSObject( mesh_var );
       builder->RemoveObjectWithChildren( meshSO );
       THROW_SALOME_CORBA_EXCEPTION("Offset failed", SALOME::INTERNAL_ERROR);
     }
@@ -4183,7 +4117,6 @@ void SMESH_MeshEditor_i::
 FindCoincidentNodes (CORBA::Double                  Tolerance,
                      SMESH::array_of_long_array_out GroupsOfNodes,
                      CORBA::Boolean                 SeparateCornersAndMedium)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4208,7 +4141,6 @@ FindCoincidentNodesOnPart(SMESH::SMESH_IDSource_ptr      theObject,
                           CORBA::Double                  Tolerance,
                           SMESH::array_of_long_array_out GroupsOfNodes,
                           CORBA::Boolean                 SeparateCornersAndMedium)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4240,7 +4172,6 @@ FindCoincidentNodesOnPartBut(const SMESH::ListOfIDSources&  theObjects,
                              SMESH::array_of_long_array_out theGroupsOfNodes,
                              const SMESH::ListOfIDSources&  theExceptSubMeshOrGroups,
                              CORBA::Boolean                 theSeparateCornersAndMedium)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4277,7 +4208,6 @@ FindCoincidentNodesOnPartBut(const SMESH::ListOfIDSources&  theObjects,
 void SMESH_MeshEditor_i::MergeNodes (const SMESH::array_of_long_array& GroupsOfNodes,
                                      const SMESH::ListOfIDSources&     NodesToKeep,
                                      CORBA::Boolean                    AvoidMakingHoles)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4337,7 +4267,6 @@ void SMESH_MeshEditor_i::MergeNodes (const SMESH::array_of_long_array& GroupsOfN
 void SMESH_MeshEditor_i::FindEqualElements(const SMESH::ListOfIDSources&  theObjects,
                                            const SMESH::ListOfIDSources&  theExceptObjects,
                                            SMESH::array_of_long_array_out theGroupsOfElementsID)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4375,10 +4304,10 @@ void SMESH_MeshEditor_i::FindEqualElements(const SMESH::ListOfIDSources&  theObj
     for (CORBA::Long j = 0; arraysIt != aListOfListOfElementsID.end(); ++arraysIt, ++j)
     {
       SMESH::long_array& aGroup = (*theGroupsOfElementsID)[ j ];
-      list<int>&      listOfIDs = *arraysIt;
+      list<smIdType>&      listOfIDs = *arraysIt;
       aGroup.length( listOfIDs.size() );
-      list<int>::iterator idIt = listOfIDs.begin();
-      for (int k = 0; idIt != listOfIDs.end(); ++idIt, ++k )
+      list<smIdType>::iterator idIt = listOfIDs.begin();
+      for (smIdType k = 0; idIt != listOfIDs.end(); ++idIt, ++k )
         aGroup[ k ] = *idIt;
     }
 
@@ -4397,7 +4326,6 @@ void SMESH_MeshEditor_i::FindEqualElements(const SMESH::ListOfIDSources&  theObj
 
 void SMESH_MeshEditor_i::MergeElements(const SMESH::array_of_long_array& theGroupsOfElementsID,
                                        const SMESH::ListOfIDSources&     theElementsToKeep)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4413,8 +4341,8 @@ void SMESH_MeshEditor_i::MergeElements(const SMESH::array_of_long_array& theGrou
     SMESH::array_of_ElementType_var elemTypes = theElementsToKeep[i]->GetTypes();
     if ( elemTypes->length() == 1 && elemTypes[0] == SMESH::NODE )
       continue;
-    SMESH::long_array_var elementsId = theElementsToKeep[i]->GetIDs();
-    for ( CORBA::ULong j = 0; j < elementsId->length(); ++j )
+    SMESH::smIdType_array_var elementsId = theElementsToKeep[i]->GetIDs();
+    for ( SMESH::smIdType j = 0; j < elementsId->length(); ++j )
       idsToKeep.Add( elementsId[ j ]);
   }
 
@@ -4423,11 +4351,11 @@ void SMESH_MeshEditor_i::MergeElements(const SMESH::array_of_long_array& theGrou
   for ( CORBA::ULong i = 0; i < theGroupsOfElementsID.length(); i++ )
   {
     const SMESH::long_array& anElemsIDGroup = theGroupsOfElementsID[ i ];
-    aListOfListOfElementsID.push_back( list< int >() );
-    list< int >& aListOfElemsID = aListOfListOfElementsID.back();
-    for ( CORBA::ULong j = 0; j < anElemsIDGroup.length(); j++ )
+    aListOfListOfElementsID.push_back( list< smIdType >() );
+    list< smIdType >& aListOfElemsID = aListOfListOfElementsID.back();
+    for ( SMESH::smIdType j = 0; j < anElemsIDGroup.length(); j++ )
     {
-      CORBA::Long id = anElemsIDGroup[ j ];
+      SMESH::smIdType id = anElemsIDGroup[ j ];
       if ( idsToKeep.Contains( id )) aListOfElemsID.push_front( id );
       else                           aListOfElemsID.push_back( id );
     }
@@ -4452,7 +4380,6 @@ void SMESH_MeshEditor_i::MergeElements(const SMESH::array_of_long_array& theGrou
 //=======================================================================
 
 void SMESH_MeshEditor_i::MergeEqualElements()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -4472,11 +4399,10 @@ void SMESH_MeshEditor_i::MergeEqualElements()
  */
 //=============================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::MoveNode(CORBA::Long   NodeID,
-                                            CORBA::Double x,
-                                            CORBA::Double y,
-                                            CORBA::Double z)
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::MoveNode(SMESH::smIdType NodeID,
+                                            CORBA::Double   x,
+                                            CORBA::Double   y,
+                                            CORBA::Double   z)
 {
   SMESH_TRY;
   initData(/*deleteSearchers=*/false);
@@ -4530,10 +4456,9 @@ CORBA::Boolean SMESH_MeshEditor_i::MoveNode(CORBA::Long   NodeID,
  */
 //================================================================================
 
-CORBA::Long SMESH_MeshEditor_i::FindNodeClosestTo(CORBA::Double x,
+SMESH::smIdType SMESH_MeshEditor_i::FindNodeClosestTo(CORBA::Double x,
                                                   CORBA::Double y,
                                                   CORBA::Double z)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   theSearchersDeleter.Set( myMesh ); // remove theNodeSearcher if mesh is other
@@ -4556,11 +4481,10 @@ CORBA::Long SMESH_MeshEditor_i::FindNodeClosestTo(CORBA::Double x,
  */
 //================================================================================
 
-CORBA::Long SMESH_MeshEditor_i::MoveClosestNodeToPoint(CORBA::Double x,
-                                                       CORBA::Double y,
-                                                       CORBA::Double z,
-                                                       CORBA::Long   theNodeID)
-  throw (SALOME::SALOME_Exception)
+SMESH::smIdType SMESH_MeshEditor_i::MoveClosestNodeToPoint(CORBA::Double   x,
+                                                       CORBA::Double   y,
+                                                       CORBA::Double   z,
+                                                       SMESH::smIdType theNodeID)
 {
   SMESH_TRY;
   // We keep theNodeSearcher until any mesh modification:
@@ -4571,7 +4495,7 @@ CORBA::Long SMESH_MeshEditor_i::MoveClosestNodeToPoint(CORBA::Double x,
 
   theSearchersDeleter.Set( myMesh ); // remove theNodeSearcher if mesh is other
 
-  int nodeID = theNodeID;
+  smIdType nodeID = theNodeID;
   const SMDS_MeshNode* node = getMeshDS()->FindNode( nodeID );
   if ( !node ) // preview moving node
   {
@@ -4634,14 +4558,13 @@ CORBA::Long SMESH_MeshEditor_i::MoveClosestNodeToPoint(CORBA::Double x,
  */
 //=======================================================================
 
-SMESH::long_array* SMESH_MeshEditor_i::FindElementsByPoint(CORBA::Double      x,
+SMESH::smIdType_array* SMESH_MeshEditor_i::FindElementsByPoint(CORBA::Double      x,
                                                            CORBA::Double      y,
                                                            CORBA::Double      z,
                                                            SMESH::ElementType type)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
-  SMESH::long_array_var res = new SMESH::long_array;
+  SMESH::smIdType_array_var res = new SMESH::smIdType_array;
   vector< const SMDS_MeshElement* > foundElems;
 
   theSearchersDeleter.Set( myMesh );
@@ -4668,16 +4591,15 @@ SMESH::long_array* SMESH_MeshEditor_i::FindElementsByPoint(CORBA::Double      x,
 //           'ALL' type means elements of any type excluding nodes
 //=======================================================================
 
-SMESH::long_array*
+SMESH::smIdType_array*
 SMESH_MeshEditor_i::FindAmongElementsByPoint(SMESH::SMESH_IDSource_ptr elementIDs,
                                              CORBA::Double             x,
                                              CORBA::Double             y,
                                              CORBA::Double             z,
                                              SMESH::ElementType        type)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
-  SMESH::long_array_var res = new SMESH::long_array;
+  SMESH::smIdType_array_var res = new SMESH::smIdType_array;
 
   prepareIdSource( elementIDs );
   if ( type != SMESH::NODE )
@@ -4741,13 +4663,12 @@ SMESH_MeshEditor_i::FindAmongElementsByPoint(SMESH::SMESH_IDSource_ptr elementID
 //           In the case if nothing found, return -1 and []
 //=======================================================================
 
-CORBA::Long SMESH_MeshEditor_i::ProjectPoint(CORBA::Double             x,
+SMESH::smIdType SMESH_MeshEditor_i::ProjectPoint(CORBA::Double             x,
                                              CORBA::Double             y,
                                              CORBA::Double             z,
                                              SMESH::ElementType        type,
                                              SMESH::SMESH_IDSource_ptr meshObject,
                                              SMESH::double_array_out   projecton)
-  throw (SALOME::SALOME_Exception)
 {
   if ( CORBA::is_nil( meshObject ))
     THROW_SALOME_CORBA_EXCEPTION("NULL meshObject", SALOME::BAD_PARAM);
@@ -4808,7 +4729,6 @@ CORBA::Long SMESH_MeshEditor_i::ProjectPoint(CORBA::Double             x,
 CORBA::Short SMESH_MeshEditor_i::GetPointState(CORBA::Double x,
                                                CORBA::Double y,
                                                CORBA::Double z)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   theSearchersDeleter.Set( myMesh );
@@ -4827,7 +4747,6 @@ CORBA::Short SMESH_MeshEditor_i::GetPointState(CORBA::Double x,
 //=======================================================================
 
 CORBA::Boolean SMESH_MeshEditor_i::IsManifold()
-  throw (SALOME::SALOME_Exception)
 {
   bool isManifold = true;
 
@@ -4848,7 +4767,6 @@ CORBA::Boolean SMESH_MeshEditor_i::IsManifold()
 //=======================================================================
 
 CORBA::Boolean SMESH_MeshEditor_i::IsCoherentOrientation2D()
-  throw (SALOME::SALOME_Exception)
 {
   bool isGoodOri = true;
 
@@ -4875,9 +4793,8 @@ CORBA::Boolean SMESH_MeshEditor_i::IsCoherentOrientation2D()
 
 SMESH::array_of_long_array*
 SMESH_MeshEditor_i::Get1DBranches( SMESH::SMESH_IDSource_ptr      theEdges,
-                                   CORBA::Long                    theStartNode,
+                                   SMESH::smIdType                theStartNode,
                                    SMESH::array_of_long_array_out theNodeGroups )
-  throw (SALOME::SALOME_Exception)
 {
   if ( CORBA::is_nil( theEdges ))
     THROW_SALOME_CORBA_EXCEPTION("Get1DBranches(): NULL group given", SALOME::BAD_PARAM);
@@ -4924,7 +4841,6 @@ SMESH_MeshEditor_i::Get1DBranches( SMESH::SMESH_IDSource_ptr      theEdges,
 
 SMESH::ListOfEdges* SMESH_MeshEditor_i::FindSharpEdges(CORBA::Double  theAngle,
                                                        CORBA::Boolean theAddExisting)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH::ListOfEdges_var resultEdges = new SMESH::ListOfEdges;
   SMESH_TRY;
@@ -4975,7 +4891,6 @@ SMESH::ListOfEdges* SMESH_MeshEditor_i::FindSharpEdges(CORBA::Double  theAngle,
 //=======================================================================
 
 SMESH::ListOfFreeBorders* SMESH_MeshEditor_i::FindFreeBorders(CORBA::Boolean closedOnly)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH::ListOfFreeBorders_var resBorders = new SMESH::ListOfFreeBorders;
   SMESH_TRY;
@@ -5006,7 +4921,6 @@ SMESH::ListOfFreeBorders* SMESH_MeshEditor_i::FindFreeBorders(CORBA::Boolean clo
 SMESH::SMESH_Group_ptr 
 SMESH_MeshEditor_i::FillHole(const SMESH::FreeBorder& theHole,
                              const char*              theGroupName)
-  throw (SALOME::SALOME_Exception)
 {
   initData();
 
@@ -5202,7 +5116,6 @@ CORBA::Short SMESH_MeshEditor_i::
 SewCoincidentFreeBorders(const SMESH::CoincidentFreeBorders& freeBorders,
                          CORBA::Boolean                      createPolygons,
                          CORBA::Boolean                      createPolyhedra)
-  throw (SALOME::SALOME_Exception)
 {
   CORBA::Short nbSewed = 0;
 
@@ -5363,15 +5276,14 @@ SewCoincidentFreeBorders(const SMESH::CoincidentFreeBorders& freeBorders,
 //=======================================================================
 
 SMESH::SMESH_MeshEditor::Sew_Error
-SMESH_MeshEditor_i::SewFreeBorders(CORBA::Long FirstNodeID1,
-                                   CORBA::Long SecondNodeID1,
-                                   CORBA::Long LastNodeID1,
-                                   CORBA::Long FirstNodeID2,
-                                   CORBA::Long SecondNodeID2,
-                                   CORBA::Long LastNodeID2,
-                                   CORBA::Boolean CreatePolygons,
-                                   CORBA::Boolean CreatePolyedrs)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::SewFreeBorders(SMESH::smIdType FirstNodeID1,
+                                   SMESH::smIdType SecondNodeID1,
+                                   SMESH::smIdType LastNodeID1,
+                                   SMESH::smIdType FirstNodeID2,
+                                   SMESH::smIdType SecondNodeID2,
+                                   SMESH::smIdType LastNodeID2,
+                                   CORBA::Boolean  CreatePolygons,
+                                   CORBA::Boolean  CreatePolyedrs)
 {
   SMESH_TRY;
   initData();
@@ -5430,12 +5342,11 @@ SMESH_MeshEditor_i::SewFreeBorders(CORBA::Long FirstNodeID1,
 //=======================================================================
 
 SMESH::SMESH_MeshEditor::Sew_Error
-SMESH_MeshEditor_i::SewConformFreeBorders(CORBA::Long FirstNodeID1,
-                                          CORBA::Long SecondNodeID1,
-                                          CORBA::Long LastNodeID1,
-                                          CORBA::Long FirstNodeID2,
-                                          CORBA::Long SecondNodeID2)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::SewConformFreeBorders(SMESH::smIdType FirstNodeID1,
+                                          SMESH::smIdType SecondNodeID1,
+                                          SMESH::smIdType LastNodeID1,
+                                          SMESH::smIdType FirstNodeID2,
+                                          SMESH::smIdType SecondNodeID2)
 {
   SMESH_TRY;
   initData();
@@ -5488,14 +5399,13 @@ SMESH_MeshEditor_i::SewConformFreeBorders(CORBA::Long FirstNodeID1,
 //=======================================================================
 
 SMESH::SMESH_MeshEditor::Sew_Error
-SMESH_MeshEditor_i::SewBorderToSide(CORBA::Long FirstNodeIDOnFreeBorder,
-                                    CORBA::Long SecondNodeIDOnFreeBorder,
-                                    CORBA::Long LastNodeIDOnFreeBorder,
-                                    CORBA::Long FirstNodeIDOnSide,
-                                    CORBA::Long LastNodeIDOnSide,
-                                    CORBA::Boolean CreatePolygons,
-                                    CORBA::Boolean CreatePolyedrs)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::SewBorderToSide(SMESH::smIdType FirstNodeIDOnFreeBorder,
+                                    SMESH::smIdType SecondNodeIDOnFreeBorder,
+                                    SMESH::smIdType LastNodeIDOnFreeBorder,
+                                    SMESH::smIdType FirstNodeIDOnSide,
+                                    SMESH::smIdType LastNodeIDOnSide,
+                                    CORBA::Boolean  CreatePolygons,
+                                    CORBA::Boolean  CreatePolyedrs)
 {
   SMESH_TRY;
   initData();
@@ -5551,13 +5461,12 @@ SMESH_MeshEditor_i::SewBorderToSide(CORBA::Long FirstNodeIDOnFreeBorder,
 //=======================================================================
 
 SMESH::SMESH_MeshEditor::Sew_Error
-SMESH_MeshEditor_i::SewSideElements(const SMESH::long_array& IDsOfSide1Elements,
-                                    const SMESH::long_array& IDsOfSide2Elements,
-                                    CORBA::Long NodeID1OfSide1ToMerge,
-                                    CORBA::Long NodeID1OfSide2ToMerge,
-                                    CORBA::Long NodeID2OfSide1ToMerge,
-                                    CORBA::Long NodeID2OfSide2ToMerge)
-  throw (SALOME::SALOME_Exception)
+SMESH_MeshEditor_i::SewSideElements(const SMESH::smIdType_array& IDsOfSide1Elements,
+                                    const SMESH::smIdType_array& IDsOfSide2Elements,
+                                    SMESH::smIdType NodeID1OfSide1ToMerge,
+                                    SMESH::smIdType NodeID1OfSide2ToMerge,
+                                    SMESH::smIdType NodeID2OfSide1ToMerge,
+                                    SMESH::smIdType NodeID2OfSide2ToMerge)
 {
   SMESH_TRY;
   initData();
@@ -5611,9 +5520,8 @@ SMESH_MeshEditor_i::SewSideElements(const SMESH::long_array& IDsOfSide1Elements,
  */
 //================================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::ChangeElemNodes(CORBA::Long ide,
-                                                   const SMESH::long_array& newIDs)
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::ChangeElemNodes(SMESH::smIdType ide,
+                                                   const SMESH::smIdType_array& newIDs)
 {
   SMESH_TRY;
   initData();
@@ -5651,7 +5559,6 @@ CORBA::Boolean SMESH_MeshEditor_i::ChangeElemNodes(CORBA::Long ide,
 void SMESH_MeshEditor_i::convertToQuadratic(CORBA::Boolean            theForce3d,
                                             CORBA::Boolean            theToBiQuad,
                                             SMESH::SMESH_IDSource_ptr theObject)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -5683,7 +5590,6 @@ void SMESH_MeshEditor_i::convertToQuadratic(CORBA::Boolean            theForce3d
 //=======================================================================
 
 CORBA::Boolean SMESH_MeshEditor_i::ConvertFromQuadratic()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -5703,7 +5609,6 @@ CORBA::Boolean SMESH_MeshEditor_i::ConvertFromQuadratic()
 //=======================================================================
 
 void SMESH_MeshEditor_i::ConvertToQuadratic(CORBA::Boolean theForce3d)
-  throw (SALOME::SALOME_Exception)
 {
   convertToQuadratic( theForce3d, false );
   TPythonDump() << this << ".ConvertToQuadratic("<<theForce3d<<")";
@@ -5717,7 +5622,6 @@ void SMESH_MeshEditor_i::ConvertToQuadratic(CORBA::Boolean theForce3d)
 
 void SMESH_MeshEditor_i::ConvertToQuadraticObject(CORBA::Boolean            theForce3d,
                                                   SMESH::SMESH_IDSource_ptr theObject)
-  throw (SALOME::SALOME_Exception)
 {
   convertToQuadratic( theForce3d, false, theObject );
   TPythonDump() << this << ".ConvertToQuadraticObject("<<theForce3d<<", "<<theObject<<")";
@@ -5731,7 +5635,6 @@ void SMESH_MeshEditor_i::ConvertToQuadraticObject(CORBA::Boolean            theF
 
 void SMESH_MeshEditor_i::ConvertToBiQuadratic(CORBA::Boolean            theForce3d,
                                               SMESH::SMESH_IDSource_ptr theObject)
-  throw (SALOME::SALOME_Exception)
 {
   convertToQuadratic( theForce3d, true, theObject );
   TPythonDump() << this << ".ConvertToBiQuadratic("<<theForce3d<<", "<<theObject<<")";
@@ -5744,7 +5647,6 @@ void SMESH_MeshEditor_i::ConvertToBiQuadratic(CORBA::Boolean            theForce
 //================================================================================
 
 void SMESH_MeshEditor_i::ConvertFromQuadraticObject(SMESH::SMESH_IDSource_ptr theObject)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -5889,7 +5791,7 @@ bool SMESH_MeshEditor_i::idSourceToSet(SMESH::SMESH_IDSource_ptr  theIDSource,
     }
   }
   prepareIdSource( theIDSource );
-  SMESH::long_array_var anIDs = theIDSource->GetIDs();
+  SMESH::smIdType_array_var anIDs = theIDSource->GetIDs();
   if ( anIDs->length() == 0 )
   {
     if ( error ) *error = IDSource_EMPTY;
@@ -5938,7 +5840,6 @@ bool SMESH_MeshEditor_i::idSourceToSet(SMESH::SMESH_IDSource_ptr  theIDSource,
 SMESH::SMESH_Group_ptr
 SMESH_MeshEditor_i::DoubleElements(SMESH::SMESH_IDSource_ptr theElements,
                                    const char*               theGroupName)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH::SMESH_Group_var newGroup;
 
@@ -6004,9 +5905,8 @@ SMESH_MeshEditor_i::DoubleElements(SMESH::SMESH_IDSource_ptr theElements,
 */
 //================================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::DoubleNodes( const SMESH::long_array& theNodes,
-                                                const SMESH::long_array& theModifiedElems )
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::DoubleNodes( const SMESH::smIdType_array& theNodes,
+                                                const SMESH::smIdType_array& theModifiedElems )
 {
   SMESH_TRY;
   initData();
@@ -6044,12 +5944,11 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodes( const SMESH::long_array& theNode
 */
 //================================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::DoubleNode( CORBA::Long              theNodeId,
-                                               const SMESH::long_array& theModifiedElems )
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::DoubleNode( SMESH::smIdType              theNodeId,
+                                               const SMESH::smIdType_array& theModifiedElems )
 {
   SMESH_TRY;
-  SMESH::long_array_var aNodes = new SMESH::long_array;
+  SMESH::smIdType_array_var aNodes = new SMESH::smIdType_array;
   aNodes->length( 1 );
   aNodes[ 0 ] = theNodeId;
 
@@ -6078,18 +5977,17 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNode( CORBA::Long              theNodeI
 
 CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroup(SMESH::SMESH_GroupBase_ptr theNodes,
                                                    SMESH::SMESH_GroupBase_ptr theModifiedElems )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   if ( CORBA::is_nil( theNodes ) && theNodes->GetType() != SMESH::NODE )
     return false;
 
-  SMESH::long_array_var aNodes = theNodes->GetListOfID();
-  SMESH::long_array_var aModifiedElems;
+  SMESH::smIdType_array_var aNodes = theNodes->GetListOfID();
+  SMESH::smIdType_array_var aModifiedElems;
   if ( !CORBA::is_nil( theModifiedElems ) )
     aModifiedElems = theModifiedElems->GetListOfID();
   else
-    aModifiedElems = new SMESH::long_array;
+    aModifiedElems = new SMESH::smIdType_array;
 
   TPythonDump pyDump; // suppress dump by the next line
 
@@ -6117,7 +6015,6 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroup(SMESH::SMESH_GroupBase_ptr th
 SMESH::SMESH_Group_ptr
 SMESH_MeshEditor_i::DoubleNodeGroupNew( SMESH::SMESH_GroupBase_ptr theNodes,
                                         SMESH::SMESH_GroupBase_ptr theModifiedElems )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH::SMESH_Group_var aNewGroup;
@@ -6126,12 +6023,12 @@ SMESH_MeshEditor_i::DoubleNodeGroupNew( SMESH::SMESH_GroupBase_ptr theNodes,
     return aNewGroup._retn();
 
   // Duplicate nodes
-  SMESH::long_array_var aNodes = theNodes->GetListOfID();
-  SMESH::long_array_var aModifiedElems;
+  SMESH::smIdType_array_var aNodes = theNodes->GetListOfID();
+  SMESH::smIdType_array_var aModifiedElems;
   if ( !CORBA::is_nil( theModifiedElems ) )
     aModifiedElems = theModifiedElems->GetListOfID();
   else {
-    aModifiedElems = new SMESH::long_array;
+    aModifiedElems = new SMESH::smIdType_array;
     aModifiedElems->length( 0 );
   }
 
@@ -6141,7 +6038,7 @@ SMESH_MeshEditor_i::DoubleNodeGroupNew( SMESH::SMESH_GroupBase_ptr theNodes,
   if ( aResult )
   {
     // Create group with newly created nodes
-    SMESH::long_array_var anIds = GetLastCreatedNodes();
+    SMESH::smIdType_array_var anIds = GetLastCreatedNodes();
     if (anIds->length() > 0) {
       std::string anUnindexedName (theNodes->GetName());
       std::string aNewName = GenerateGroupName(anUnindexedName + "_double");
@@ -6173,19 +6070,18 @@ SMESH_MeshEditor_i::DoubleNodeGroupNew( SMESH::SMESH_GroupBase_ptr theNodes,
 
 CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroups(const SMESH::ListOfGroups& theNodes,
                                                     const SMESH::ListOfGroups& theModifiedElems )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
 
   std::list< int > aNodes;
-  int i, n, j, m;
+  smIdType i, n, j, m;
   for ( i = 0, n = theNodes.length(); i < n; i++ )
   {
     SMESH::SMESH_GroupBase_var aGrp = theNodes[ i ];
     if ( !CORBA::is_nil( aGrp ) && aGrp->GetType() == SMESH::NODE )
     {
-      SMESH::long_array_var aCurr = aGrp->GetListOfID();
+      SMESH::smIdType_array_var aCurr = aGrp->GetListOfID();
       for ( j = 0, m = aCurr->length(); j < m; j++ )
         aNodes.push_back( aCurr[ j ] );
     }
@@ -6197,7 +6093,7 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroups(const SMESH::ListOfGroups& t
     SMESH::SMESH_GroupBase_var aGrp = theModifiedElems[ i ];
     if ( !CORBA::is_nil( aGrp ) && aGrp->GetType() != SMESH::NODE )
     {
-      SMESH::long_array_var aCurr = aGrp->GetListOfID();
+      SMESH::smIdType_array_var aCurr = aGrp->GetListOfID();
       for ( j = 0, m = aCurr->length(); j < m; j++ )
         anElems.push_back( aCurr[ j ] );
     }
@@ -6229,7 +6125,6 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroups(const SMESH::ListOfGroups& t
 SMESH::SMESH_Group_ptr
 SMESH_MeshEditor_i::DoubleNodeGroupsNew( const SMESH::ListOfGroups& theNodes,
                                          const SMESH::ListOfGroups& theModifiedElems )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH::SMESH_Group_var aNewGroup;
 
@@ -6240,7 +6135,7 @@ SMESH_MeshEditor_i::DoubleNodeGroupsNew( const SMESH::ListOfGroups& theNodes,
   if ( aResult )
   {
     // Create group with newly created nodes
-    SMESH::long_array_var anIds = GetLastCreatedNodes();
+    SMESH::smIdType_array_var anIds = GetLastCreatedNodes();
     if (anIds->length() > 0) {
       std::string anUnindexedName (theNodes[0]->GetName());
       std::string aNewName = GenerateGroupName(anUnindexedName + "_double");
@@ -6270,10 +6165,9 @@ SMESH_MeshEditor_i::DoubleNodeGroupsNew( const SMESH::ListOfGroups& theNodes,
 */
 //================================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElem( const SMESH::long_array& theElems,
-                                                   const SMESH::long_array& theNodesNot,
-                                                   const SMESH::long_array& theAffectedElems )
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElem( const SMESH::smIdType_array& theElems,
+                                                   const SMESH::smIdType_array& theNodesNot,
+                                                   const SMESH::smIdType_array& theAffectedElems )
 {
   SMESH_TRY;
   initData();
@@ -6311,10 +6205,9 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElem( const SMESH::long_array& theE
 */
 //================================================================================
 
-CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemInRegion ( const SMESH::long_array& theElems,
-                                                            const SMESH::long_array& theNodesNot,
-                                                            GEOM::GEOM_Object_ptr    theShape )
-  throw (SALOME::SALOME_Exception)
+CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeElemInRegion ( const SMESH::smIdType_array& theElems,
+                                                            const SMESH::smIdType_array& theNodesNot,
+                                                            GEOM::GEOM_Object_ptr        theShape )
 {
   SMESH_TRY;
   initData();
@@ -6355,7 +6248,6 @@ CORBA::Boolean
 SMESH_MeshEditor_i::DoubleNodeElemGroup(SMESH::SMESH_GroupBase_ptr theElems,
                                         SMESH::SMESH_GroupBase_ptr theNodesNot,
                                         SMESH::SMESH_GroupBase_ptr theAffectedElems)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   if ( CORBA::is_nil( theElems ) && theElems->GetType() == SMESH::NODE )
@@ -6400,7 +6292,6 @@ SMESH::SMESH_Group_ptr
 SMESH_MeshEditor_i::DoubleNodeElemGroupNew(SMESH::SMESH_GroupBase_ptr theElems,
                                            SMESH::SMESH_GroupBase_ptr theNodesNot,
                                            SMESH::SMESH_GroupBase_ptr theAffectedElems)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump pyDump;
   SMESH::ListOfGroups_var twoGroups = DoubleNodeElemGroup2New( theElems,
@@ -6437,7 +6328,6 @@ SMESH_MeshEditor_i::DoubleNodeElemGroup2New(SMESH::SMESH_GroupBase_ptr theElems,
                                             SMESH::SMESH_GroupBase_ptr theAffectedElems,
                                             CORBA::Boolean             theElemGroupNeeded,
                                             CORBA::Boolean             theNodeGroupNeeded)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH::SMESH_Group_var aNewElemGroup, aNewNodeGroup;
@@ -6470,14 +6360,14 @@ SMESH_MeshEditor_i::DoubleNodeElemGroup2New(SMESH::SMESH_GroupBase_ptr theElems,
     std::string aNewName = GenerateGroupName( std::string(elemGroupName.in()) + "_double");
     if ( !getEditor().GetLastCreatedElems().empty() && theElemGroupNeeded )
     {
-      SMESH::long_array_var anIds = GetLastCreatedElems();
+      SMESH::smIdType_array_var anIds = GetLastCreatedElems();
       SMESH::ElementType aGroupType = myMesh_i->GetElementType(anIds[0], true);
       aNewElemGroup = myMesh_i->CreateGroup(aGroupType, aNewName.c_str());
       aNewElemGroup->Add(anIds);
     }
     if ( !getEditor().GetLastCreatedNodes().empty() && theNodeGroupNeeded )
     {
-      SMESH::long_array_var anIds = GetLastCreatedNodes();
+      SMESH::smIdType_array_var anIds = GetLastCreatedNodes();
       aNewNodeGroup = myMesh_i->CreateGroup(SMESH::NODE, aNewName.c_str());
       aNewNodeGroup->Add(anIds);
     }
@@ -6522,7 +6412,6 @@ CORBA::Boolean
 SMESH_MeshEditor_i::DoubleNodeElemGroupInRegion(SMESH::SMESH_GroupBase_ptr theElems,
                                                 SMESH::SMESH_GroupBase_ptr theNodesNot,
                                                 GEOM::GEOM_Object_ptr      theShape )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   if ( CORBA::is_nil( theElems ) && theElems->GetType() == SMESH::NODE )
@@ -6572,7 +6461,7 @@ static void listOfGroupToSet(const SMESH::ListOfGroups& theGrpList,
     if ( !CORBA::is_nil( aGrp ) && (theIsNodeGrp ? aGrp->GetType() == SMESH::NODE
                                     : aGrp->GetType() != SMESH::NODE ) )
     {
-      SMESH::long_array_var anIDs = aGrp->GetIDs();
+      SMESH::smIdType_array_var anIDs = aGrp->GetIDs();
       arrayToSet( anIDs, theMeshDS, theElemSet, theIsNodeGrp ? SMDSAbs_Node : SMDSAbs_All );
     }
   }
@@ -6595,7 +6484,6 @@ CORBA::Boolean
 SMESH_MeshEditor_i::DoubleNodeElemGroups(const SMESH::ListOfGroups& theElems,
                                          const SMESH::ListOfGroups& theNodesNot,
                                          const SMESH::ListOfGroups& theAffectedElems)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -6637,7 +6525,6 @@ SMESH::SMESH_Group_ptr
 SMESH_MeshEditor_i::DoubleNodeElemGroupsNew(const SMESH::ListOfGroups& theElems,
                                             const SMESH::ListOfGroups& theNodesNot,
                                             const SMESH::ListOfGroups& theAffectedElems)
-  throw (SALOME::SALOME_Exception)
 {
   TPythonDump pyDump;
   SMESH::ListOfGroups_var twoGroups = DoubleNodeElemGroups2New( theElems,
@@ -6674,7 +6561,6 @@ SMESH_MeshEditor_i::DoubleNodeElemGroups2New(const SMESH::ListOfGroups& theElems
                                              const SMESH::ListOfGroups& theAffectedElems,
                                              CORBA::Boolean             theElemGroupNeeded,
                                              CORBA::Boolean             theNodeGroupNeeded)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH::SMESH_Group_var aNewElemGroup, aNewNodeGroup;
@@ -6702,14 +6588,14 @@ SMESH_MeshEditor_i::DoubleNodeElemGroups2New(const SMESH::ListOfGroups& theElems
     std::string aNewName = GenerateGroupName( std::string(elemGroupName.in()) + "_double");
     if ( !getEditor().GetLastCreatedElems().empty() && theElemGroupNeeded )
     {
-      SMESH::long_array_var anIds = GetLastCreatedElems();
+      SMESH::smIdType_array_var anIds = GetLastCreatedElems();
       SMESH::ElementType aGroupType = myMesh_i->GetElementType(anIds[0], true);
       aNewElemGroup = myMesh_i->CreateGroup(aGroupType, aNewName.c_str());
       aNewElemGroup->Add(anIds);
     }
     if ( !getEditor().GetLastCreatedNodes().empty() && theNodeGroupNeeded )
     {
-      SMESH::long_array_var anIds = GetLastCreatedNodes();
+      SMESH::smIdType_array_var anIds = GetLastCreatedNodes();
       aNewNodeGroup = myMesh_i->CreateGroup(SMESH::NODE, aNewName.c_str());
       aNewNodeGroup->Add(anIds);
     }
@@ -6755,7 +6641,6 @@ CORBA::Boolean
 SMESH_MeshEditor_i::DoubleNodeElemGroupsInRegion(const SMESH::ListOfGroups& theElems,
                                                  const SMESH::ListOfGroups& theNodesNot,
                                                  GEOM::GEOM_Object_ptr      theShape )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -6786,7 +6671,7 @@ SMESH_MeshEditor_i::DoubleNodeElemGroupsInRegion(const SMESH::ListOfGroups& theE
          duplication is not performed.
   This method is the first step of DoubleNodeElemGroupsInRegion.
   \param theElems - list of groups of elements (edges or faces) to be replicated
-  \param theNodesNot - list of groups of nodes not to replicated
+  \param theNodesNot - list of groups of nodes not to replicate
   \param theShape - shape to detect affected elements (element which geometric center
          located on or inside shape).
          The replicated nodes should be associated to affected elements.
@@ -6798,7 +6683,6 @@ SMESH::ListOfGroups*
 SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theElems,
                                                 const SMESH::ListOfGroups& theNodesNot,
                                                 GEOM::GEOM_Object_ptr      theShape )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   SMESH::ListOfGroups_var aListOfGroups = new SMESH::ListOfGroups();
@@ -6825,9 +6709,9 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl
   TPythonDump pyDump;
   if ( aResult && anAffected.size() > 0 )
   {
-    SMESH::long_array_var volumeIds = new SMESH::long_array;
-    SMESH::long_array_var   faceIds = new SMESH::long_array;
-    SMESH::long_array_var   edgeIds = new SMESH::long_array;
+    SMESH::smIdType_array_var volumeIds = new SMESH::smIdType_array;
+    SMESH::smIdType_array_var   faceIds = new SMESH::smIdType_array;
+    SMESH::smIdType_array_var   edgeIds = new SMESH::smIdType_array;
     volumeIds->length( anAffected.size() );
     faceIds  ->length( anAffected.size() );
     edgeIds  ->length( anAffected.size() );
@@ -6839,7 +6723,7 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl
     for (; eIt != anAffected.end(); ++eIt)
     {
       const SMDS_MeshElement* anElem = *eIt;
-      int elemId = anElem->GetID();
+      smIdType elemId = anElem->GetID();
       switch ( anElem->GetType() ) {
       case SMDSAbs_Volume: volumeIds[ivol++] = elemId; break;
       case SMDSAbs_Face:    faceIds[iface++] = elemId; break;
@@ -6898,7 +6782,6 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl
 //================================================================================
 
 CORBA::Boolean SMESH_MeshEditor_i::Make2DMeshFrom3D()
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -6940,7 +6823,6 @@ CORBA::Boolean
 SMESH_MeshEditor_i::DoubleNodesOnGroupBoundaries( const SMESH::ListOfGroups& theDomains,
                                                   CORBA::Boolean             createJointElems,
                                                   CORBA::Boolean             onAllBoundaries )
-  throw (SALOME::SALOME_Exception)
 {
   bool isOK = false;
 
@@ -6963,7 +6845,7 @@ SMESH_MeshEditor_i::DoubleNodesOnGroupBoundaries( const SMESH::ListOfGroups& the
     {
 //      if ( aGrp->GetType() != SMESH::VOLUME )
 //        THROW_SALOME_CORBA_EXCEPTION("Not a volume group", SALOME::BAD_PARAM);
-      SMESH::long_array_var anIDs = aGrp->GetIDs();
+      SMESH::smIdType_array_var anIDs = aGrp->GetIDs();
       arrayToSet( anIDs, aMeshDS, domains[ i ], SMDSAbs_All );
     }
   }
@@ -6998,7 +6880,6 @@ SMESH_MeshEditor_i::DoubleNodesOnGroupBoundaries( const SMESH::ListOfGroups& the
 
 CORBA::Boolean
 SMESH_MeshEditor_i::CreateFlatElementsOnFacesGroups( const SMESH::ListOfGroups& theGroupsOfFaces )
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -7016,7 +6897,7 @@ SMESH_MeshEditor_i::CreateFlatElementsOnFacesGroups( const SMESH::ListOfGroups&
       TIDSortedElemSet faceGroup;
       faceGroup.clear();
       faceGroups.push_back(faceGroup);
-      SMESH::long_array_var anIDs = aGrp->GetIDs();
+      SMESH::smIdType_array_var anIDs = aGrp->GetIDs();
       arrayToSet( anIDs, aMeshDS, faceGroups[ i ], SMDSAbs_All );
     }
   }
@@ -7051,7 +6932,6 @@ void SMESH_MeshEditor_i::CreateHoleSkin(CORBA::Double                  radius,
                                         const char*                    groupName,
                                         const SMESH::double_array&     theNodesCoords,
                                         SMESH::array_of_long_array_out GroupsOfNodes)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
 
@@ -7119,7 +6999,6 @@ SMESH_MeshEditor_i::MakeBoundaryMesh(SMESH::SMESH_IDSource_ptr idSource,
                                      CORBA::Boolean            toCopyElements,
                                      CORBA::Boolean            toCopyExistingBondary,
                                      SMESH::SMESH_Group_out    group)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -7216,7 +7095,6 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
                                                      const SMESH::ListOfIDSources& groups,
                                                      SMESH::SMESH_Mesh_out mesh,
                                                      SMESH::SMESH_Group_out group)
-  throw (SALOME::SALOME_Exception)
 {
   SMESH_TRY;
   initData();
@@ -7371,7 +7249,6 @@ CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
 
 void SMESH_MeshEditor_i::MakePolyLine(SMESH::ListOfPolySegments& theSegments,
                                       const char*                theGroupName)
-  throw (SALOME::SALOME_Exception)
 {
   if ( theSegments.length() == 0 )
     THROW_SALOME_CORBA_EXCEPTION("No segments given", SALOME::BAD_PARAM );
@@ -7497,7 +7374,6 @@ void SMESH_MeshEditor_i::MakePolyLine(SMESH::ListOfPolySegments& theSegments,
 
 SMESH::ListOfEdges* SMESH_MeshEditor_i::MakeSlot(SMESH::SMESH_GroupBase_ptr theSegments,
                                                  CORBA::Double              theWidth)
-  throw (SALOME::SALOME_Exception)
 {
   if ( CORBA::is_nil( theSegments ) ||
        theSegments->GetType() != SMESH::EDGE )