Salome HOME
Bug 0016617: Regression in V5.1.1rc3: the groups are not generated. V5_1_1 V5_1_1rc4 V5_1_1rc5
authorjfa <jfa@opencascade.com>
Thu, 19 Mar 2009 14:41:11 +0000 (14:41 +0000)
committerjfa <jfa@opencascade.com>
Thu, 19 Mar 2009 14:41:11 +0000 (14:41 +0000)
src/SMESHDS/SMESHDS_Mesh.cxx
src/SMESHDS/SMESHDS_SubMesh.cxx

index 61db43a743c9f3572afcd70dd31ce045bf6c12ee..25c772b2141a6c04f4ae37e223979383b0a9e377 100644 (file)
@@ -701,7 +701,7 @@ void SMESHDS_Mesh::RemoveNode(const SMDS_MeshNode * n)
     else
       SubIt = myShapeIndexToSubMesh.begin();
     for ( ; !subMesh && SubIt != myShapeIndexToSubMesh.end(); SubIt++ )
-      if ( SubIt->second->Contains( n ))
+      if (!SubIt->second->IsComplexSubmesh() && SubIt->second->Contains( n ))
         subMesh = SubIt->second;
 
     RemoveFreeNode( n, subMesh, true);
@@ -764,7 +764,7 @@ void SMESHDS_Mesh::RemoveElement(const SMDS_MeshElement * elt)
     SMESHDS_SubMesh* subMesh=0;
     map<int,SMESHDS_SubMesh*>::iterator SubIt = myShapeIndexToSubMesh.begin();
     for ( ; !subMesh && SubIt != myShapeIndexToSubMesh.end(); SubIt++ )
-      if ( SubIt->second->Contains( elt ))
+      if (!SubIt->second->IsComplexSubmesh() && SubIt->second->Contains( elt ))
         subMesh = SubIt->second;
 
     RemoveFreeElement( elt, subMesh, true);
index 6d9ba0835e7fc45436da07e501760a4b2acbe1ee..0013e54e162ef89a80febb483a22a60435ffce2b 100644 (file)
@@ -243,17 +243,18 @@ SMDS_NodeIteratorPtr SMESHDS_SubMesh::GetNodes() const
 bool SMESHDS_SubMesh::Contains(const SMDS_MeshElement * ME) const
 {
   // DO NOT TRY TO FIND A REMOVED ELEMENT !!
-  if ( IsComplexSubmesh() || !ME )
+  //if ( IsComplexSubmesh() || !ME )
+  if (!ME )
     return false;
 
-//   if ( IsComplexSubmesh() )
-//   {
-//     set<const SMESHDS_SubMesh*>::const_iterator aSubIt = mySubMeshes.begin();
-//     for ( ; aSubIt != mySubMeshes.end(); aSubIt++ )
-//       if ( (*aSubIt)->Contains( ME ))
-//         return true;
-//     return false;
-//   }
+  if ( IsComplexSubmesh() )
+  {
+    set<const SMESHDS_SubMesh*>::const_iterator aSubIt = mySubMeshes.begin();
+    for ( ; aSubIt != mySubMeshes.end(); aSubIt++ )
+      if ( (*aSubIt)->Contains( ME ))
+        return true;
+    return false;
+  }
 
   if ( ME->GetType() == SMDSAbs_Node )
     return ( myNodes.find( ME ) != myNodes.end() );