- // PAL8021. do not go upper than SOLID, else ComputeStateEngine(CLEANDEP)
- // will erase mesh on other shapes in a compound
- if ( ancestor.ShapeType() >= TopAbs_SOLID ) {
- SMESH_subMesh *aSubMesh = _father->GetSubMeshContaining(ancestor);
- if (aSubMesh)
- aSubMesh->ComputeStateEngine(CLEANDEP);
- }
- }
- ComputeStateEngine(CLEAN);
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-static void removeSubMesh( SMESHDS_Mesh * meshDS, const TopoDS_Shape& subShape)
-{
- SMESHDS_SubMesh * subMeshDS = meshDS->MeshElements(subShape);
- if (subMeshDS!=NULL)
- {
- SMDS_ElemIteratorPtr ite=subMeshDS->GetElements();
- while(ite->more())
- {
- const SMDS_MeshElement * elt = ite->next();
- //MESSAGE( " RM elt: "<<elt->GetID()<<" ( "<<elt->NbNodes()<<" )" );
- meshDS->RemoveElement(elt);
- }
-
- SMDS_NodeIteratorPtr itn=subMeshDS->GetNodes();
- while(itn->more())
- {
- const SMDS_MeshNode * node = itn->next();
- //MESSAGE( " RM node: "<<node->GetID());
- meshDS->RemoveNode(node);
+ if ( SMESH_Gen::GetShapeDim( ancestor ) == dimToClean ) {
+ // PAL8021. do not go upper than SOLID, else ComputeStateEngine(CLEAN)
+ // will erase mesh on other shapes in a compound
+ if ( ancestor.ShapeType() >= TopAbs_SOLID ) {
+ SMESH_subMesh *aSubMesh = _father->GetSubMeshContaining(ancestor);
+ if (aSubMesh)
+ aSubMesh->ComputeStateEngine(CLEAN);
+ }