{
INFOS("SMESH_Mesh::~SMESH_Mesh");
+ // issue 0020340: EDF 1022 SMESH : Crash with FindNodeClosestTo in a second new study
+ // Notify event listeners at least that something happens
+ if ( SMESH_subMesh * sm = GetSubMeshContaining(1))
+ sm->ComputeStateEngine( SMESH_subMesh::MESH_ENTITY_REMOVED );
+
// delete groups
std::map < int, SMESH_Group * >::iterator itg;
for (itg = _mapGroup.begin(); itg != _mapGroup.end(); itg++) {
{
if(MYDEBUG) MESSAGE("SMESH_Mesh::ShapeToMesh");
- if ( !aShape.IsNull() && _isShapeToMesh )
- throw SALOME_Exception(LOCALIZED ("a shape to mesh has already been defined"));
-
+ if ( !aShape.IsNull() && _isShapeToMesh ) {
+ if ( aShape.ShapeType() != TopAbs_COMPOUND && // group contents is allowed to change
+ _myMeshDS->ShapeToMesh().ShapeType() != TopAbs_COMPOUND )
+ throw SALOME_Exception(LOCALIZED ("a shape to mesh has already been defined"));
+ }
// clear current data
if ( !_myMeshDS->ShapeToMesh().IsNull() )
{