diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 4b678cac5..0bf9c7bba 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1988,6 +1988,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) { @@ -2055,6 +2056,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) { @@ -2090,6 +2092,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 bcec32d7e..2b80247c0 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3047,6 +3047,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 385458d00..e885aacc1 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -290,9 +290,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; + } } } }