From fddc257b5561516f0a40d6032a2f1efd1c56d228 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 7 Nov 2007 09:48:31 +0000 Subject: [PATCH] PAL16202,16203 (Propagation 1D on edges group) - * * theNumber - Number of subshapes. Object is selected if it contains theNumber of - * theSubShapeType sub-shapes + * * theNumber - Number of subshapes. Object is selected if it contains + * theNumber of theSubShapeType sub-shapes, or at least + * one theSubShapeType, provided that theNumber==0 --- src/SMESHFiltersSelection/SMESH_NumberFilter.cxx | 14 ++++++++------ src/SMESHFiltersSelection/SMESH_NumberFilter.hxx | 5 +++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/SMESHFiltersSelection/SMESH_NumberFilter.cxx b/src/SMESHFiltersSelection/SMESH_NumberFilter.cxx index 61162a581..36a091c72 100644 --- a/src/SMESHFiltersSelection/SMESH_NumberFilter.cxx +++ b/src/SMESHFiltersSelection/SMESH_NumberFilter.cxx @@ -35,8 +35,9 @@ #include "SALOMEDSClient_SObject.hxx" #include "SALOMEDS_SObject.hxx" -#include #include +#include +#include /*! * Class : SMESH_NumberFilter @@ -135,12 +136,13 @@ bool SMESH_NumberFilter::isOk (const SUIT_DataOwner* theDataOwner) const if (mySubShapeType == TopAbs_SHAPE); return true; - TopExp_Explorer anExp2 (aShape, mySubShapeType); - TopTools_MapOfShape aMap; - for (; anExp2.More(); anExp2.Next()) - aMap.Add(anExp2.Current()); + TopTools_IndexedMapOfShape aMap; + TopExp::MapShapes(aShape, mySubShapeType, aMap); - return myNumber == aMap.Extent(); + if ( myNumber ) + return myNumber == aMap.Extent(); // given number + + return aMap.Extent(); // at least one? } //======================================================================= diff --git a/src/SMESHFiltersSelection/SMESH_NumberFilter.hxx b/src/SMESHFiltersSelection/SMESH_NumberFilter.hxx index badf44006..479525bc4 100644 --- a/src/SMESHFiltersSelection/SMESH_NumberFilter.hxx +++ b/src/SMESHFiltersSelection/SMESH_NumberFilter.hxx @@ -43,8 +43,9 @@ class SUIT_DataOwner; * Filter geom objects by number of subshapes of the given type * Parameters of constructor: * * theSubShapeType - Type of subshape - * * theNumber - Number of subshapes. Object is selected if it contains theNumber of - * theSubShapeType sub-shapes + * * theNumber - Number of subshapes. Object is selected if it contains + * theNumber of theSubShapeType sub-shapes, or at least + * one theSubShapeType, provided that theNumber==0 * * theShapeType - This map specifies types of object to be selected * * theMainObject - Sub-shapes of this object is selected only * * theIsClosedOnly - Closed shapes is selected if this parameter is true -- 2.39.2