1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: SketchSolver_ISolver.h
4 // Created: 30 Nov 2015
5 // Author: Artem ZHIDKOV
7 #ifndef SketchSolver_ISolver_H_
8 #define SketchSolver_ISolver_H_
10 #include <SketchSolver.h>
14 /// The result of constraints solution
15 enum SketchSolver_SolveStatus {
19 STATUS_FAILED // set if no one other status is applicable
24 * Interface providing operations to solve sketches.
26 class SketchSolver_ISolver
29 virtual ~SketchSolver_ISolver() {}
31 /// \brief Changes the ID of the group to solve
32 void setGroup(const GroupID& theGroupID)
33 { myGroup = theGroupID; }
35 /// \brief Set or unset the flag which allows to find all failed constraints
36 void calculateFailedConstraints(bool theSic)
37 { myFindFaileds = theSic; }
39 /// \brief Prepare for solving. Store initial values of parameters for undo
40 virtual void prepare() = 0;
42 /// \brief Solve the set of equations
43 /// \return identifier whether solution succeeded
44 virtual SketchSolver_SolveStatus solve() = 0;
46 /// \brief Revert solution to initial values
47 virtual void undo() = 0;
50 GroupID myGroup; ///< ID of the group to be solved
51 bool myFindFaileds; ///< flag to find conflicting or inappropriate constraints
54 typedef std::shared_ptr<SketchSolver_ISolver> SolverPtr;