From 9f59941498bcab52548e487c62ad1541df57b3bc Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 13 Sep 2022 13:34:28 +0200 Subject: [PATCH] #8844 and #8837 - Fixed crash in legend due to missing data for used filament --- src/slic3r/GUI/GCodeViewer.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 54b4eb1eca..d4cf8632e6 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -3860,14 +3860,16 @@ void GCodeViewer::render_legend(float& legend_height) if (m_view_type == EViewType::Tool) { // calculate used filaments data + used_filaments_m = std::vector(m_extruder_ids.size(), 0.0); + used_filaments_g = std::vector(m_extruder_ids.size(), 0.0); for (size_t extruder_id : m_extruder_ids) { if (m_print_statistics.volumes_per_extruder.find(extruder_id) == m_print_statistics.volumes_per_extruder.end()) continue; double volume = m_print_statistics.volumes_per_extruder.at(extruder_id); auto [used_filament_m, used_filament_g] = get_used_filament_from_volume(volume, extruder_id); - used_filaments_m.push_back(used_filament_m); - used_filaments_g.push_back(used_filament_g); + used_filaments_m[extruder_id] = used_filament_m; + used_filaments_g[extruder_id] = used_filament_g; } std::string longest_used_filament_string; @@ -4002,7 +4004,8 @@ void GCodeViewer::render_legend(float& legend_height) // shows only extruders actually used size_t i = 0; for (unsigned char extruder_id : m_extruder_ids) { - append_item(EItemType::Rect, m_tool_colors[extruder_id], _u8L("Extruder") + " " + std::to_string(extruder_id + 1), + if (used_filaments_m[i] > 0.0 && used_filaments_g[i] > 0.0) + append_item(EItemType::Rect, m_tool_colors[extruder_id], _u8L("Extruder") + " " + std::to_string(extruder_id + 1), true, "", 0.0f, 0.0f, offsets, used_filaments_m[i], used_filaments_g[i]); ++i; }