diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 0e5177d786..f65b8ab93d 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -636,6 +636,9 @@ static std::vector get_path_of_change_filament(const Print& print) throw Slic3r::InvalidArgument("Error: WipeTowerIntegration::append_tcr was asked to do a toolchange it didn't expect."); int new_extruder_id = get_extruder_index(*m_print_config, new_filament_id); + + bool is_nozzle_change = !tcr.nozzle_change_result.gcode.empty() && (gcodegen.config().nozzle_diameter.size() > 1); + std::string gcode; // Toolchangeresult.gcode assumes the wipe tower corner is at the origin (except for priming lines) @@ -716,7 +719,7 @@ static std::vector get_path_of_change_filament(const Print& print) auto_lift_type = LiftType::SpiralLift; // BBS: should be placed before toolchange parsing - std::string toolchange_retract_str = gcodegen.retract(true, false, auto_lift_type); + std::string toolchange_retract_str = gcodegen.retract(tcr.is_tool_change && !is_nozzle_change, false, auto_lift_type); check_add_eol(toolchange_retract_str); // Process the custom change_filament_gcode. If it is empty, provide a simple Tn command to change the filament. @@ -727,7 +730,7 @@ static std::vector get_path_of_change_filament(const Print& print) // add nozzle change gcode into change filament gcode std::string nozzle_change_gcode_trans; - if (!tcr.nozzle_change_result.gcode.empty() && (gcodegen.config().nozzle_diameter.size() > 1)) { + if (is_nozzle_change) { // move to start_pos before nozzle change std::string start_pos_str; start_pos_str = gcodegen.travel_to(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(tcr.nozzle_change_result.start_pos) + plate_origin_2d), erMixed, @@ -740,7 +743,7 @@ static std::vector get_path_of_change_filament(const Print& print) gcodegen.m_wipe.reset_path(); for (const Vec2f& wipe_pt : tcr.nozzle_change_result.wipe_path) gcodegen.m_wipe.path.points.emplace_back(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(wipe_pt) + plate_origin_2d)); - nozzle_change_gcode_trans += gcodegen.retract(true, false, auto_lift_type); + nozzle_change_gcode_trans += gcodegen.retract(tcr.is_tool_change, false, auto_lift_type); end_filament_gcode_str = nozzle_change_gcode_trans + end_filament_gcode_str; }