Salome HOME
4004ebe40058b94610b952ca2e3e2291fc2d86fb
[modules/geom.git] / src / GEOMFiltersSelection / GEOM_EdgeFilter.cxx
1 #include "GEOM_EdgeFilter.h"
2
3 #include <BRepAdaptor_Curve.hxx>
4 #include <TopoDS_Edge.hxx>
5 #include <TopoDS.hxx>
6 #include <StdSelect_TypeOfEdge.hxx>
7
8 //=======================================================================
9 // function : GEOM_EdgeFilter
10 // purpose  : 
11 //=======================================================================
12 GEOM_EdgeFilter::GEOM_EdgeFilter( SalomeApp_Study* study, const int kind )
13 : GEOM_SelectionFilter( study ),
14 myKind( kind )
15 {
16   add( TopAbs_EDGE );
17 }
18
19 //=======================================================================
20 // function : ~GEOM_SelectionFilter
21 // purpose  : 
22 //=======================================================================
23 GEOM_EdgeFilter::~GEOM_EdgeFilter()
24 {
25 }
26
27 //=======================================================================
28 // function : isShapeOk
29 // purpose  : 
30 //=======================================================================
31 bool GEOM_EdgeFilter::isShapeOk( const TopoDS_Shape& theShape ) const
32 {
33   if ( !theShape.IsNull() && theShape.ShapeType() == TopAbs_EDGE )
34   {
35     BRepAdaptor_Curve aCurve( TopoDS::Edge( theShape ) );
36     GeomAbs_CurveType aType = aCurve.GetType();
37         
38     switch ( myKind ) 
39     {
40     case StdSelect_AnyEdge: return Standard_True;
41     case StdSelect_Line:    return ( aType == GeomAbs_Line );
42     case StdSelect_Circle:  return ( aType == GeomAbs_Circle );
43     }
44   }
45   return false;
46 }
47