Salome HOME
Merge branch 'Dev_0.6.1' of newgeom:newgeom into Dev_0.6.1
[modules/shaper.git] / src / PartSet / PartSet_Filters.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        PartSet_Filters.cpp
4 // Created:     08 Nov 2014
5 // Author:      Vitaly SMETANNIKOV
6
7 #include "PartSet_Filters.h"
8
9 #include <ModuleBase_IWorkshop.h>
10
11 #include <ModelAPI_Feature.h>
12 #include <FeaturesPlugin_Group.h>
13
14 #include <AIS_InteractiveObject.hxx>
15 #include <AIS_Shape.hxx>
16
17
18 IMPLEMENT_STANDARD_HANDLE(PartSet_GlobalFilter, ModuleBase_ShapeDocumentFilter);
19 IMPLEMENT_STANDARD_RTTIEXT(PartSet_GlobalFilter, ModuleBase_ShapeDocumentFilter);
20
21 Standard_Boolean PartSet_GlobalFilter::IsOk(const Handle(SelectMgr_EntityOwner)& theOwner) const
22 {
23   if (ModuleBase_ShapeDocumentFilter::IsOk(theOwner)) {
24     if (theOwner->HasSelectable()) {
25       Handle(AIS_InteractiveObject) aAisObj = 
26         Handle(AIS_InteractiveObject)::DownCast(theOwner->Selectable());
27       if (!aAisObj.IsNull()) {
28         std::shared_ptr<GeomAPI_AISObject> aAISObj = AISObjectPtr(new GeomAPI_AISObject());
29         aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aAisObj));
30         ObjectPtr aObj = myWorkshop->findPresentedObject(aAISObj);
31         if (aObj) {
32           FeaturePtr aFeature = ModelAPI_Feature::feature(aObj);
33           if (aFeature) {
34             return aFeature->getKind() != FeaturesPlugin_Group::ID();
35           } else 
36             return Standard_True;
37         } else
38           // This is not object controlled by the filter
39           return Standard_True;
40       }
41     }
42   }
43   return Standard_False;
44 }