Salome HOME
e9aa10d9e9fd9d3efbbec702c50d72eeca2e9769
[modules/shaper.git] / src / SketchSolver / SketchSolver_Builder.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:    SketchSolver_Builder.h
4 // Created: 25 Mar 2015
5 // Author:  Artem ZHIDKOV
6
7 #ifndef SketchSolver_Builder_H_
8 #define SketchSolver_Builder_H_
9
10 #include "SketchSolver.h"
11 #include <SketchSolver_Constraint.h>
12
13 #include <SketchPlugin_Constraint.h>
14
15 #include <ModelAPI_CompositeFeature.h>
16
17 /** \class   SketchSolver_Builder
18  *  \ingroup Plugins
19  *  \brief   Create bridges between SketchPlugin constraints and SolveSpace constraints
20  */
21 class SketchSolver_Builder
22 {
23 private:
24   /// Default constructor
25   SketchSolver_Builder() {}
26
27 public:
28   /// \brief Returns single instance of builder
29   static SketchSolver_Builder* getInstance();
30
31   /// \brief Creates a solver's constraint using given SketchPlugin constraint
32   ///        or returns empty pointer if not all attributes are correct
33   SolverConstraintPtr createConstraint(ConstraintPtr theConstraint);
34
35   /// \brief Creates temporary constraint to fix the placement of the feature
36   SolverConstraintPtr createRigidConstraint(FeaturePtr theFixedFeature);
37
38   /// \brief Converts sketch parameters to the list of SolveSpace entities.
39   ///        Identifiers of entities and parameters are local. They should be changed while adding into storage.
40   ///        The sketch entity goes last.
41   /// \param[in]  theSketch     the element to be converted
42   /// \param[out] theEntities   created list of entities
43   /// \param[out] theParameters created list of parameters of the entities
44   /// \return \c true if workplane created
45   bool createWorkplane(CompositeFeaturePtr theSketch,
46                        std::vector<Slvs_Entity>& theEntities,
47                        std::vector<Slvs_Param>& theParameters);
48
49   /// \brief Converts attribute to the list of entities.
50   ///        Identifiers are local (see createWorkplane).
51   ///        The main entity goes last.
52   bool createEntity(AttributePtr theAttribute,
53                     std::vector<Slvs_Entity>& theEntities,
54                     std::vector<Slvs_Param>& theParameters);
55   /// \brief Converts feature to the list of entities.
56   ///        Identifiers are local (see createWorkplane).
57   ///        The main entity goes last.
58   bool createEntity(FeaturePtr theFeature,
59                     std::vector<Slvs_Entity>& theEntities,
60                     std::vector<Slvs_Param>& theParameters);
61
62   /// \brief Converts normal and OX direction to the list of entities representing a normal in SolveSpace.
63   ///        Identifiers are local (see createWorkplane).
64   ///        The main entity goes last.
65   bool createNormal(AttributePtr theNormal,
66                     AttributePtr theDirX,
67                     std::vector<Slvs_Entity>& theEntities,
68                     std::vector<Slvs_Param>& theParameters);
69
70 private:
71   static SketchSolver_Builder* mySelf;
72 };
73
74 #endif