From 098f319519814afaf4f9e622bdabb5cd1aa4be9e Mon Sep 17 00:00:00 2001 From: "hu.wang" Date: Mon, 27 Nov 2023 10:46:17 +0800 Subject: [PATCH] FIX:The name of the material in the error prompt is empty JIRA:STUDIO-4907 Change-Id: I3cf44f099256a51f21a44a89c89c000f734d1f36 --- src/slic3r/GUI/Plater.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8713d7da5..73464bf31 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -12872,14 +12872,28 @@ bool Plater::show_publish_dialog(bool show) void Plater::post_process_string_object_exception(StringObjectException &err) { + PresetBundle* preset_bundle = wxGetApp().preset_bundle; if (err.type == StringExceptionType::STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE) { try { int extruder_id = atoi(err.params[2].c_str()) - 1; - if (extruder_id < wxGetApp().preset_bundle->filament_presets.size()) { - std::string filament_name = wxGetApp().preset_bundle->filament_presets[extruder_id]; - for (auto filament : wxGetApp().preset_bundle->filaments) { - if (filament.name == filament_name) { - filament_name = filament.alias; + if (extruder_id < preset_bundle->filament_presets.size()) { + std::string filament_name = preset_bundle->filament_presets[extruder_id]; + for (auto filament_it = preset_bundle->filaments.begin(); filament_it != preset_bundle->filaments.end(); filament_it++) { + if (filament_it->name == filament_name) { + if (filament_it->is_system) { + filament_name = filament_it->alias; + } else { + auto preset = preset_bundle->filaments.get_preset_base(*filament_it); + if (!preset->alias.empty()) { + filament_name = preset->alias; + } else { + char target = '@'; + size_t pos = preset->name.find(target); + if (pos != std::string::npos) { + filament_name = preset->name.substr(0, pos - 1); + } + } + } break; } }