From b01313c0d8557989cd4724225260345383f5377a Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 19 Jan 2021 11:26:13 +0100 Subject: [PATCH] Sketcher: SketchObject partially redundant status --- src/Mod/Sketcher/App/SketchObject.cpp | 8 +++++++- src/Mod/Sketcher/App/SketchObject.h | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index fc86dea023a1..e87e51d7a7be 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -245,9 +245,11 @@ void SketchObject::retrieveSolverDiagnostics() { lastHasConflict = solvedSketch.hasConflicts(); lastHasRedundancies = solvedSketch.hasRedundancies(); + lastHasPartialRedundancies = solvedSketch.hasPartialRedundancies(); lastHasMalformedConstraints = solvedSketch.hasMalformedConstraints(); lastConflicting=solvedSketch.getConflicting(); lastRedundant=solvedSketch.getRedundant(); + lastPartiallyRedundant=solvedSketch.getPartiallyRedundant(); lastMalformedConstraints=solvedSketch.getMalformedConstraints(); } @@ -314,6 +316,10 @@ int SketchObject::solve(bool updateGeoAfterSolving/*=true*/) Base::Console().Error("Sketch %s has malformed constraints!\n",this->getNameInDocument()); } + if(lastHasPartialRedundancies) { + Base::Console().Warning("Sketch %s has partially redundant constraints!\n",this->getNameInDocument()); + } + lastSolveTime=solvedSketch.getSolveTime(); if (err == 0 && updateGeoAfterSolving) { @@ -656,7 +662,7 @@ int SketchObject::setUpSketch() retrieveSolverDiagnostics(); - if(lastHasRedundancies || lastDoF < 0 || lastHasConflict || lastHasMalformedConstraints) + if(lastHasRedundancies || lastDoF < 0 || lastHasConflict || lastHasMalformedConstraints || lastHasPartialRedundancies) Constraints.touch(); return lastDoF; diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index d1769fea0d41..aeae1bd9a881 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -350,6 +350,8 @@ class SketcherExport SketchObject : public Part::Part2DObject inline bool getLastHasConflicts() const {return lastHasConflict;} /// gets HasRedundancies status of last solver execution inline bool getLastHasRedundancies() const {return lastHasRedundancies;} + /// gets HasRedundancies status of last solver execution + inline bool getLastHasPartialRedundancies() const {return lastHasPartialRedundancies;} /// gets HasMalformedConstraints status of last solver execution inline bool getLastHasMalformedConstraints() const {return lastHasMalformedConstraints;} /// gets solver status of last solver execution @@ -361,6 +363,8 @@ class SketcherExport SketchObject : public Part::Part2DObject /// gets the redundant constraints of last solver execution inline const std::vector &getLastRedundant(void) const { return lastRedundant; } /// gets the redundant constraints of last solver execution + inline const std::vector &getLastPartiallyRedundant(void) const { return lastPartiallyRedundant; } + /// gets the redundant constraints of last solver execution inline const std::vector &getLastMalformedConstraints(void) const { return lastMalformedConstraints; } public: /* Solver exposed interface */ @@ -514,12 +518,14 @@ class SketcherExport SketchObject : public Part::Part2DObject int lastDoF; bool lastHasConflict; bool lastHasRedundancies; + bool lastHasPartialRedundancies; bool lastHasMalformedConstraints; int lastSolverStatus; float lastSolveTime; std::vector lastConflicting; std::vector lastRedundant; + std::vector lastPartiallyRedundant; std::vector lastMalformedConstraints; boost::signals2::scoped_connection constraintsRenamedConn;