Salome HOME
Regression of SALOME_TESTS/Grids/smesh/bugs_03/D6
authoreap <eap@opencascade.com>
Mon, 18 Nov 2013 16:51:16 +0000 (16:51 +0000)
committereap <eap@opencascade.com>
Mon, 18 Nov 2013 16:51:16 +0000 (16:51 +0000)
Improve the EventListener to clean all EDGEs of a complex side if one EDGE is cleaned

src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx

index c2798d959d990cbf4669bd08231b2a99d5dcfed3..c71c9dfc02ba1e1e047f5f60aeb95d1450aba7eb 100644 (file)
@@ -215,6 +215,18 @@ namespace {
           }
         }
       }
+      // clean all EDGEs of a complex side if one EDGE is cleaned
+      else if ( event     == SMESH_subMesh::CLEAN &&
+                eventType == SMESH_subMesh::COMPUTE_EVENT )
+      {
+        SMESH_subMeshIteratorPtr smIt = subMesh->getDependsOnIterator(/*includeSelf=*/false);
+        while ( smIt->more() ) // loop on VERTEX sub-meshes
+        {
+          SMESH_subMesh* sm = smIt->next();
+          if ( sm->IsAlwaysComputed() ) // it's an internal node sub-mesh
+            sm->ComputeStateEngine( SMESH_subMesh::CLEAN );
+        }
+      }
     }
   }; // struct VertexNodesRestoringListener
 }