diff --git a/src/Mod/Sketcher/App/planegcs/Constraints.cpp b/src/Mod/Sketcher/App/planegcs/Constraints.cpp index 4152400d9e42..2ee3d60325a3 100644 --- a/src/Mod/Sketcher/App/planegcs/Constraints.cpp +++ b/src/Mod/Sketcher/App/planegcs/Constraints.cpp @@ -97,8 +97,9 @@ int Constraint::findParamInPvec(double *param) } // Equal -ConstraintEqual::ConstraintEqual(double *p1, double *p2) +ConstraintEqual::ConstraintEqual(double *p1, double *p2, double p1p2ratio) { + ratio = p1p2ratio; pvec.push_back(p1); pvec.push_back(p2); origpvec = pvec; @@ -117,7 +118,7 @@ void ConstraintEqual::rescale(double coef) double ConstraintEqual::error() { - return scale * (*param1() - *param2()); + return scale * (*param1() - ratio *(*param2())); } double ConstraintEqual::grad(double *param) diff --git a/src/Mod/Sketcher/App/planegcs/Constraints.h b/src/Mod/Sketcher/App/planegcs/Constraints.h index 55437b9af34d..02020651f970 100644 --- a/src/Mod/Sketcher/App/planegcs/Constraints.h +++ b/src/Mod/Sketcher/App/planegcs/Constraints.h @@ -131,10 +131,11 @@ namespace GCS class ConstraintEqual : public Constraint { private: + double ratio; inline double* param1() { return pvec[0]; } inline double* param2() { return pvec[1]; } public: - ConstraintEqual(double *p1, double *p2); + ConstraintEqual(double *p1, double *p2, double p1p2ratio=1.0); virtual ConstraintType getTypeId(); virtual void rescale(double coef=1.); virtual double error();