X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_Mesh.cxx;h=072fcdac72fff2244320c5c19e49750c45e7c897;hb=dbf226547fc4b1b1c901ab994db7c1708dd6576d;hp=d4a018b10c6ba96ae17965035cb2934e9158c76d;hpb=23d90107acec5e54ded86d9f309fe5cb42720b78;p=modules%2Fsmesh.git diff --git a/src/SMESHDS/SMESHDS_Mesh.cxx b/src/SMESHDS/SMESHDS_Mesh.cxx index d4a018b10..072fcdac7 100644 --- a/src/SMESHDS/SMESHDS_Mesh.cxx +++ b/src/SMESHDS/SMESHDS_Mesh.cxx @@ -894,16 +894,7 @@ void SMESHDS_Mesh::RemoveNode(const SMDS_MeshNode * n) { if ( n->NbInverseElements() == 0 && !(hasConstructionEdges() || hasConstructionFaces())) { - SMESHDS_SubMesh* subMesh = MeshElements( n->getshapeId() ); - SMESHDS_SubMeshIteratorPtr subIt; - if ( !subMesh ) - subIt = SubMeshes(); - for ( ; !subMesh && subIt->more(); ) { - subMesh = const_cast< SMESHDS_SubMesh* >( subIt->next() ); - if ( subMesh->IsComplexSubmesh() || !subMesh->Contains( n )) - subMesh = 0; - } - RemoveFreeNode( n, subMesh, true); + RemoveFreeNode( n, 0, true ); return; } @@ -965,7 +956,7 @@ void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt) if ( elt->getshapeId() > 0 ) subMesh = MeshElements( elt->getshapeId() ); - RemoveFreeElement( elt, subMesh, true); + RemoveFreeElement( elt, subMesh, true ); return; } @@ -974,7 +965,7 @@ void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt) list removedElems; list removedNodes; - SMDS_Mesh::RemoveElement(elt, removedElems, removedNodes, false); + SMDS_Mesh::RemoveElement(elt, removedElems, removedNodes, false ); removeFromContainers( this, myGroups, removedElems, false ); } @@ -1000,7 +991,7 @@ void SMESHDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elt, myScript->RemoveElement(elt->GetID()); // Rm from group - // Node can belong to several groups + // Element can belong to several groups if ( fromGroups && !myGroups.empty() ) { set::iterator GrIt = myGroups.begin(); for (; GrIt != myGroups.end(); GrIt++) { @@ -1012,10 +1003,12 @@ void SMESHDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elt, // Rm from sub-mesh // Element should belong to only one sub-mesh - if( subMesh ) - subMesh->RemoveElement(elt, /*deleted=*/false); + if ( !subMesh && elt->getshapeId() > 0 ) + subMesh = MeshElements( elt->getshapeId() ); + if ( subMesh ) + subMesh->RemoveElement( elt, /*deleted=*/false ); - SMDS_Mesh::RemoveFreeElement(elt); + SMDS_Mesh::RemoveFreeElement( elt ); } //================================================================================