Sketcher: Slot tool: Enforce correctly when angle is set (#20269)

This commit is contained in:
PaddleStroke
2025-03-22 18:21:24 +01:00
committed by GitHub
parent f15ba6b681
commit 0f00c6d2d1

View File

@@ -410,8 +410,9 @@ void DSHSlotControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchP
if (onViewParameters[OnViewParameter::Fourth]->isSet) {
double angle =
Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue());
onSketchPos.x = handler->startPoint.x + cos(angle) * length;
onSketchPos.y = handler->startPoint.y + sin(angle) * length;
Base::Vector2d ovpDir(cos(angle), sin(angle));
onSketchPos.ProjectToLine(onSketchPos - handler->startPoint, ovpDir);
onSketchPos += handler->startPoint;
}
} break;
case SelectMode::SeekThird: {
@@ -468,6 +469,16 @@ void DSHSlotController::adaptParameters(Base::Vector2d onSketchPos)
Base::toDegrees(range),
Base::Unit::Angle);
}
else if (vec.Length() > Precision::Confusion()) {
double ovpRange =
Base::toRadians(onViewParameters[OnViewParameter::Fourth]->getValue());
if (fabs(range - ovpRange) > Precision::Confusion()) {
setOnViewParameterValue(OnViewParameter::Fourth,
Base::toDegrees(range),
Base::Unit::Angle);
}
}
onViewParameters[OnViewParameter::Third]->setPoints(start, end);
onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d());