mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-09 15:53:08 +05:00
bos #16792 [CEA 16785] Cannot select COMPSOLID
This commit is contained in:
parent
2940ca79a8
commit
6c3f954171
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user