diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index f1f1c8ad1..b686f2b8a 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -4122,6 +4122,10 @@ void GCodeViewer::render_shells() void GCodeViewer::render_all_plates_stats(const std::vector& gcode_result_list, bool show /*= true*/) const { if (!show) return; + for (auto gcode_result : gcode_result_list) { + if (gcode_result->moves.size() == 0) + return; + } ImGuiWrapper& imgui = *wxGetApp().imgui(); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8d09ef48b..5a9800bc1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -7162,7 +7162,14 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() if (slice_failed) all_plates_stats_item->slice_state = IMToolbarItem::SliceState::SLICE_FAILED; - if (all_plates_stats_item->selected && all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICED) { + // Changing parameters does not invalid all plates, need extra logic to validate + bool gcode_result_valid = true; + for (auto gcode_result : plate_list.get_nonempty_plates_slice_results()) { + if (gcode_result->moves.size() == 0) { + gcode_result_valid = false; + } + } + if (all_plates_stats_item->selected && all_plates_stats_item->slice_state == IMToolbarItem::SliceState::SLICED && gcode_result_valid) { m_gcode_viewer.render_all_plates_stats(plate_list.get_nonempty_plates_slice_results()); m_render_preview = false; }