From dc1bb7eb8739178f83e794185cfe832f60b294a2 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 18 Aug 2018 02:47:04 +0200 Subject: [PATCH] Sketcher: Move autoremoveredundants method from SketchAnalyser to SketchObject --- src/Mod/Sketcher/App/SketchAnalysis.cpp | 22 ++++++---------------- src/Mod/Sketcher/App/SketchAnalysis.h | 2 -- src/Mod/Sketcher/App/SketchObject.cpp | 15 ++++++++++++--- src/Mod/Sketcher/App/SketchObject.h | 3 ++- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchAnalysis.cpp b/src/Mod/Sketcher/App/SketchAnalysis.cpp index 79f4929541..7dc31c5890 100644 --- a/src/Mod/Sketcher/App/SketchAnalysis.cpp +++ b/src/Mod/Sketcher/App/SketchAnalysis.cpp @@ -367,7 +367,7 @@ void SketchAnalysis::makeMissingPointOnPointCoincident(bool onebyone) solvesketch(status,dofs,true); if(status == -2) { //redundant constraints - autoRemoveRedundants(false); + sketch->autoRemoveRedundants(false); solvesketch(status,dofs,false); } @@ -446,7 +446,7 @@ void SketchAnalysis::makeMissingVerticalHorizontal(bool onebyone) solvesketch(status,dofs,true); if(status == -2) { //redundant constraints - autoRemoveRedundants(false); + sketch->autoRemoveRedundants(false); solvesketch(status,dofs,false); } @@ -641,7 +641,7 @@ void SketchAnalysis::makeMissingEquality(bool onebyone) solvesketch(status,dofs,true); if(status == -2) { //redundant constraints - autoRemoveRedundants(false); + sketch->autoRemoveRedundants(false); solvesketch(status,dofs,false); } @@ -687,16 +687,6 @@ void SketchAnalysis::solvesketch(int &status, int &dofs, bool updategeo) } } -void SketchAnalysis::autoRemoveRedundants(bool updategeo) -{ - auto redundants = sketch->getLastRedundant(); - - for(size_t i=0;idelConstraints(redundants,updategeo); -} - int SketchAnalysis::autoconstraint(double precision, double angleprecision, bool includeconstruction) { App::Document* doc = sketch->getDocument(); @@ -743,7 +733,7 @@ int SketchAnalysis::autoconstraint(double precision, double angleprecision, bool solvesketch(status,dofs,true); if(status == -2) { // redundants - autoRemoveRedundants(false); + sketch->autoRemoveRedundants(false); solvesketch(status,dofs,false); } @@ -765,7 +755,7 @@ int SketchAnalysis::autoconstraint(double precision, double angleprecision, bool solvesketch(status,dofs,true); if(status == -2) { // redundants - autoRemoveRedundants(false); + sketch->autoRemoveRedundants(false); solvesketch(status,dofs,false); } @@ -793,7 +783,7 @@ int SketchAnalysis::autoconstraint(double precision, double angleprecision, bool solvesketch(status,dofs,true); if(status == -2) { // redundants - autoRemoveRedundants(false); + sketch->autoRemoveRedundants(false); solvesketch(status,dofs,false); } diff --git a/src/Mod/Sketcher/App/SketchAnalysis.h b/src/Mod/Sketcher/App/SketchAnalysis.h index 5d3886b2c1..7a8e1fb9f5 100644 --- a/src/Mod/Sketcher/App/SketchAnalysis.h +++ b/src/Mod/Sketcher/App/SketchAnalysis.h @@ -116,8 +116,6 @@ public: /// solves the sketch and retrieves the error status, and the degrees of freedom. /// It enables to solve updating the geometry (so moving the geometry to match the constraints) or preserving the geometry. void solvesketch(int &status, int &dofs, bool updategeo); - /// It gets the redundant constraints from the solver and deletes them - void autoRemoveRedundants(bool updategeo); protected: Sketcher::SketchObject* sketch; diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index dbb4cc7ab9..8879dff1f8 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -6354,10 +6354,19 @@ void SketchObject::makeMissingEquality(bool onebyone) analyser->makeMissingEquality(onebyone); } -void SketchObject::autoRemoveRedundants(bool updategeo) +int SketchObject::autoRemoveRedundants(bool updategeo) { - if(analyser) - analyser->autoRemoveRedundants(updategeo); + auto redundants = getLastRedundant(); + + if(redundants.size() == 0) + return 0; + + for(size_t i=0;i