diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 5af302ead..9647b3e41 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -342,9 +342,10 @@ std::vector Print::extruders(bool conside_custom_gcode) const if (conside_custom_gcode) { //BBS + int num_extruders = m_config.filament_colour.size(); for (auto plate_data : m_model.plates_custom_gcodes) { for (auto item : plate_data.second.gcodes) { - if (item.type == CustomGCode::Type::ToolChange) + if (item.type == CustomGCode::Type::ToolChange && item.extruder <= num_extruders) extruders.push_back((unsigned int)(item.extruder - 1)); } } diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 2c1193f4a..77b42dad8 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1256,10 +1256,14 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const if (conside_custom_gcode) { //BBS - if (m_model->plates_custom_gcodes.find(m_plate_index) != m_model->plates_custom_gcodes.end()) { - for (auto item : m_model->plates_custom_gcodes.at(m_plate_index).gcodes) { - if (item.type == CustomGCode::Type::ToolChange) - plate_extruders.push_back(item.extruder); + int nums_extruders = 0; + if (const ConfigOptionStrings *color_option = dynamic_cast(wxGetApp().preset_bundle->project_config.option("filament_colour"))) { + nums_extruders = color_option->values.size(); + if (m_model->plates_custom_gcodes.find(m_plate_index) != m_model->plates_custom_gcodes.end()) { + for (auto item : m_model->plates_custom_gcodes.at(m_plate_index).gcodes) { + if (item.type == CustomGCode::Type::ToolChange && item.extruder <= nums_extruders) + plate_extruders.push_back(item.extruder); + } } } }