fix: Adjust angle dimension arc direction on quadrant snap
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
@@ -373,6 +373,30 @@ void ViewportWidget::paintGL()
|
||||
else refDir = QVector3D(0, 1, 0);
|
||||
}
|
||||
|
||||
if (angleFromInput) {
|
||||
QVector3D currentMouseWorldPos = unproject(m_currentMousePos, m_currentPlane);
|
||||
QVector3D mouseVec = currentMouseWorldPos - startPos;
|
||||
|
||||
double mouseAngle;
|
||||
if (m_currentPlane == SketchPlane::XY) mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.x()));
|
||||
else if (m_currentPlane == SketchPlane::XZ) mouseAngle = qRadiansToDegrees(atan2(mouseVec.y(), mouseVec.x()));
|
||||
else mouseAngle = qRadiansToDegrees(atan2(mouseVec.z(), mouseVec.y()));
|
||||
|
||||
double refAngleForQuadrant;
|
||||
if (m_currentPlane == SketchPlane::XY) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.x()));
|
||||
else if (m_currentPlane == SketchPlane::XZ) refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.y(), refDir.x()));
|
||||
else refAngleForQuadrant = qRadiansToDegrees(atan2(refDir.z(), refDir.y()));
|
||||
|
||||
double relativeMouseAngle = mouseAngle - refAngleForQuadrant;
|
||||
while (relativeMouseAngle <= -180.0) relativeMouseAngle += 360.0;
|
||||
while (relativeMouseAngle > 180.0) relativeMouseAngle -= 360.0;
|
||||
|
||||
if ((relativeMouseAngle >= 45 && relativeMouseAngle < 135) ||
|
||||
(relativeMouseAngle >= 135 || relativeMouseAngle < -135)) {
|
||||
refDir = -refDir;
|
||||
}
|
||||
}
|
||||
|
||||
double refAngle, lineAngle;
|
||||
if (m_currentPlane == SketchPlane::XY) {
|
||||
refAngle = atan2(refDir.z(), refDir.x());
|
||||
|
||||
Reference in New Issue
Block a user