FIX:fixed mapping issue printing from SD card

Change-Id: Iad6b4b6ddd67f1c51fbfd1207893549b9cf746b9
This commit is contained in:
tao wang 2025-02-06 17:09:46 +08:00 committed by lane.wei
parent 3dbe340cf9
commit c66aa632d8
1 changed files with 18 additions and 9 deletions

View File

@ -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<ConfigOptionFloatsNullable>("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<bool> 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<ConfigOptionFloatsNullable>("nozzle_diameter");
auto diameters_count = opt_nozzle_diameters->size();
std::vector<int> filament_map;
auto diameters_count = 1;
if (opt_nozzle_diameters) {
diameters_count = opt_nozzle_diameters->size();
}
//std::vector<int> filament_map;
m_filaments_map.clear();
if (m_required_data_plate_data_list[m_print_plate_idx]->config.option<ConfigOptionInts>("filament_map")){
filament_map = m_required_data_plate_data_list[m_print_plate_idx]->config.option<ConfigOptionInts>("filament_map")->values;
m_filaments_map = m_required_data_plate_data_list[m_print_plate_idx]->config.option<ConfigOptionInts>("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);
}
}