X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchSolver%2FSolveSpaceSolver%2FSolveSpaceSolver_Solver.h;h=00c7424df6738f04db30ce9428723df7aff141b8;hb=b857d9ea753bef79dbbadaeb990b54aae56e488d;hp=c853970a34d43eb53025c67226357f489215e48f;hpb=37c59d59b17e4a7e304588fb647488457a0c7283;p=modules%2Fshaper.git diff --git a/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Solver.h b/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Solver.h index c853970a3..00c7424df 100644 --- a/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Solver.h +++ b/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Solver.h @@ -1,15 +1,29 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: SolveSpaceSolver_Solver.h -// Created: 07 May 2014 -// Author: Artem ZHIDKOV +// Copyright (C) 2014-2020 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #ifndef SolveSpaceSolver_Solver_H_ #define SolveSpaceSolver_Solver_H_ #include -// Need to be defined before including SolveSpace to avoid additional dependences on Windows platform +// Need to be defined before including SolveSpace to avoid additional +// dependences on Windows platform #if defined(WIN32) && !defined(HAVE_C99_INTEGER_TYPES) typedef unsigned int UINT32; #else @@ -41,7 +55,7 @@ typedef unsigned int UINT32; */ class SolveSpaceSolver_Solver : public SketchSolver_ISolver { - public: +public: SolveSpaceSolver_Solver(); virtual ~SolveSpaceSolver_Solver(); @@ -74,8 +88,25 @@ class SolveSpaceSolver_Solver : public SketchSolver_ISolver */ virtual SketchSolver_SolveStatus solve(); - private: + /// \brief Prepare for solving. Store initial values of parameters for undo + virtual void prepare(); + + /// \brief Revert solution to initial values + virtual void undo(); + + /// \brief Check the constraint is conflicted with others + virtual bool isConflicting(const ConstraintID& theConstraint) const; + + /// \brief Degrees of freedom + virtual int dof() const; + +private: + /// \brief Check whether degenerated arcs exist + bool hasDegeneratedArcs() const; + +private: Slvs_System myEquationsSystem; ///< set of equations for solving in SolveSpace + Slvs_Param* myParamsCopy; ///< copy of parameters }; #endif