From c66aa632d8120c4a8d811a9fdb975a031cbddaa8 Mon Sep 17 00:00:00 2001 From: tao wang Date: Thu, 6 Feb 2025 17:09:46 +0800 Subject: [PATCH] FIX:fixed mapping issue printing from SD card Change-Id: Iad6b4b6ddd67f1c51fbfd1207893549b9cf746b9 --- src/slic3r/GUI/SelectMachine.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 09703ebb5..dae9f47cf 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1178,7 +1178,11 @@ bool SelectMachineDialog::do_ams_mapping(MachineObject *obj_) const auto& full_config = wxGetApp().preset_bundle->full_config(); const auto& project_config = wxGetApp().preset_bundle->project_config; size_t nozzle_nums = full_config.option("nozzle_diameter")->values.size(); - m_filaments_map = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_real_filament_maps(project_config); + + if (m_print_type == FROM_NORMAL) { + m_filaments_map = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_real_filament_maps(project_config); + } + int filament_result = 0; std::vector map_opt; //four values: use_left_ams, use_right_ams, use_left_ext, use_right_ext if (nozzle_nums > 1){ @@ -4171,10 +4175,15 @@ void SelectMachineDialog::set_default_from_sdcard() } auto opt_nozzle_diameters = m_required_data_config.option("nozzle_diameter"); - auto diameters_count = opt_nozzle_diameters->size(); - std::vector filament_map; + auto diameters_count = 1; + if (opt_nozzle_diameters) { + diameters_count = opt_nozzle_diameters->size(); + } + + //std::vector filament_map; + m_filaments_map.clear(); if (m_required_data_plate_data_list[m_print_plate_idx]->config.option("filament_map")){ - filament_map = m_required_data_plate_data_list[m_print_plate_idx]->config.option("filament_map")->values; + m_filaments_map = m_required_data_plate_data_list[m_print_plate_idx]->config.option("filament_map")->values; } // ams mapping area @@ -4225,8 +4234,8 @@ void SelectMachineDialog::set_default_from_sdcard() MaterialItem* item = nullptr; if (diameters_count > 1) { - if (fo.id < filament_map.size()) { - auto nozzle_id = filament_map[fo.id]; + if (fo.id < m_filaments_map.size()) { + auto nozzle_id = m_filaments_map[fo.id]; if (nozzle_id == 1) { item = new MaterialItem(m_filament_left_panel, wxColour(fo.color), fo.type); @@ -4242,7 +4251,7 @@ void SelectMachineDialog::set_default_from_sdcard() } item->Bind(wxEVT_LEFT_UP, [this, item, materials](wxMouseEvent& e) {}); - item->Bind(wxEVT_LEFT_DOWN, [this, obj_, item, materials, diameters_count, filament_map, fo](wxMouseEvent& e) { + item->Bind(wxEVT_LEFT_DOWN, [this, obj_, item, materials, diameters_count, fo](wxMouseEvent& e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { int id = iter->first; @@ -4271,9 +4280,9 @@ void SelectMachineDialog::set_default_from_sdcard() if (diameters_count > 1) { if (obj_ && can_hybrid_mapping(obj_->m_extder_data)) { m_mapping_popup.set_show_type(ShowType::LEFT_AND_RIGHT); - } else if (filament_map[m_current_filament_id] == 1) { + } else if (m_filaments_map[m_current_filament_id] == 1) { m_mapping_popup.set_show_type(ShowType::LEFT); - } else if (filament_map[m_current_filament_id] == 2) { + } else if (m_filaments_map[m_current_filament_id] == 2) { m_mapping_popup.set_show_type(ShowType::RIGHT); } }