diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 2c9138733..77f42eda3 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -5722,11 +5722,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) { @@ -5737,7 +5748,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); }