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