diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 0a83e13b2..ff1ebf3c1 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -484,8 +484,8 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event) if (preset_bundle) { for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) { - auto filament_id = map_filament_items[m_comboBox_filament->GetValue().ToStdString()]; - + auto filament_item = map_filament_items[m_comboBox_filament->GetValue().ToStdString()]; + std::string filament_id = filament_item.filament_id; if (it->filament_id.compare(filament_id) == 0) { @@ -816,7 +816,10 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi // name matched if (filament_it->is_system) { filament_items.push_back(filament_it->alias); - map_filament_items[filament_it->alias] = filament_it->filament_id; + FilamentInfos filament_infos; + filament_infos.filament_id = filament_it->filament_id; + filament_infos.setting_id = filament_it->setting_id; + map_filament_items[filament_it->alias] = filament_infos; } else { char target = '@'; @@ -827,7 +830,10 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi user_preset_alias = wx_user_preset_alias.ToStdString(); filament_items.push_back(user_preset_alias); - map_filament_items[user_preset_alias] = filament_it->filament_id; + FilamentInfos filament_infos; + filament_infos.filament_id = filament_it->filament_id; + filament_infos.setting_id = filament_it->setting_id; + map_filament_items[user_preset_alias] = filament_infos; } } @@ -943,7 +949,8 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt) if (preset_bundle) { for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) { if (!m_comboBox_filament->GetValue().IsEmpty()) { - auto filament_id = map_filament_items[m_comboBox_filament->GetValue().ToStdString()]; + auto filament_item = map_filament_items[m_comboBox_filament->GetValue().ToStdString()]; + std::string filament_id = filament_item.filament_id; if (it->filament_id.compare(filament_id) == 0) { // ) if nozzle_temperature_range is found @@ -1017,6 +1024,13 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt) if (preset_bundle) { for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) { + auto itor = map_filament_items.find(m_comboBox_filament->GetValue().ToStdString()); + if ( itor != map_filament_items.end()) { + ams_filament_id = itor->second.filament_id; + ams_setting_id = itor->second.setting_id; + break; + } + if (it->alias.compare(m_comboBox_filament->GetValue().ToStdString()) == 0) { ams_filament_id = it->filament_id; ams_setting_id = it->setting_id; diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 1acd8ac4c..847bc8340 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -180,7 +180,12 @@ protected: #endif ComboBox * m_comboBox_cali_result; TextInput* m_readonly_filament; - std::map map_filament_items; + + struct FilamentInfos { + std::string filament_id; + std::string setting_id; + }; + std::map map_filament_items; }; wxDECLARE_EVENT(EVT_SELECTED_COLOR, wxCommandEvent);