From 4d15b8f66acf8ffda626bd17122ab8ee02825b8a Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Thu, 13 Jun 2024 10:13:59 +0200 Subject: [PATCH] Sketcher: Fix circle diameter OVP --- .../Sketcher/Gui/DrawSketchHandlerCircle.h | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h index c9028a13cf..e7a5310acc 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h @@ -511,22 +511,22 @@ void DSHCircleController::adaptParameters(Base::Vector2d onSketchPos) case SelectMode::SeekSecond: { if (handler->constructionMethod() == DrawSketchHandlerCircle::ConstructionMethod::Center) { - if (!onViewParameters[OnViewParameter::Third]->isSet) { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( - "User parameter:BaseApp/Preferences/Mod/Sketcher/dimensioning"); - bool dimensioningDiameter = hGrp->GetBool("DimensioningDiameter", true); - bool dimensioningRadius = hGrp->GetBool("DimensioningRadius", true); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Sketcher/dimensioning"); + bool dimDiameter = hGrp->GetBool("DimensioningDiameter", true); + bool dimRadius = hGrp->GetBool("DimensioningRadius", true); + bool useRadius = dimRadius && !dimDiameter; - if (dimensioningRadius && !dimensioningDiameter) { - setOnViewParameterValue(OnViewParameter::Third, handler->radius); - } - else { - setOnViewParameterValue(OnViewParameter::Third, handler->radius * 2); - } + if (!onViewParameters[OnViewParameter::Third]->isSet) { + double val = handler->radius * (useRadius ? 1 : 2); + setOnViewParameterValue(OnViewParameter::Third, val); } Base::Vector3d start = toVector3d(handler->centerPoint); Base::Vector3d end = toVector3d(onSketchPos); + if (!useRadius) { + start = toVector3d(handler->centerPoint - (onSketchPos - handler->centerPoint)); + } onViewParameters[OnViewParameter::Third]->setPoints(start, end); }