diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 9952556aa..bb6df7391 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2316,14 +2316,26 @@ std::map Sidebar::build_filament_ams_list(MachineObject } } + auto get_ams_name = [](int ams_id, int slot_id)->std::string { + if (ams_id >= 0 && ams_id < 26) { + char slot_name = slot_id + '1'; + return std::string(1, 'A' + ams_id) + std::string(1, slot_name); + } else if (ams_id >= 128 && ams_id < 153) { + return "HT-" + std::string(1, 'A' + (ams_id - 128)); + } else { + assert(false); + } + return std::string(); + }; + auto list = obj->amsList; for (auto ams : list) { - char n = ams.first.front() - '0' + 'A'; + int ams_id = std::stoi(ams.first); int extruder = ams.second->nozzle ? 0 : 0x10000; // Main (first) extruder at right for (auto tray : ams.second->trayList) { - char t = tray.first.front() - '0' + '1'; - filament_ams_list.emplace(extruder + ((n - 'A') * 4 + t - '1'), - build_tray_config(*tray.second, std::string(1, n) + std::string(1, t))); + int slot_id = std::stoi(tray.first); + filament_ams_list.emplace(extruder + (ams_id * 4 + slot_id), + build_tray_config(*tray.second, get_ams_name(ams_id, slot_id))); } } return filament_ams_list; diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index f12ce97cb..2cdcbc7d3 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -437,6 +437,15 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) set_label_marker(Append(separator(dual_extruder ? L("Left filaments") : L("AMS filaments")), wxNullBitmap)); m_first_ams_filament = GetCount(); auto &filaments = m_collection->get_presets(); + + int icon_width = 24; + for (auto &entry : m_preset_bundle->filament_ams_list) { + auto & tray = entry.second; + auto name = tray.opt_string("tray_name", 0u); + if (name.size() > 3) + icon_width = 32; + } + for (auto &entry : m_preset_bundle->filament_ams_list) { if (dual_extruder && (entry.first & 0x10000)) { dual_extruder = false; @@ -462,7 +471,7 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) const_cast(*iter).is_visible = true; auto color = tray.opt_string("filament_colour", 0u); auto name = tray.opt_string("tray_name", 0u); - wxBitmap bmp(*get_extruder_color_icon(color, name, 24, 16)); + wxBitmap bmp(*get_extruder_color_icon(color, name, icon_width, 16)); int item_id = Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); //validate_selection(id->value == selected); // can not select }