diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 819366146..31825d346 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -18,7 +18,7 @@ // Uses a unique opengl context #define ENABLE_USE_UNIQUE_GLCONTEXT (1 && ENABLE_1_42_0) // Disable synchronization of unselected instances -#define DISABLE_INSTANCES_SYNCH (1 && ENABLE_1_42_0) +#define DISABLE_INSTANCES_SYNCH (0 && ENABLE_1_42_0) // Modified camera target behavior #define ENABLE_MODIFIED_CAMERA_TARGET (1 && ENABLE_1_42_0) // Add Geometry::Transformation class and use it into ModelInstance, ModelVolume and GLVolume diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 1b6e06160..71f07c6da 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1513,6 +1513,12 @@ void GLCanvas3D::Selection::flattening_rotate(const Vec3d& normal) Vec3d new_rotation = Geometry::extract_euler_angles(extra_rotation * m_cache.volumes_data[i].get_instance_rotation_matrix() ); (*m_volumes)[i]->set_instance_rotation(new_rotation); } + +#if !DISABLE_INSTANCES_SYNCH + if (m_mode == Instance) + _synchronize_unselected_instances(); +#endif // !DISABLE_INSTANCES_SYNCH + m_bounding_box_dirty = true; } @@ -2046,11 +2052,11 @@ void GLCanvas3D::Selection::_synchronize_unselected_instances() continue; #if ENABLE_MODELVOLUME_TRANSFORM - v->set_instance_rotation(rotation); + v->set_instance_rotation(Vec3d(rotation(0), rotation(1), v->get_instance_rotation()(2))); v->set_instance_scaling_factor(scaling_factor); v->set_instance_mirror(mirror); #else - v->set_rotation(rotation); + v->set_rotation(Vec3d(rotation(0), rotation(1), v->get_rotation()(2))); v->set_scaling_factor(scaling_factor); v->set_mirror(mirror); #endif // ENABLE_MODELVOLUME_TRANSFORM