From 0576e3e4fd2c616322eba7a4a3ed18f4025612e9 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Fri, 17 Feb 2023 15:09:39 +0800 Subject: [PATCH] FIX: all plates stats crash Change-Id: Iad42b9777e4f3fab4a432b73865d4bd7dd530fd3 --- src/slic3r/GUI/GCodeViewer.cpp | 4 ++++ src/slic3r/GUI/GLCanvas3D.cpp | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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; }