diff --git a/src/libslic3r/MultipleBeds.cpp b/src/libslic3r/MultipleBeds.cpp index 6ff38a95cf..7ab96dd0a0 100644 --- a/src/libslic3r/MultipleBeds.cpp +++ b/src/libslic3r/MultipleBeds.cpp @@ -12,6 +12,7 @@ namespace Slic3r { MultipleBeds s_multiple_beds; bool s_reload_preview_after_switching_beds = false; bool s_beds_just_switched = false; +bool s_beds_switched_since_last_gcode_load = false; bool is_sliceable(const PrintStatus status) { if (status == PrintStatus::empty) { diff --git a/src/libslic3r/MultipleBeds.hpp b/src/libslic3r/MultipleBeds.hpp index 28679ca665..8f58e98f3a 100644 --- a/src/libslic3r/MultipleBeds.hpp +++ b/src/libslic3r/MultipleBeds.hpp @@ -17,6 +17,7 @@ class Print; extern bool s_reload_preview_after_switching_beds; extern bool s_beds_just_switched; +extern bool s_beds_switched_since_last_gcode_load; namespace BedsGrid { using GridCoords = Vec2crd; diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 158f2b39fe..e61360c777 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -870,7 +870,7 @@ void GCodeViewer::load_as_gcode(const GCodeProcessorResult& gcode_result, const m_viewer.toggle_top_layer_only_view_range(); // avoid processing if called with the same gcode_result - if (m_last_result_id == gcode_result.id && wxGetApp().is_editor() && ! s_reload_preview_after_switching_beds) { + if (m_last_result_id == gcode_result.id && ! s_beds_switched_since_last_gcode_load && wxGetApp().is_editor() && ! s_reload_preview_after_switching_beds) { // collect tool colors libvgcode::Palette tools_colors; tools_colors.reserve(str_tool_colors.size()); @@ -890,6 +890,7 @@ void GCodeViewer::load_as_gcode(const GCodeProcessorResult& gcode_result, const } m_last_result_id = gcode_result.id; + s_beds_switched_since_last_gcode_load = false; // release gpu memory, if used reset(); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8dc8c56c8b..ee87df4a7d 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -135,6 +135,7 @@ void GLCanvas3D::select_bed(int i, bool triggered_by_user) wxYield(); s_multiple_beds.set_active_bed(i); s_beds_just_switched = true; + s_beds_switched_since_last_gcode_load = true; if (wxGetApp().plater()->is_preview_shown()) { s_reload_preview_after_switching_beds = true; wxPostEvent(wxGetApp().plater(), SimpleEvent(EVT_GLVIEWTOOLBAR_PREVIEW));