const bool ignoreAuxiliary) const
{
SMESH_Algo* me = const_cast< SMESH_Algo* >( this );
+
+ std::list<const SMESHDS_Hypothesis *> savedHyps; // don't delete the list if
+ savedHyps.swap( me->_usedHypList ); // it does not change (#16578)
+
me->_usedHypList.clear();
if ( const SMESH_HypoFilter* filter = GetCompatibleHypoFilter( ignoreAuxiliary ))
{
if ( ignoreAuxiliary && _usedHypList.size() > 1 )
me->_usedHypList.clear(); //only one compatible hypothesis allowed
}
+ if ( _usedHypList == savedHyps )
+ savedHyps.swap( me->_usedHypList );
+
return _usedHypList;
}
const bool ignoreAuxiliary) const
{
SMESH_Algo* me = const_cast< SMESH_Algo* >( this );
+
+ std::list<const SMESHDS_Hypothesis *> savedHyps; // don't delete the list if
+ savedHyps.swap( me->_appliedHypList ); // it does not change (#16578)
+
me->_appliedHypList.clear();
if ( const SMESH_HypoFilter* filter = GetCompatibleHypoFilter( ignoreAuxiliary ))
aMesh.GetHypotheses( aShape, *filter, me->_appliedHypList, false );
+ if ( _appliedHypList == savedHyps )
+ savedHyps.swap( me->_appliedHypList );
+
return _appliedHypList;
}
}
else if ( theGroupName[0] ) // find/create a group of segments
{
- SMESH_Mesh::GroupIteratorPtr grpIt = myMesh->GetGroups();
- while ( !groupDS && grpIt->more() )
- {
- SMESH_Group* group = grpIt->next();
- if ( group->GetGroupDS()->GetType() == SMDSAbs_Edge &&
- strcmp( group->GetName(), theGroupName ) == 0 )
- {
- groupDS = dynamic_cast< SMESHDS_Group* >( group->GetGroupDS() );
- }
- }
+ // SMESH_Mesh::GroupIteratorPtr grpIt = myMesh->GetGroups();
+ // while ( !groupDS && grpIt->more() )
+ // {
+ // SMESH_Group* group = grpIt->next();
+ // if ( group->GetGroupDS()->GetType() == SMDSAbs_Edge &&
+ // strcmp( group->GetName(), theGroupName ) == 0 )
+ // {
+ // groupDS = dynamic_cast< SMESHDS_Group* >( group->GetGroupDS() );
+ // }
+ // }
if ( !groupDS )
{
SMESH::SMESH_Group_var groupVar = myMesh_i->CreateGroup( SMESH::EDGE, theGroupName );
while ( groupIt->more() )
{
::SMESH_Group* group = groupIt->next();
- int anId = group->GetGroupDS()->GetID();
+ int anId = group->GetID();
map<int, SMESH::SMESH_GroupBase_ptr>::iterator it = _mapGroups.find(anId);
if ( it != _mapGroups.end() && !CORBA::is_nil( it->second ))