Salome HOME
Merge branch 'Dev_0.6' of newgeom:newgeom into Dev_0.6
[modules/shaper.git] / src / PartSet / PartSet_OperationSketch.cpp
1 // File:        PartSet_OperationSketch.h
2 // Created:     20 Apr 2014
3 // Author:      Natalia ERMOLAEVA
4
5 #include <PartSet_OperationSketch.h>
6 #include <PartSet_Tools.h>
7
8 #include <SketchPlugin_Sketch.h>
9 #include <SketchPlugin_ConstraintLength.h>
10
11 #include <ModelAPI_Data.h>
12 #include <ModelAPI_AttributeDouble.h>
13 #include <ModelAPI_AttributeRefList.h>
14 #include <ModelAPI_Events.h>
15
16 #include <GeomAlgoAPI_FaceBuilder.h>
17 #include <GeomDataAPI_Point.h>
18 #include <GeomDataAPI_Dir.h>
19 #include <GeomAPI_XYZ.h>
20
21 #include <ModuleBase_ViewerPrs.h>
22 #include <ModuleBase_ISelection.h>
23 #include <ModuleBase_IViewer.h>
24 #include <Events_Loop.h>
25
26 #ifdef _DEBUG
27 #include <QDebug>
28 #endif
29
30 #include <QMouseEvent>
31
32 using namespace std;
33
34 PartSet_OperationSketch::PartSet_OperationSketch(const QString& theId, QObject* theParent)
35     : ModuleBase_Operation(theId, theParent)
36 {
37 }
38
39 PartSet_OperationSketch::~PartSet_OperationSketch()
40 {
41 }
42
43 bool PartSet_OperationSketch::isNestedOperationsEnabled() const
44 {
45   bool aHasSketchPlane = false;
46   if (feature()) {
47     std::shared_ptr<ModelAPI_Data> aData = feature()->data();
48     AttributeDoublePtr anAttr;
49     std::shared_ptr<GeomDataAPI_Dir> aNormal = std::dynamic_pointer_cast<GeomDataAPI_Dir>(
50         aData->attribute(SketchPlugin_Sketch::NORM_ID()));
51     aHasSketchPlane = aNormal && !(aNormal->x() == 0 && aNormal->y() == 0 && aNormal->z() == 0);
52   }
53   return aHasSketchPlane;
54 }