diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index 89ba8cd410..a9c2e18257 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -273,6 +273,7 @@ void GLGizmoMeasure::on_render() Vec3f n; const Transform3d& trafo = it->second->get_transform(); it->second->get_raycaster()->unproject_on_mesh(m_mouse_pos, trafo, camera, p, n); + p = { 0.0f, 0.0f, p.z() }; m_curr_ex_feature_position = trafo * p.cast(); } break; @@ -294,6 +295,10 @@ void GLGizmoMeasure::on_render() Vec3f n; const Transform3d& trafo = it->second->get_transform(); it->second->get_raycaster()->unproject_on_mesh(m_mouse_pos, trafo, camera, p, n); + float angle = std::atan2(p.y(), p.x()); + if (angle < 0.0f) + angle += 2.0f * float(M_PI); + p = float(radius) * Vec3f(std::cos(angle), std::sin(angle), 0.0f); m_curr_ex_feature_position = trafo * p.cast(); } }