From f54f96666330c39c21dca14c7cf80fc32d87b495 Mon Sep 17 00:00:00 2001 From: Enrico Turri <enricoturri@seznam.cz> Date: Tue, 18 Dec 2018 11:50:22 +0100 Subject: [PATCH] Sidebar matrix field behavior for single full object selection --- src/slic3r/GUI/GUI_ObjectManipulation.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp index 5c049144e..4f63fb61f 100644 --- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp +++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp @@ -390,12 +390,20 @@ void ObjectManipulation::change_scale_value(const Vec3d& scale) if (needs_uniform_scale) { - double min = scaling_factor.minCoeff(); - double max = scaling_factor.maxCoeff(); - if (min != 100.0) - scaling_factor = Vec3d(min, min, min); - else if (max != 100.0) - scaling_factor = Vec3d(max, max, max); + Vec3d abs_scale_diff = (scale - cache_scale).cwiseAbs(); + double max_diff = abs_scale_diff(X); + Axis max_diff_axis = X; + if (max_diff < abs_scale_diff(Y)) + { + max_diff = abs_scale_diff(Y); + max_diff_axis = Y; + } + if (max_diff < abs_scale_diff(Z)) + { + max_diff = abs_scale_diff(Z); + max_diff_axis = Z; + } + scaling_factor = Vec3d(scale(max_diff_axis), scale(max_diff_axis), scale(max_diff_axis)); } scaling_factor *= 0.01;