diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h index 7e6d235b4d..31d94c7e9e 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerArc.h @@ -532,15 +532,21 @@ void DSHArcControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchPo { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) { Base::Vector2d dir = onSketchPos - handler->centerPoint; if (dir.Length() < Precision::Confusion()) { @@ -548,46 +554,46 @@ void DSHArcControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchPo } double radius = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - radius = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + radius = thirdParam->getValue(); if (radius < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->centerPoint + radius * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); onSketchPos.x = handler->centerPoint.x + cos(angle) * radius; onSketchPos.y = handler->centerPoint.y + sin(angle) * radius; } } else { - if (onViewParameters[OnViewParameter::Third]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + onSketchPos.x = thirdParam->getValue(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Fourth]->getValue(); + if (fourthParam->isSet) { + onSketchPos.y = fourthParam->getValue(); } - if (onViewParameters[OnViewParameter::Third]->isSet - && onViewParameters[OnViewParameter::Fourth]->isSet + if (thirdParam->isSet && fourthParam->isSet && (onSketchPos - handler->firstPoint).Length() < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); } } } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) { - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - double arcAngle = - Base::toRadians(onViewParameters[OnViewParameter::Fifth]->getValue()); + if (fifthParam->isSet) { + double arcAngle = Base::toRadians(fifthParam->getValue()); if (fmod(fabs(arcAngle), 2 * std::numbers::pi) < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get()); + unsetOnViewParameter(fifthParam.get()); return; } double angle = handler->startAngle + arcAngle; @@ -596,12 +602,12 @@ void DSHArcControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchPo } } else { - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Fifth]->getValue(); + if (fifthParam->isSet) { + onSketchPos.x = fifthParam->getValue(); } - if (onViewParameters[OnViewParameter::Sixth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Sixth]->getValue(); + if (sixthParam->isSet) { + onSketchPos.y = sixthParam->getValue(); } } } break; @@ -615,88 +621,91 @@ void DSHArcController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, handler->radius); } double range = Base::toDegrees(handler->startAngle); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->centerPoint); Base::Vector3d end = toVector3d(onSketchPos); - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(handler->startAngle); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(handler->startAngle); } else { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Third]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Fourth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Third]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Fourth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + thirdParam->setLabelAutoDistanceReverse(!sameSign); + fourthParam->setLabelAutoDistanceReverse(sameSign); + thirdParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + fourthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) { double range = Base::toDegrees(handler->arcAngle); - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->centerPoint); - onViewParameters[OnViewParameter::Fifth]->setPoints(start, Base::Vector3d()); + fifthParam->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fifth]->setLabelStartAngle(handler->startAngle); - onViewParameters[OnViewParameter::Fifth]->setLabelRange(handler->arcAngle); + fifthParam->setLabelStartAngle(handler->startAngle); + fifthParam->setLabelRange(handler->arcAngle); } else { - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Sixth]->isSet) { + if (!sixthParam->isSet) { setOnViewParameterValue(OnViewParameter::Sixth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Fifth]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Sixth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Fifth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Sixth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + fifthParam->setLabelAutoDistanceReverse(!sameSign); + sixthParam->setLabelAutoDistanceReverse(sameSign); + fifthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + sixthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } } break; default: @@ -709,30 +718,34 @@ void DSHArcController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->setState(SelectMode::SeekThird); } } break; case SelectMode::SeekThird: { if (handler->constructionMethod() == DrawSketchHandlerArc::ConstructionMethod::Center) { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + if (fifthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } else { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing - || onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h index d02d736384..0d212d7d19 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h @@ -619,44 +619,50 @@ void DSHArcSlotControllerBase::doEnforceControlParameters(Base::Vector2d& onSket switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + auto dir = onSketchPos - handler->centerPoint; if (dir.Length() < Precision::Confusion()) { dir.x = 1.0; // if direction null, default to (1,0) } double radius = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - radius = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + radius = thirdParam->getValue(); if (radius < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->centerPoint + radius * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); onSketchPos.x = handler->centerPoint.x + cos(angle) * radius; onSketchPos.y = handler->centerPoint.y + sin(angle) * radius; } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - double arcAngle = - Base::toRadians(onViewParameters[OnViewParameter::Fifth]->getValue()); + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + + if (fifthParam->isSet) { + double arcAngle = Base::toRadians(fifthParam->getValue()); if (fmod(fabs(arcAngle), 2 * std::numbers::pi) < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get()); + unsetOnViewParameter(fifthParam.get()); } else { double length = (onSketchPos - handler->centerPoint).Length(); @@ -667,15 +673,17 @@ void DSHArcSlotControllerBase::doEnforceControlParameters(Base::Vector2d& onSket } } break; case SelectMode::SeekFourth: { - if (onViewParameters[OnViewParameter::Sixth]->isSet) { - double radius2 = onViewParameters[OnViewParameter::Sixth]->getValue(); + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + + if (sixthParam->isSet) { + double radius2 = sixthParam->getValue(); if ((fabs(radius2) < Precision::Confusion() && handler->constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) || (fabs(handler->radius - radius2) < Precision::Confusion() && handler->constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::RectangleSlot)) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Sixth].get()); + unsetOnViewParameter(sixthParam.get()); } else { onSketchPos = @@ -693,59 +701,67 @@ void DSHArcSlotController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, handler->radius); } double range = Base::toDegrees(handler->startAngle); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->centerPoint); Base::Vector3d end = toVector3d(onSketchPos); - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(handler->startAngle); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(handler->startAngle); } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + double range = Base::toDegrees(handler->arcAngle); - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->centerPoint); - onViewParameters[OnViewParameter::Fifth]->setPoints(start, Base::Vector3d()); + fifthParam->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fifth]->setLabelStartAngle(handler->startAngleBackup); - onViewParameters[OnViewParameter::Fifth]->setLabelRange(handler->arcAngle); + fifthParam->setLabelStartAngle(handler->startAngleBackup); + fifthParam->setLabelRange(handler->arcAngle); } break; case SelectMode::SeekFourth: { + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + double dist = handler->r; if (handler->constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::RectangleSlot) { dist = (handler->r - handler->radius); } - if (!onViewParameters[OnViewParameter::Sixth]->isSet) { + if (!sixthParam->isSet) { setOnViewParameterValue(OnViewParameter::Sixth, dist); } @@ -753,7 +769,7 @@ void DSHArcSlotController::adaptParameters(Base::Vector2d onSketchPos) Base::Vector3d end = start + (start - toVector3d(handler->centerPoint)).Normalize() * dist; - onViewParameters[OnViewParameter::Sixth]->setPoints(start, end); + sixthParam->setPoints(start, end); } break; default: break; @@ -765,28 +781,32 @@ void DSHArcSlotController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->setState(SelectMode::SeekThird); } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + if (fifthParam->hasFinishedEditing) { handler->setState(SelectMode::SeekFourth); } } break; case SelectMode::SeekFourth: { - if (onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) { + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (sixthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h index f0bd34d5c7..a3e389deff 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h @@ -958,19 +958,25 @@ void DSHBSplineControllerBase::doEnforceControlParameters(Base::Vector2d& onSket { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->resetSeekSecond) { handler->resetSeekSecond = false; - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); setFocusToOnViewParameter(OnViewParameter::Third); return; } @@ -983,10 +989,10 @@ void DSHBSplineControllerBase::doEnforceControlParameters(Base::Vector2d& onSket } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + length = thirdParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } @@ -1000,18 +1006,16 @@ void DSHBSplineControllerBase::doEnforceControlParameters(Base::Vector2d& onSket } } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); onSketchPos.x = prevPoint.x + cos(angle) * length; onSketchPos.y = prevPoint.y + sin(angle) * length; } - if (onViewParameters[OnViewParameter::Third]->isSet - && onViewParameters[OnViewParameter::Fourth]->isSet + if (thirdParam->isSet && fourthParam->isSet && (onSketchPos - prevPoint).Length() < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); } } break; default: @@ -1024,23 +1028,27 @@ void DSHBSplineController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + Base::Vector2d prevPoint; if (!handler->points.empty()) { prevPoint = handler->getLastPoint(); @@ -1050,20 +1058,20 @@ void DSHBSplineController::adaptParameters(Base::Vector2d onSketchPos) Base::Vector3d end = toVector3d(onSketchPos); Base::Vector3d vec = end - start; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, vec.Length()); } double range = (onSketchPos - prevPoint).Angle(); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, Base::toDegrees(range), Base::Unit::Angle); } - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(range); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(range); } break; default: break; @@ -1075,20 +1083,24 @@ void DSHBSplineController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { - double x = onViewParameters[OnViewParameter::First]->getValue(); - double y = onViewParameters[OnViewParameter::Second]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet && secondParam->isSet) { + double x = firstParam->getValue(); + double y = secondParam->getValue(); handler->onButtonPressed(Base::Vector2d(x, y)); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->canGoToNextMode(); // its not going to next mode - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); } } break; default: diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h index 536bb2fdb0..7389906e9e 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerCircle.h @@ -438,22 +438,27 @@ void DSHCircleControllerBase::doEnforceControlParameters(Base::Vector2d& onSketc { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == DrawSketchHandlerCircle::ConstructionMethod::Center) { - if (onViewParameters[OnViewParameter::Third]->isSet) { - double radius = (handler->isDiameter ? 0.5 : 1) - * onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + double radius = (handler->isDiameter ? 0.5 : 1) * thirdParam->getValue(); if (radius < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } @@ -467,35 +472,36 @@ void DSHCircleControllerBase::doEnforceControlParameters(Base::Vector2d& onSketc } } else { - if (onViewParameters[OnViewParameter::Third]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + onSketchPos.x = thirdParam->getValue(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Fourth]->getValue(); + if (fourthParam->isSet) { + onSketchPos.y = fourthParam->getValue(); } - if (onViewParameters[OnViewParameter::Third]->isSet - && onViewParameters[OnViewParameter::Fourth]->isSet + if (thirdParam->isSet && fourthParam->isSet && (onSketchPos - handler->firstPoint).Length() < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); } } } break; case SelectMode::SeekThird: { // 3 rims only - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Fifth]->getValue(); + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + + if (fifthParam->isSet) { + onSketchPos.x = fifthParam->getValue(); } - if (onViewParameters[OnViewParameter::Sixth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Sixth]->getValue(); + if (sixthParam->isSet) { + onSketchPos.y = sixthParam->getValue(); } - if (onViewParameters[OnViewParameter::Fifth]->isSet - && onViewParameters[OnViewParameter::Sixth]->isSet + if (fifthParam->isSet && sixthParam->isSet && areCollinear(handler->firstPoint, handler->secondPoint, onSketchPos)) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Sixth].get()); + unsetOnViewParameter(fifthParam.get()); + unsetOnViewParameter(sixthParam.get()); } } break; default: @@ -508,23 +514,27 @@ void DSHCircleController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == DrawSketchHandlerCircle::ConstructionMethod::Center) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( @@ -533,7 +543,7 @@ void DSHCircleController::adaptParameters(Base::Vector2d onSketchPos) bool dimRadius = hGrp->GetBool("DimensioningRadius", true); bool useRadius = dimRadius && !dimDiameter; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { double val = handler->radius * (useRadius ? 1 : 2); setOnViewParameterValue(OnViewParameter::Third, val); } @@ -544,42 +554,41 @@ void DSHCircleController::adaptParameters(Base::Vector2d onSketchPos) start = toVector3d(handler->centerPoint - (onSketchPos - handler->centerPoint)); } - onViewParameters[OnViewParameter::Third]->setPoints(start, end); + thirdParam->setPoints(start, end); } else { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Third]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Fourth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Third]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Fourth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + thirdParam->setLabelAutoDistanceReverse(!sameSign); + fourthParam->setLabelAutoDistanceReverse(sameSign); + thirdParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + fourthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } } break; case SelectMode::SeekThird: { // 3 rims only - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Sixth]->isSet) { + if (!sixthParam->isSet) { setOnViewParameterValue(OnViewParameter::Sixth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Fifth]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Sixth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Fifth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Sixth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + fifthParam->setLabelAutoDistanceReverse(!sameSign); + sixthParam->setLabelAutoDistanceReverse(sameSign); + fifthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + sixthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; default: break; @@ -591,21 +600,24 @@ void DSHCircleController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + + if (thirdParam->hasFinishedEditing && handler->constructionMethod() == DrawSketchHandlerCircle::ConstructionMethod::Center) { handler->setState(SelectMode::End); } - else if (onViewParameters.size() > 3 && onViewParameters[OnViewParameter::Third]->isSet - && onViewParameters[OnViewParameter::Fourth]->isSet + else if (onViewParameters.size() > 3 && thirdParam->isSet && fourthParam->isSet && handler->constructionMethod() == DrawSketchHandlerCircle::ConstructionMethod::ThreeRim) { @@ -613,9 +625,10 @@ void DSHCircleController::doChangeDrawSketchHandlerMode() } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing - || onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h index 4dc40c089a..8e4991699e 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerEllipse.h @@ -499,15 +499,21 @@ void DSHEllipseControllerBase::doEnforceControlParameters(Base::Vector2d& onSket switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == DrawSketchHandlerEllipse::ConstructionMethod::Center) { Base::Vector2d dir = onSketchPos - handler->centerPoint; @@ -516,45 +522,46 @@ void DSHEllipseControllerBase::doEnforceControlParameters(Base::Vector2d& onSket } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + length = thirdParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->centerPoint + length * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); onSketchPos.x = handler->centerPoint.x + cos(angle) * length; onSketchPos.y = handler->centerPoint.y + sin(angle) * length; } } else { - if (onViewParameters[OnViewParameter::Third]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + onSketchPos.x = thirdParam->getValue(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Fourth]->getValue(); + if (fourthParam->isSet) { + onSketchPos.y = fourthParam->getValue(); } - if (onViewParameters[OnViewParameter::Third]->isSet - && onViewParameters[OnViewParameter::Fourth]->isSet + if (thirdParam->isSet && fourthParam->isSet && (onSketchPos - handler->apoapsis).Length() < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); } } } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (handler->constructionMethod() == DrawSketchHandlerEllipse::ConstructionMethod::Center) { - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - auto minorradius = onViewParameters[OnViewParameter::Fifth]->getValue(); + if (fifthParam->isSet) { + auto minorradius = fifthParam->getValue(); onSketchPos = handler->centerPoint + (handler->periapsis - handler->centerPoint) .Perpendicular(true) @@ -563,19 +570,18 @@ void DSHEllipseControllerBase::doEnforceControlParameters(Base::Vector2d& onSket } } else { - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Fifth]->getValue(); + if (fifthParam->isSet) { + onSketchPos.x = fifthParam->getValue(); } - if (onViewParameters[OnViewParameter::Sixth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Sixth]->getValue(); + if (sixthParam->isSet) { + onSketchPos.y = sixthParam->getValue(); } - if (onViewParameters[OnViewParameter::Fifth]->isSet - && onViewParameters[OnViewParameter::Sixth]->isSet + if (fifthParam->isSet && sixthParam->isSet && areCollinear(handler->apoapsis, handler->periapsis, onSketchPos)) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Sixth].get()); + unsetOnViewParameter(fifthParam.get()); + unsetOnViewParameter(sixthParam.get()); } } } break; @@ -589,32 +595,36 @@ void DSHEllipseController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == DrawSketchHandlerEllipse::ConstructionMethod::Center) { auto vec = onSketchPos - handler->centerPoint; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, vec.Length()); } - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { double angle = vec.Length() > 0 ? Base::toDegrees(vec.Angle()) : 0; setOnViewParameterValue(OnViewParameter::Fourth, angle, Base::Unit::Angle); } @@ -622,59 +632,56 @@ void DSHEllipseController::adaptParameters(Base::Vector2d onSketchPos) Base::Vector3d start = toVector3d(handler->centerPoint); Base::Vector3d end = toVector3d(onSketchPos); - onViewParameters[OnViewParameter::Third]->setPoints(start, end); + thirdParam->setPoints(start, end); - - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange( - (onSketchPos - handler->centerPoint).Angle()); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange((onSketchPos - handler->centerPoint).Angle()); } else { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Third]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Fourth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Third]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Fourth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + thirdParam->setLabelAutoDistanceReverse(!sameSign); + fourthParam->setLabelAutoDistanceReverse(sameSign); + thirdParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + fourthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (handler->constructionMethod() == DrawSketchHandlerEllipse::ConstructionMethod::Center) { - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, handler->secondAxis.Length()); } Base::Vector3d start = toVector3d(handler->centerPoint); Base::Vector3d end = toVector3d(handler->centerPoint + handler->secondAxis); - onViewParameters[OnViewParameter::Fifth]->setPoints(start, end); + fifthParam->setPoints(start, end); } else { - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Sixth]->isSet) { + if (!sixthParam->isSet) { setOnViewParameterValue(OnViewParameter::Sixth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Fifth]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Sixth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Fifth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Sixth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + fifthParam->setLabelAutoDistanceReverse(!sameSign); + sixthParam->setLabelAutoDistanceReverse(sameSign); + fifthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + sixthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } } break; default: @@ -687,31 +694,33 @@ void DSHEllipseController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->setState(SelectMode::SeekThird); } } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (handler->constructionMethod() == DrawSketchHandlerEllipse::ConstructionMethod::Center) { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing) { - + if (fifthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } else { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing - || onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) { - + if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h index 0ffffba6d0..b77c5973e6 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerLine.h @@ -366,25 +366,30 @@ void DSHLineControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchP { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == ConstructionMethod::OnePointWidthHeight) { - if (onViewParameters[OnViewParameter::Third]->isSet) { - double length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + double length = thirdParam->getValue(); if (fabs(length) < Precision::Confusion()) { // Both cannot be 0 - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double width = onViewParameters[OnViewParameter::Fourth]->getValue(); + if (fourthParam->isSet) { + double width = fourthParam->getValue(); if (fabs(width) < Precision::Confusion()) { - unsetOnViewParameter( - onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } } @@ -393,15 +398,14 @@ void DSHLineControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchP onSketchPos.x = handler->startPoint.x + sign * length; } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double width = onViewParameters[OnViewParameter::Fourth]->getValue(); + if (fourthParam->isSet) { + double width = fourthParam->getValue(); if (fabs(width) < Precision::Confusion()) { // Both cannot be 0 - if (onViewParameters[OnViewParameter::Third]->isSet) { - double length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + double length = thirdParam->getValue(); if (fabs(length) < Precision::Confusion()) { - unsetOnViewParameter( - onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(fourthParam.get()); return; } } @@ -418,38 +422,36 @@ void DSHLineControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchP } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + length = thirdParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->startPoint + length * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); Base::Vector2d ovpDir(cos(angle), sin(angle)); onSketchPos.ProjectToLine(onSketchPos - handler->startPoint, ovpDir); onSketchPos += handler->startPoint; } } else { - if (onViewParameters[OnViewParameter::Third]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + onSketchPos.x = thirdParam->getValue(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Fourth]->getValue(); + if (fourthParam->isSet) { + onSketchPos.y = fourthParam->getValue(); } } - if (onViewParameters[OnViewParameter::Third]->isSet - && onViewParameters[OnViewParameter::Fourth]->isSet + if (thirdParam->isSet && fourthParam->isSet && (onSketchPos - handler->startPoint).Length() < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(thirdParam.get()); + unsetOnViewParameter(fourthParam.get()); } } break; default: @@ -462,62 +464,65 @@ void DSHLineController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (handler->constructionMethod() == ConstructionMethod::OnePointWidthHeight) { Base::Vector3d start = toVector3d(handler->startPoint); Base::Vector3d end = toVector3d(handler->endPoint); Base::Vector3d vec = end - start; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, fabs(vec.x)); } - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, fabs(vec.y)); } bool sameSign = vec.x * vec.y > 0.; - onViewParameters[OnViewParameter::Third]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Fourth]->setLabelAutoDistanceReverse(sameSign); + thirdParam->setLabelAutoDistanceReverse(!sameSign); + fourthParam->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, end); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, end); } else if (handler->constructionMethod() == ConstructionMethod::OnePointLengthAngle) { Base::Vector3d start = toVector3d(handler->startPoint); Base::Vector3d end = toVector3d(handler->endPoint); Base::Vector3d vec = end - start; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, vec.Length()); } double range = (handler->endPoint - handler->startPoint).Angle(); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, Base::toDegrees(range), Base::Unit::Angle); } else if (vec.Length() > Precision::Confusion()) { - double ovpRange = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + double ovpRange = Base::toRadians(fourthParam->getValue()); if (fabs(range - ovpRange) > Precision::Confusion()) { setOnViewParameterValue(OnViewParameter::Fourth, Base::toDegrees(range), @@ -525,26 +530,24 @@ void DSHLineController::adaptParameters(Base::Vector2d onSketchPos) } } - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(range); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(range); } else { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::Third]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Fourth]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::Third]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Fourth]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + thirdParam->setLabelAutoDistanceReverse(!sameSign); + fourthParam->setLabelAutoDistanceReverse(sameSign); + thirdParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + fourthParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } } break; default: @@ -557,16 +560,18 @@ void DSHLineController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h index c45e5eef51..c143c0223e 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h @@ -1180,11 +1180,13 @@ void DSHOffsetController::adaptParameters(Base::Vector2d onSketchPos) switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, handler->offsetLength); } - onViewParameters[OnViewParameter::First]->setPoints( + firstParam->setPoints( Base::Vector3d(handler->endpoint.x, handler->endpoint.y, 0.), Base::Vector3d(handler->pointOnSourceWire.x, handler->pointOnSourceWire.y, 0.)); } break; @@ -1198,7 +1200,9 @@ void DSHOffsetController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->hasFinishedEditing) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + + if (firstParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerPoint.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerPoint.h index 2387484d22..cef45cac34 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerPoint.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerPoint.h @@ -181,12 +181,15 @@ void DSHPointController::doEnforceControlParameters(Base::Vector2d& onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; default: @@ -199,23 +202,24 @@ void DSHPointController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints( - Base::Vector3d(0., 0., 0.), - Base::Vector3d(onSketchPos.x, onSketchPos.y, 0.)); - onViewParameters[OnViewParameter::Second]->setPoints( - Base::Vector3d(0., 0., 0.), - Base::Vector3d(onSketchPos.x, onSketchPos.y, 0.)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(0., 0., 0.), + Base::Vector3d(onSketchPos.x, onSketchPos.y, 0.)); + secondParam->setPoints(Base::Vector3d(0., 0., 0.), + Base::Vector3d(onSketchPos.x, onSketchPos.y, 0.)); } break; default: break; @@ -227,9 +231,10 @@ void DSHPointController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->hasFinishedEditing - || onViewParameters[OnViewParameter::Second]->hasFinishedEditing) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->hasFinishedEditing || secondParam->hasFinishedEditing) { handler->setState(SelectMode::End); // handler->finish(); // Called by the change of mode } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h index 0e73caa3e4..dc43e8aa63 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerPolygon.h @@ -354,34 +354,39 @@ void DSHPolygonControllerBase::doEnforceControlParameters(Base::Vector2d& onSket { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + Base::Vector2d dir = onSketchPos - handler->centerPoint; if (dir.Length() < Precision::Confusion()) { dir.x = 1.0; // if direction null, default to (1,0) } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + length = thirdParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->centerPoint + length * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); onSketchPos.x = handler->centerPoint.x + cos(angle) * length; onSketchPos.y = handler->centerPoint.y + sin(angle) * length; } @@ -396,41 +401,45 @@ void DSHPolygonController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + Base::Vector3d start = toVector3d(handler->centerPoint); Base::Vector3d end = toVector3d(handler->firstCorner); Base::Vector3d vec = end - start; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, vec.Length()); } double range = (handler->firstCorner - handler->centerPoint).Angle(); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, Base::toDegrees(range), Base::Unit::Angle); } - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(range); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(range); } break; default: @@ -443,16 +452,18 @@ void DSHPolygonController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h index 5bc581e923..39bc844c60 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerRotate.h @@ -555,21 +555,24 @@ void DSHRotateControllerBase::doEnforceControlParameters(Base::Vector2d& onSketc switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->isSet) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; - double arcAngle = - Base::toRadians(onViewParameters[OnViewParameter::Third]->getValue()); + if (thirdParam->isSet) { + double arcAngle = Base::toRadians(thirdParam->getValue()); if (fmod(fabs(arcAngle), 2 * std::numbers::pi) < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos.x = handler->centerPoint.x + 1; @@ -577,12 +580,12 @@ void DSHRotateControllerBase::doEnforceControlParameters(Base::Vector2d& onSketc } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fourth]->isSet) { + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; - double arcAngle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double arcAngle = Base::toRadians(fourthParam->getValue()); if (fmod(fabs(arcAngle), 2 * std::numbers::pi) < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fourth].get()); + unsetOnViewParameter(fourthParam.get()); return; } @@ -600,45 +603,50 @@ void DSHRotateController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + double range = Base::toDegrees(handler->startAngle); - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->centerPoint); - onViewParameters[OnViewParameter::Third]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Third]->setLabelRange(handler->startAngle); + thirdParam->setPoints(start, Base::Vector3d()); + thirdParam->setLabelRange(handler->startAngle); } break; case SelectMode::SeekThird: { + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + double range = Base::toDegrees(handler->totalAngle); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->centerPoint); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); + fourthParam->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelStartAngle(handler->startAngle); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(handler->totalAngle); + fourthParam->setLabelStartAngle(handler->startAngle); + fourthParam->setLabelRange(handler->totalAngle); } break; default: break; @@ -650,23 +658,25 @@ void DSHRotateController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing) { - handler->totalAngle = - Base::toRadians(onViewParameters[OnViewParameter::Third]->getValue()); + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + if (thirdParam->hasFinishedEditing) { + handler->totalAngle = Base::toRadians(thirdParam->getValue()); handler->setState(SelectMode::End); } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (fourthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h index 25dd9d8543..0a3ce7c1b9 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerSlot.h @@ -403,45 +403,52 @@ void DSHSlotControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchP { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + Base::Vector2d dir = onSketchPos - handler->startPoint; if (dir.Length() < Precision::Confusion()) { dir.x = 1.0; // if direction null, default to (1,0) } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + length = thirdParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->startPoint + length * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); Base::Vector2d ovpDir(cos(angle), sin(angle)); onSketchPos.ProjectToLine(onSketchPos - handler->startPoint, ovpDir); onSketchPos += handler->startPoint; } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - double radius = onViewParameters[OnViewParameter::Fifth]->getValue(); + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + + if (fifthParam->isSet) { + double radius = fifthParam->getValue(); if (radius < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get()); + unsetOnViewParameter(fifthParam.get()); return; } @@ -459,40 +466,43 @@ void DSHSlotController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + Base::Vector3d start = toVector3d(handler->startPoint); Base::Vector3d end = toVector3d(handler->secondPoint); Base::Vector3d vec = end - start; - if (!onViewParameters[OnViewParameter::Third]->isSet) { + if (!thirdParam->isSet) { setOnViewParameterValue(OnViewParameter::Third, vec.Length()); } double range = (handler->secondPoint - handler->startPoint).Angle(); - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, Base::toDegrees(range), Base::Unit::Angle); } else if (vec.Length() > Precision::Confusion()) { - double ovpRange = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + double ovpRange = Base::toRadians(fourthParam->getValue()); if (fabs(range - ovpRange) > Precision::Confusion()) { setOnViewParameterValue(OnViewParameter::Fourth, @@ -501,12 +511,14 @@ void DSHSlotController::adaptParameters(Base::Vector2d onSketchPos) } } - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(range); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(range); } break; case SelectMode::SeekThird: { - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + + if (!fifthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fifth, handler->radius); } @@ -514,8 +526,7 @@ void DSHSlotController::adaptParameters(Base::Vector2d onSketchPos) labelSecondPoint.x = handler->secondPoint.x + cos(handler->angle) * handler->radius; labelSecondPoint.y = handler->secondPoint.y + sin(handler->angle) * handler->radius; - onViewParameters[OnViewParameter::Fifth]->setPoints(toVector3d(handler->secondPoint), - labelSecondPoint); + fifthParam->setPoints(toVector3d(handler->secondPoint), labelSecondPoint); } break; default: @@ -528,22 +539,25 @@ void DSHSlotController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { handler->setState(SelectMode::SeekThird); } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + if (fifthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h index dcfab37a8a..769f1b3977 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerTranslate.h @@ -560,58 +560,65 @@ void DSHTranslateControllerBase::doEnforceControlParameters(Base::Vector2d& onSk { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet) { - onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue(); + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (firstParam->isSet) { + onSketchPos.x = firstParam->getValue(); } - if (onViewParameters[OnViewParameter::Second]->isSet) { - onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue(); + if (secondParam->isSet) { + onSketchPos.y = secondParam->getValue(); } } break; case SelectMode::SeekSecond: { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + Base::Vector2d dir = onSketchPos - handler->referencePoint; if (dir.Length() < Precision::Confusion()) { dir.x = 1.0; // if direction null, default to (1,0) } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Third]->isSet) { - length = onViewParameters[OnViewParameter::Third]->getValue(); + if (thirdParam->isSet) { + length = thirdParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get()); + unsetOnViewParameter(thirdParam.get()); return; } onSketchPos = handler->referencePoint + length * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Fourth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue()); + if (fourthParam->isSet) { + double angle = Base::toRadians(fourthParam->getValue()); onSketchPos.x = handler->referencePoint.x + cos(angle) * length; onSketchPos.y = handler->referencePoint.y + sin(angle) * length; } } break; case SelectMode::SeekThird: { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + Base::Vector2d dir = onSketchPos - handler->referencePoint; if (dir.Length() < Precision::Confusion()) { dir.x = 1.0; // if direction null, default to (1,0) } double length = dir.Length(); - if (onViewParameters[OnViewParameter::Fifth]->isSet) { - length = onViewParameters[OnViewParameter::Fifth]->getValue(); + if (fifthParam->isSet) { + length = fifthParam->getValue(); if (length < Precision::Confusion()) { - unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get()); + unsetOnViewParameter(fifthParam.get()); return; } onSketchPos = handler->referencePoint + length * dir.Normalize(); } - if (onViewParameters[OnViewParameter::Sixth]->isSet) { - double angle = - Base::toRadians(onViewParameters[OnViewParameter::Sixth]->getValue()); + if (sixthParam->isSet) { + double angle = Base::toRadians(sixthParam->getValue()); onSketchPos.x = handler->referencePoint.x + cos(angle) * length; onSketchPos.y = handler->referencePoint.y + sin(angle) * length; } @@ -626,24 +633,28 @@ void DSHTranslateController::adaptParameters(Base::Vector2d onSketchPos) { switch (handler->state()) { case SelectMode::SeekFirst: { - if (!onViewParameters[OnViewParameter::First]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + + if (!firstParam->isSet) { setOnViewParameterValue(OnViewParameter::First, onSketchPos.x); } - if (!onViewParameters[OnViewParameter::Second]->isSet) { + if (!secondParam->isSet) { setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y); } bool sameSign = onSketchPos.x * onSketchPos.y > 0.; - onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign); - onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign); - onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); - onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(), - toVector3d(onSketchPos)); + firstParam->setLabelAutoDistanceReverse(!sameSign); + secondParam->setLabelAutoDistanceReverse(sameSign); + firstParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); + secondParam->setPoints(Base::Vector3d(), toVector3d(onSketchPos)); } break; case SelectMode::SeekSecond: { - if (!onViewParameters[OnViewParameter::Third]->isSet) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + + if (!thirdParam->isSet) { double length = (onSketchPos - handler->referencePoint).Length(); setOnViewParameterValue(OnViewParameter::Third, length); } @@ -653,19 +664,22 @@ void DSHTranslateController::adaptParameters(Base::Vector2d onSketchPos) double angle = vec2d.Angle(); double range = angle * 180 / std::numbers::pi; - if (!onViewParameters[OnViewParameter::Fourth]->isSet) { + if (!fourthParam->isSet) { setOnViewParameterValue(OnViewParameter::Fourth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->referencePoint); Base::Vector3d end = toVector3d(onSketchPos); - onViewParameters[OnViewParameter::Third]->setPoints(start, end); - onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Fourth]->setLabelRange(angle); + thirdParam->setPoints(start, end); + fourthParam->setPoints(start, Base::Vector3d()); + fourthParam->setLabelRange(angle); } break; case SelectMode::SeekThird: { - if (!onViewParameters[OnViewParameter::Fifth]->isSet) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + + if (!fifthParam->isSet) { double length = (onSketchPos - handler->referencePoint).Length(); setOnViewParameterValue(OnViewParameter::Fifth, length); } @@ -675,16 +689,16 @@ void DSHTranslateController::adaptParameters(Base::Vector2d onSketchPos) double angle = vec2d.Angle(); double range = angle * 180 / std::numbers::pi; - if (!onViewParameters[OnViewParameter::Sixth]->isSet) { + if (!sixthParam->isSet) { setOnViewParameterValue(OnViewParameter::Sixth, range, Base::Unit::Angle); } Base::Vector3d start = toVector3d(handler->referencePoint); Base::Vector3d end = toVector3d(onSketchPos); - onViewParameters[OnViewParameter::Fifth]->setPoints(start, end); - onViewParameters[OnViewParameter::Sixth]->setPoints(start, Base::Vector3d()); - onViewParameters[OnViewParameter::Sixth]->setLabelRange(angle); + fifthParam->setPoints(start, end); + sixthParam->setPoints(start, Base::Vector3d()); + sixthParam->setLabelRange(angle); } break; default: break; @@ -696,16 +710,18 @@ void DSHTranslateController::doChangeDrawSketchHandlerMode() { switch (handler->state()) { case SelectMode::SeekFirst: { - if (onViewParameters[OnViewParameter::First]->isSet - && onViewParameters[OnViewParameter::Second]->isSet) { + auto& firstParam = onViewParameters[OnViewParameter::First]; + auto& secondParam = onViewParameters[OnViewParameter::Second]; + if (firstParam->isSet && secondParam->isSet) { handler->setState(SelectMode::SeekSecond); } } break; case SelectMode::SeekSecond: { - if (onViewParameters[OnViewParameter::Third]->hasFinishedEditing - || onViewParameters[OnViewParameter::Fourth]->hasFinishedEditing) { + auto& thirdParam = onViewParameters[OnViewParameter::Third]; + auto& fourthParam = onViewParameters[OnViewParameter::Fourth]; + if (thirdParam->hasFinishedEditing || fourthParam->hasFinishedEditing) { if (handler->secondNumberOfCopies == 1) { handler->setState(SelectMode::End); } @@ -715,9 +731,10 @@ void DSHTranslateController::doChangeDrawSketchHandlerMode() } } break; case SelectMode::SeekThird: { - if (onViewParameters[OnViewParameter::Fifth]->hasFinishedEditing - || onViewParameters[OnViewParameter::Sixth]->hasFinishedEditing) { + auto& fifthParam = onViewParameters[OnViewParameter::Fifth]; + auto& sixthParam = onViewParameters[OnViewParameter::Sixth]; + if (fifthParam->hasFinishedEditing || sixthParam->hasFinishedEditing) { handler->setState(SelectMode::End); } } break;