diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 2e8bb5f734..e3fcec88c5 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -2124,6 +2124,7 @@ unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns, bool use_map, s } if (ams_filament_presets.empty()) return 0; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "get filament_colour and from config"; ConfigOptionStrings *filament_color = project_config.option("filament_colour"); ConfigOptionInts * filament_map = project_config.option("filament_map"); if (use_map) { @@ -2191,6 +2192,7 @@ unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns, bool use_map, s [](std::vector &value) { return value.empty(); }), ams_multi_color_filment.end()); if (need_append_colors.size() > 0 && enable_append) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "need_append_colors.size() > 0 && enable_append"; auto get_idx_in_array = [](std::vector &presets, std::vector &colors, const std::string &preset, const std::string &color) -> int { for (size_t i = 0; i < presets.size(); i++) { if (presets[i] == preset && colors[i] == color) { @@ -2226,6 +2228,7 @@ unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns, bool use_map, s } update_multi_material_filament_presets(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "finish sync ams list"; return this->filament_presets.size(); } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8815d36af6..56a38c858f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2919,6 +2919,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) _L("Sync filaments with AMS"), wxOK); dlg.ShowModal(); } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "on_filament_count_change"; wxGetApp().plater()->on_filament_count_change(n); for (auto& c : p->combos_filament) c->update(); diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index b2c652f57e..fd56eea5e4 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -292,9 +292,15 @@ void SyncAmsInfoDialog::deal_ok() m_result.direct_sync = false; m_result.sync_maps.clear(); for (size_t i = 0; i < m_ams_mapping_result.size(); i++) { - auto& temp = m_result.sync_maps[m_ams_mapping_result[i].id]; - temp.ams_id = m_ams_mapping_result[i].ams_id; - temp.slot_id = m_ams_mapping_result[i].slot_id; + auto temp_idx = m_ams_mapping_result[i].id; + if (temp_idx >= 0 && temp_idx < m_result.sync_maps.size()) { + auto &temp = m_result.sync_maps[m_ams_mapping_result[i].id]; + temp.ams_id = m_ams_mapping_result[i].ams_id; + temp.slot_id = m_ams_mapping_result[i].slot_id; + } + else{ + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "check error: m_result.sync_maps:" << temp_idx; + } } } }