Salome HOME
0021338: EDF 1926 SMESH: New controls and filters
authoreap <eap@opencascade.com>
Thu, 26 Jan 2012 15:32:57 +0000 (15:32 +0000)
committereap <eap@opencascade.com>
Thu, 26 Jan 2012 15:32:57 +0000 (15:32 +0000)
   Call myPredicate->SetMesh( GetMesh() ) in order to let him update
   his data according to a changed mesh

src/SMESHDS/SMESHDS_GroupOnFilter.cxx

index 8307b279ac6b64cd47ea39b3b66f3709ed23db3b..3c2b2a36b46035d210c88949fa5f1fa214ece837 100644 (file)
@@ -149,6 +149,7 @@ void SMESHDS_GroupOnFilter::update() const
     me->myElements.clear();
     if ( myPredicate )
     {
+      myPredicate->SetMesh( GetMesh() ); // hope myPredicate updates self here if necessary
       me->myElements.reserve( GetMesh()->GetMeshInfo().NbElements(GetType()));
       SMDS_ElemIteratorPtr elIt = GetMesh()->elementsIterator(GetType());
       while ( elIt->more() )
@@ -157,7 +158,8 @@ void SMESHDS_GroupOnFilter::update() const
         if ( myPredicate->IsSatisfy( e->GetID() ))
           me->myElements.push_back( e );
       }
-      me->myElements.resize( myElements.size() );
+      vector< const SMDS_MeshElement*> elems( me->myElements.begin(), me->myElements.end() );
+      me->myElements.swap( elems );
     }
     me->setChanged( false );
   }