Salome HOME
PAL11986. Set REDAY_TO_COMPUTE to the main submesh when mesh becomes empty
authoreap <eap@opencascade.com>
Mon, 27 Mar 2006 09:34:26 +0000 (09:34 +0000)
committereap <eap@opencascade.com>
Mon, 27 Mar 2006 09:34:26 +0000 (09:34 +0000)
src/SMESH/SMESH_MeshEditor.cxx

index 9929164820f93b24fad299e489f41211fcc3c39c..dbc1449292b0de8c6e165cd17a9dc0878ef74fa6 100644 (file)
@@ -122,11 +122,8 @@ bool SMESH_MeshEditor::Remove (const list< int >& theIDs,
       const SMDS_MeshNode* node = static_cast<const SMDS_MeshNode*>( nodeIt->next() );
       const SMDS_PositionPtr& aPosition = node->GetPosition();
       if ( aPosition.get() ) {
-        int aShapeID = aPosition->GetShapeId();
-        if ( aShapeID ) {
-          TopoDS_Shape aShape = aMesh->IndexToShape( aShapeID );
-          SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( aShape );
-          if ( sm )
+        if ( int aShapeID = aPosition->GetShapeId() ) {
+          if ( SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( aShapeID ) )
             smmap.insert( sm );
         }
       }
@@ -146,6 +143,10 @@ bool SMESH_MeshEditor::Remove (const list< int >& theIDs,
       (*smIt)->ComputeStateEngine( SMESH_subMesh::MESH_ENTITY_REMOVED );
   }
 
+  // Check if the whole mesh becomes empty
+  if ( SMESH_subMesh * sm = GetMesh()->GetSubMeshContaining( 1 ) )
+    sm->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE );
+
   return true;
 }