bos #16792 [CEA 16785] Cannot select COMPSOLID

This commit is contained in:
jfa 2019-04-24 13:30:22 +03:00
parent 2940ca79a8
commit 6c3f954171

View File

@ -1965,16 +1965,7 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes,
return; return;
SUIT_SelectionFilter* aFilter; SUIT_SelectionFilter* aFilter;
if ( theModes.Extent() == 1 ) if ( theModes.Extent() > 0 )
{
int aMode = TColStd_MapIteratorOfMapOfInteger( theModes ).Key();
if ( aMode == GEOM_COMPOUNDFILTER )
aFilter = getComplexFilter( theSubShapes );
else
aFilter = getFilter( aMode );
}
else if ( theModes.Extent() > 1 )
{ {
TColStd_MapOfInteger aTopAbsModes; TColStd_MapOfInteger aTopAbsModes;
TColStd_MapIteratorOfMapOfInteger anIter( theModes ); TColStd_MapIteratorOfMapOfInteger anIter( theModes );
@ -1985,6 +1976,14 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes,
int aMode = anIter.Key(); int aMode = anIter.Key();
if ( aMode == GEOM_COMPOUNDFILTER ) if ( aMode == GEOM_COMPOUNDFILTER )
aFilter = getComplexFilter( theSubShapes ); aFilter = getComplexFilter( theSubShapes );
if ( aMode == GEOM_COMPOUND ) {
// always add COMPSOLID filter together with COMPOUND filter
aFilter = new GEOM_TypeFilter( getStudy(), TopAbs_COMPSOLID, true );
aListOfFilters.append( aFilter );
// add the COMPOUND filter itself
aFilter = getFilter( aMode );
}
else else
aFilter = getFilter( aMode ); aFilter = getFilter( aMode );
@ -1992,7 +1991,8 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes,
aListOfFilters.append( aFilter ); aListOfFilters.append( aFilter );
} }
aFilter = new GEOM_LogicalFilter( aListOfFilters, GEOM_LogicalFilter::LO_OR ); if (aListOfFilters.size() > 1)
aFilter = new GEOM_LogicalFilter( aListOfFilters, GEOM_LogicalFilter::LO_OR );
} }
else else
return; return;