#16559 EDF - Changes to the Concatenate function: non regression test fails

fix group management
This commit is contained in:
eap 2019-02-13 16:26:17 +03:00
parent 4cd676f92c
commit 1aaacad698

View File

@ -2038,8 +2038,7 @@ SMESH_Group* SMESH_Mesh::AddGroup (const SMDSAbs_ElementType theType,
SMESH_Group* aGroup = new SMESH_Group ( id, this, theType, theName, theShape, thePredicate ); SMESH_Group* aGroup = new SMESH_Group ( id, this, theType, theName, theShape, thePredicate );
GetMeshDS()->AddGroup( aGroup->GetGroupDS() ); GetMeshDS()->AddGroup( aGroup->GetGroupDS() );
_mapGroup[ id ] = aGroup; _mapGroup[ id ] = aGroup;
while ( _mapGroup.count( _groupId )) _groupId = 1 + _mapGroup.rbegin()->first;
++_groupId;
return aGroup; return aGroup;
} }
@ -2051,7 +2050,7 @@ SMESH_Group* SMESH_Mesh::AddGroup (const SMDSAbs_ElementType theType,
SMESH_Group* SMESH_Mesh::AddGroup (SMESHDS_GroupBase* groupDS) throw(SALOME_Exception) SMESH_Group* SMESH_Mesh::AddGroup (SMESHDS_GroupBase* groupDS) throw(SALOME_Exception)
{ {
if ( !groupDS ) if ( !groupDS )
throw SALOME_Exception(LOCALIZED ("SMESH_Mesh::AddGroup(): NULL SMESHDS_GroupBase")); throw SALOME_Exception(LOCALIZED ("SMESH_Mesh::AddGroup(): NULL SMESHDS_GroupBase"));
std::map <int, SMESH_Group*>::iterator i_g = _mapGroup.find( groupDS->GetID() ); std::map <int, SMESH_Group*>::iterator i_g = _mapGroup.find( groupDS->GetID() );
@ -2066,8 +2065,7 @@ SMESH_Group* SMESH_Mesh::AddGroup (SMESHDS_GroupBase* groupDS) throw(SALOME_Exce
_mapGroup[ groupDS->GetID() ] = aGroup; _mapGroup[ groupDS->GetID() ] = aGroup;
GetMeshDS()->AddGroup( aGroup->GetGroupDS() ); GetMeshDS()->AddGroup( aGroup->GetGroupDS() );
while ( _mapGroup.count( _groupId )) _groupId = 1 + _mapGroup.rbegin()->first;
++_groupId;
return aGroup; return aGroup;
} }
@ -2077,7 +2075,7 @@ SMESH_Group* SMESH_Mesh::AddGroup (SMESHDS_GroupBase* groupDS) throw(SALOME_Exce
/*! /*!
* \brief Creates SMESH_Groups for not wrapped SMESHDS_Groups * \brief Creates SMESH_Groups for not wrapped SMESHDS_Groups
* \retval bool - true if new SMESH_Groups have been created * \retval bool - true if new SMESH_Groups have been created
* *
*/ */
//================================================================================ //================================================================================
@ -2093,8 +2091,8 @@ bool SMESH_Mesh::SynchronizeGroups()
if ( !_mapGroup.count( _groupId )) if ( !_mapGroup.count( _groupId ))
_mapGroup[_groupId] = new SMESH_Group( groupDS ); _mapGroup[_groupId] = new SMESH_Group( groupDS );
} }
while ( _mapGroup.count( _groupId )) if ( !_mapGroup.empty() )
++_groupId; _groupId = 1 + _mapGroup.rbegin()->first;
return nbGroups < _mapGroup.size(); return nbGroups < _mapGroup.size();
} }