From 57a4f3e47c4dd73a804ea6d2a12d9af873c2ccb8 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 19 Jan 2021 11:27:42 +0100 Subject: [PATCH] Sketcher: Update solver partially redundant constraint information in the solver messages --- src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp | 4 +++ src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 29 +++++++++++++++++-- src/Mod/Sketcher/Gui/ViewProviderSketch.h | 2 ++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp b/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp index c3441c7360..730256a978 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherMessages.cpp @@ -116,6 +116,10 @@ void TaskSketcherMessages::on_labelConstrainStatus_linkActivated(const QString & else if( str == QString::fromLatin1("#malformed")) Gui::Application::Instance->commandManager().runCommandByName("Sketcher_SelectMalformedConstraints"); + else + if( str == QString::fromLatin1("#partiallyredundant")) + Gui::Application::Instance->commandManager().runCommandByName("Sketcher_SelectPartiallyRedundantConstraints"); + } void TaskSketcherMessages::on_autoUpdate_stateChanged(int state) diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 35400c64d5..04594487ef 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -6395,6 +6395,13 @@ QString ViewProviderSketch::appendRedundantMsg(const std::vector &redundant redundant); } +QString ViewProviderSketch::appendPartiallyRedundantMsg(const std::vector &partiallyredundant) +{ + return appendConstraintMsg(tr("The following constraint is partially redundant:"), + tr("The following constraints are partially redundant:"), + partiallyredundant); +} + QString ViewProviderSketch::appendMalformedMsg(const std::vector &malformed) { return appendConstraintMsg(tr("Please remove the following malformed constraint:"), @@ -6429,6 +6436,7 @@ void ViewProviderSketch::UpdateSolverInformation() int dofs = getSketchObject()->getLastDoF(); bool hasConflicts = getSketchObject()->getLastHasConflicts(); bool hasRedundancies = getSketchObject()->getLastHasRedundancies(); + bool hasPartiallyRedundant = getSketchObject()->getLastHasPartialRedundancies(); bool hasMalformed = getSketchObject()->getLastHasMalformedConstraints(); if (getSketchObject()->Geometry.getSize() == 0) { @@ -6476,10 +6484,27 @@ void ViewProviderSketch::UpdateSolverInformation() } } else if (!hasRedundancies) { + QString infoString; + if (dofs == 1) - signalSetUp(tr("Under-constrained sketch with 1 degree of freedom")); + infoString = tr("Under-constrained sketch with 1 degree of freedom. %1") + .arg(hasPartiallyRedundant? + QString::fromLatin1("
%1%2
%3

") + .arg(tr("Sketch contains partially redundant constraints ")) + .arg(tr("(click to select)")) + .arg(appendPartiallyRedundantMsg(getSketchObject()->getLastPartiallyRedundant())) + : QString()); else - signalSetUp(tr("Under-constrained sketch with %1 degrees of freedom").arg(dofs)); + infoString = tr("Under-constrained sketch with %1 degrees of freedom. %2") + .arg(dofs) + .arg(hasPartiallyRedundant? + QString::fromLatin1("
%1%2
%3

") + .arg(tr("Sketch contains partially redundant constraints ")) + .arg(tr("(click to select)")) + .arg(appendPartiallyRedundantMsg(getSketchObject()->getLastPartiallyRedundant())) + : QString()); + + signalSetUp(infoString); } signalSolved(QString::fromLatin1("%1").arg(tr("Solved in %1 sec").arg(getSketchObject()->getLastSolveTime()))); diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index 48a3ee15ae..b702ca0996 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -94,6 +94,8 @@ class SketcherGuiExport ViewProviderSketch : public PartGui::ViewProvider2DObjec static QString appendConflictMsg(const std::vector &conflicting); /// generates a warning message about redundant constraints and appends it to the given message static QString appendRedundantMsg(const std::vector &redundant); + /// generates a warning message about partially redundant constraints and appends it to the given message + static QString appendPartiallyRedundantMsg(const std::vector &partiallyredundant); /// generates a warning message about redundant constraints and appends it to the given message static QString appendMalformedMsg(const std::vector &redundant);