From f144cd31b89f00454ffcf98687c9f46a6797058b Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 21 Feb 2023 14:48:09 +0800 Subject: [PATCH] FIX: position is incorrect when reloading disk STUDIO-2224 Change-Id: I179de7cde8edffbe686a1eff41d0e2271dcca65e --- src/slic3r/GUI/Plater.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 62d93a977..48ca9750c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5061,14 +5061,12 @@ void Plater::priv::reload_from_disk() new_volume->config.apply(old_volume->config); new_volume->set_type(old_volume->type()); new_volume->set_material_id(old_volume->material_id()); -#if 0// ENABLE_WORLD_COORDINATE - new_volume->set_transformation(Geometry::translation_transform(old_volume->source.transform.get_offset()) * - old_volume->get_transformation().get_matrix_no_offset() * old_volume->source.transform.get_matrix_no_offset()); - new_volume->translate(new_volume->get_transformation().get_matrix_no_offset() * (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); -#else - new_volume->set_transformation(old_volume->get_transformation()); - new_volume->translate(new_volume->get_transformation().get_matrix(true) * (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); -#endif // ENABLE_WORLD_COORDINATE + + Transform3d transform = Transform3d::Identity(); + transform.translate(new_volume->source.mesh_offset - old_volume->source.mesh_offset); + new_volume->set_transformation(old_volume->get_transformation().get_matrix() * old_volume->source.transform.get_matrix(true) * + transform * new_volume->source.transform.get_matrix(true).inverse()); + new_volume->source.object_idx = old_volume->source.object_idx; new_volume->source.volume_idx = old_volume->source.volume_idx; assert(!old_volume->source.is_converted_from_inches || !old_volume->source.is_converted_from_meters);