Sketcher: Line tool: Enforce correctly when angle is set (#20267)
This commit is contained in:
@@ -409,8 +409,9 @@ void DSHLineControllerBase::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;
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -492,6 +493,15 @@ void DSHLineController::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());
|
||||
|
||||
Reference in New Issue
Block a user