From 2a9814abeb74fef9690fa01d9b2f5b574bd68f1d Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Fri, 29 Nov 2024 14:32:55 +0800 Subject: [PATCH] FIX:get error config when use quick key jira: STUDIO-9026 Change-Id: I28f4a7bf5ec7e421fada9ca3950e6125c2bb6936 (cherry picked from commit 32c42ccefacbd4b511b296d8796ca4a1874da532) --- src/slic3r/GUI/GUI_ObjectList.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index c6a9faeed7..2e2bb272ce 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -5881,8 +5881,8 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) ItemType type = m_objects_model->GetItemType(item); if (type & itVolume) { const int obj_idx = m_objects_model->GetObjectIdByItem(item); - const int vol_idx = m_objects_model->GetVolumeIdByItem(item); - + int vol_idx = m_objects_model->GetVolumeIdByItem(item); + vol_idx = m_objects_model->get_real_volume_index_in_3d(obj_idx, vol_idx); if ((obj_idx < m_objects->size()) && (obj_idx < (*m_objects)[obj_idx]->volumes.size())) { auto volume_type = (*m_objects)[obj_idx]->volumes[vol_idx]->type(); if (volume_type != ModelVolumeType::MODEL_PART && volume_type != ModelVolumeType::PARAMETER_MODIFIER) @@ -5904,11 +5904,25 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) } } - ModelConfig& config = get_item_config(item); - if (config.has("extruder")) - config.set("extruder", new_extruder); - else - config.set_key_value("extruder", new ConfigOptionInt(new_extruder)); + if (type & itInfo && m_objects_model->GetInfoItemType(item) == InfoItemType::CutConnectors) { + const int obj_idx = m_objects_model->GetObjectIdByItem(item); + for (size_t i = 0; i < (*m_objects)[obj_idx]->volumes.size(); i++) { + auto mv = (*m_objects)[obj_idx]->volumes[i]; + if (mv->is_cut_connector()) { + ModelConfig &config = mv->config; + if (config.has("extruder")) + config.set("extruder", new_extruder); + else + config.set_key_value("extruder", new ConfigOptionInt(new_extruder)); + } + } + } else { + ModelConfig &config = get_item_config(item); + if (config.has("extruder")) + config.set("extruder", new_extruder); + else + config.set_key_value("extruder", new ConfigOptionInt(new_extruder)); + } // for object, clear all its part volume's extruder config if (type & itObject) {