From 08751b0deeea36bd8a100caa39dfd4b6915c51a4 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Mon, 20 May 2024 16:58:28 +0800 Subject: [PATCH] FIX: cannot slice when set object extruder is 0 jira: none Change-Id: Idb6e01acc8ac7801331c3b6b4b0e64a23cc02208 --- src/slic3r/GUI/GUI_ObjectList.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index b92f3e7288..5ba1751daa 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -5656,11 +5656,22 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) if (type & itLayerRoot) continue; + // BBS: handle extruder 0 for part, use it's parent extruder + int new_extruder = extruder; + if (extruder == 0) { + if (type & itObject) { + new_extruder = 1; + } + else if ((type & itVolume) && (m_objects_model->GetVolumeType(sel_item) == ModelVolumeType::MODEL_PART)) { + new_extruder = m_objects_model->GetExtruderNumber(m_objects_model->GetParent(sel_item)); + } + } + ModelConfig& config = get_item_config(item); if (config.has("extruder")) - config.set("extruder", extruder); + config.set("extruder", new_extruder); else - config.set_key_value("extruder", new ConfigOptionInt(extruder)); + config.set_key_value("extruder", new ConfigOptionInt(new_extruder)); // for object, clear all its part volume's extruder config if (type & itObject) { @@ -5671,7 +5682,7 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) } } - const wxString extruder_str = wxString::Format("%d", extruder); + const wxString extruder_str = wxString::Format("%d", new_extruder); m_objects_model->SetExtruder(extruder_str, item); }