Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / ModuleBase / ModuleBase_FilterNoDegeneratedEdge.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        ModuleBase_ViewerFilters.cpp
4 // Created:     10 Feb 2015
5 // Author:      Natalia ERMOLAEVA
6
7
8 #include "ModuleBase_FilterNoDegeneratedEdge.h"
9
10 #include <StdSelect_BRepOwner.hxx>
11 #include <TopoDS.hxx>
12 #include <TopoDS_Shape.hxx>
13 #include <BRep_Tool.hxx>
14
15 IMPLEMENT_STANDARD_HANDLE(ModuleBase_FilterNoDegeneratedEdge, StdSelect_EdgeFilter);
16 IMPLEMENT_STANDARD_RTTIEXT(ModuleBase_FilterNoDegeneratedEdge, StdSelect_EdgeFilter);
17
18 ModuleBase_FilterNoDegeneratedEdge::ModuleBase_FilterNoDegeneratedEdge()
19 : StdSelect_EdgeFilter(StdSelect_AnyEdge)
20 {
21 }
22
23 Standard_Boolean ModuleBase_FilterNoDegeneratedEdge::IsOk(const Handle(SelectMgr_EntityOwner)& theOwner) const
24 {
25   bool isEdge = StdSelect_EdgeFilter::IsOk(theOwner);
26   if (isEdge) {
27     Handle(StdSelect_BRepOwner) anOwner = Handle(StdSelect_BRepOwner)::DownCast(theOwner);
28     if (!anOwner.IsNull() && anOwner->HasShape()) {
29       const TopoDS_Shape& aShape = anOwner->Shape();
30       if (BRep_Tool::Degenerated(TopoDS::Edge(aShape)))
31         return Standard_False;
32     }
33   }
34   return isEdge;
35 }
36