#8844 and #8837 - Fixed crash in legend due to missing data for used filament

This commit is contained in:
enricoturri1966 2022-09-13 13:34:28 +02:00
parent c22c05cafa
commit 9f59941498

View file

@ -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<double>(m_extruder_ids.size(), 0.0);
used_filaments_g = std::vector<double>(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;
}