diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f14be40fcb..a3d4ca7b4f 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -797,7 +797,7 @@ static std::vector get_path_of_change_filament(const Print& print) check_add_eol(toolchange_gcode_str); // SoftFever: set new PA for new filament - if (gcodegen.config().enable_pressure_advance.get_at(new_extruder_id)) { + if (new_extruder_id != -1 && gcodegen.config().enable_pressure_advance.get_at(new_extruder_id)) { gcode += gcodegen.writer().set_pressure_advance(gcodegen.config().pressure_advance.get_at(new_extruder_id)); } @@ -909,7 +909,7 @@ static std::vector get_path_of_change_filament(const Print& print) if (!gcodegen.is_BBL_Printer()) { for (const WipeTower::ToolChangeResult &tcr : m_priming) { if (!tcr.extrusions.empty()) - gcode += append_tcr(gcodegen, tcr, tcr.new_tool); + gcode += append_tcr2(gcodegen, tcr, tcr.new_tool); } } return gcode; @@ -987,7 +987,7 @@ static std::vector get_path_of_change_filament(const Print& print) if (!gcodegen.is_BBL_Printer()) { if (std::abs(gcodegen.writer().get_position().z() - m_final_purge.print_z) > EPSILON) gcode += gcodegen.change_layer(m_final_purge.print_z); - gcode += append_tcr(gcodegen, m_final_purge, -1); + gcode += append_tcr2(gcodegen, m_final_purge, -1); } return gcode; diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 7a5b8e45c5..f282db6065 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -303,7 +303,7 @@ std::string GCodeWriter::toolchange(unsigned int extruder_id) // return the toolchange command // if we are running a single-extruder setup, just set the extruder and return nothing std::ostringstream gcode; - if (this->multiple_extruders) { + if (this->multiple_extruders || (this->config.filament_diameter.values.size() > 1 && !is_bbl_printers())) { gcode << this->toolchange_prefix() << extruder_id; //BBS if (GCodeWriter::full_gcode_comment)