]> SALOME platform Git repositories - modules/shaper.git/blob - src/SketchPlugin/SketchPlugin_ResultValidators.cpp
Salome HOME
Validators improvements (arguments for feature validator)
[modules/shaper.git] / src / SketchPlugin / SketchPlugin_ResultValidators.cpp
1 // File:        Model_ResultValidators.cpp
2 // Created:     23 July 2014
3 // Author:      Vitaly SMETANNIKOV
4
5 #include "SketchPlugin_ResultValidators.h"
6
7 #include <ModelAPI_Result.h>
8 #include <ModelAPI_Tools.h>
9 #include <GeomAPI_Curve.h>
10
11 ResultPtr result(const ObjectPtr theObject)
12 {
13   return boost::dynamic_pointer_cast<ModelAPI_Result>(theObject);
14 }
15
16 bool SketchPlugin_ResultPointValidator::isValid(const ObjectPtr theObject) const
17 {
18   ResultPtr aResult = result(theObject);
19   if (!aResult)
20     return false;
21   boost::shared_ptr<GeomAPI_Shape> aShape = ModelAPI_Tools::shape(aResult);
22   return aShape && aShape->isVertex();
23 }
24
25 bool SketchPlugin_ResultLineValidator::isValid(const ObjectPtr theObject) const
26 {
27   ResultPtr aResult = result(theObject);
28   if (!aResult)
29     return false;
30   boost::shared_ptr<GeomAPI_Shape> aShape = ModelAPI_Tools::shape(aResult);
31   return aShape && aShape->isEdge() && GeomAPI_Curve(aShape).isLine();
32
33   /*
34   if (aShape.ShapeType() == TopAbs_EDGE) {
35     TopoDS_Edge aEdge = TopoDS::Edge(aShape);
36     Standard_Real aStart, aEnd;
37     Handle(Geom_Curve) aCurve = BRep_Tool::Curve(aEdge, aStart, aEnd);
38     GeomAdaptor_Curve aAdaptor(aCurve);
39     return aAdaptor.GetType() == GeomAbs_Line;
40   }
41   return false;
42   */
43 }
44
45 bool SketchPlugin_ResultArcValidator::isValid(const ObjectPtr theObject) const
46 {
47   ResultPtr aResult = result(theObject);
48   if (!aResult)
49     return false;
50   boost::shared_ptr<GeomAPI_Shape> aShape = ModelAPI_Tools::shape(aResult);
51   return aShape && aShape->isEdge() && GeomAPI_Curve(aShape).isCircle();
52 }
53