From 6587f270862c94c08ba3327651e5f9b43933f907 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Wed, 26 Feb 2025 14:43:41 +0800 Subject: [PATCH] Measure: Fix wrong diameter when selecting a circle feature (#8575) Suppress Eigen lazy evaluation by not using `auto`. VC++ compiler optimization does funny things with `intersection_pt` that breaks lazy evaluation. --- src/libslic3r/Measure.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Measure.cpp b/src/libslic3r/Measure.cpp index 0100c1574e..43e20a0373 100644 --- a/src/libslic3r/Measure.cpp +++ b/src/libslic3r/Measure.cpp @@ -1413,8 +1413,8 @@ void SurfaceFeature::translate(const Transform3d &tran) auto calc_world_radius = [&local_center, &local_normal, &tran, &world_center](const Vec3d &pt, double &value) { Vec3d intersection_pt; get_point_projection_to_plane(pt, local_center, local_normal, intersection_pt); - auto local_radius_pt = (intersection_pt - local_center).normalized() * value + local_center; - auto radius_pt = tran * local_radius_pt; + Vec3d local_radius_pt = (intersection_pt - local_center).normalized() * value + local_center; + Vec3d radius_pt = tran * local_radius_pt; value = (radius_pt - world_center).norm(); }; //m_value is radius