X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchSolver%2FSketchSolver_Solver.h;h=7079f1598549d2660c1c15102dce44a84a18bba4;hb=9c54fb01877c455abb5b5ff22e384468f795b328;hp=beb2f249f7d24b321c87bb31435745e3adc74e0e;hpb=507f658f34fc6c42f48fb83a8fa916c6f0e33fd3;p=modules%2Fshaper.git diff --git a/src/SketchSolver/SketchSolver_Solver.h b/src/SketchSolver/SketchSolver_Solver.h index beb2f249f..7079f1598 100644 --- a/src/SketchSolver/SketchSolver_Solver.h +++ b/src/SketchSolver/SketchSolver_Solver.h @@ -1,10 +1,83 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: SketchSolver_Solver.h // Created: 07 May 2014 // Author: Artem ZHIDKOV -#ifndef SketchSolver_Solver_Headerfile -#define SketchSolver_Solver_Headerfile +#ifndef SketchSolver_Solver_H_ +#define SketchSolver_Solver_H_ #include "SketchSolver.h" +// Need to be defined before including SolveSpace to avoid additional dependances on Windows platform +#if defined(WIN32) && !defined(HAVE_C99_INTEGER_TYPES) +typedef unsigned int UINT32; +#else +#include +#endif +#include +#include + +#include + +#define SLVS_RESULT_EMPTY_SET -1 + +// Unknown constraint (for error reporting) +#define SLVS_C_UNKNOWN 0 +// Unknown entity +#define SLVS_E_UNKNOWN 0 + +/** + * The main class that performs the high-level operations for connection to the SolveSpace. + */ +class SketchSolver_Solver +{ + public: + SketchSolver_Solver(); + ~SketchSolver_Solver(); + + /** \brief Initialize the ID of the group + */ + inline void setGroupID(Slvs_hGroup theGroupID) + { + myGroupID = theGroupID; + } + + /** \brief Change array of parameters + * \param[in] theParameters vector of parameters + */ + void setParameters(const std::vector& theParameters); + + /** \brief Change array of entities + * \param[in] theEntities vector of entities + */ + void setEntities(const std::vector& theEntities); + + /** \brief Change array of constraints + * \param[in] theConstraints vector of constraints + */ + void setConstraints(const std::vector& theConstraints); + + /** \brief Store the parameters of the point which was moved by user. + * The solver will watch this items to be constant + * \param[in] theDragged list of parameters (not more than 4) which should not be changed during solving + */ + void setDraggedParameters(const std::vector& theDragged); + + /** \brief Solve the set of equations + * \return identifier whether solution succeeded + */ + int solve(); + + /** \brief Updates the list of parameters by calculated values + * \param[in,out] theParameters parameters to be updated + * \return \c true if parameters are updated correctly + */ + bool getResult(std::vector& theParameters); + + private: + Slvs_hGroup myGroupID; ///< identifier of the group to be solved + Slvs_System myEquationsSystem; ///< set of equations for solving in SolveSpace +}; + #endif