From a564ee6a0a8611ba0f9cb02c09ff59a77e08f184 Mon Sep 17 00:00:00 2001 From: "jiangkai.zhao" Date: Wed, 26 Mar 2025 09:39:42 +0800 Subject: [PATCH] Fix: tpu reverse travel from top of nozzle_change jira: none Change-Id: I23b2867775818a07289b7d93a7d711e25b6f131a --- src/libslic3r/GCode/WipeTower.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 5dc281b51..8acb3cdf4 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -3137,14 +3137,13 @@ WipeTower::NozzleChangeResult WipeTower::nozzle_change_new(int old_filament_id, NozzleChangeResult result; if (is_need_reverse_travel(m_current_tool)) { bool left_to_right = !m_left_to_right; - int tpu_line_count = nozzle_change_line_count - 1 ; // nozzle_change_line_count / 2 round up - if (tpu_line_count <= 0) tpu_line_count = 1; + int tpu_line_count = nozzle_change_line_count ; nozzle_change_speed *= 2; // due to nozzle change 2 perimeter float need_reverse_travel_dis = m_filpar[m_current_tool].ramming_travel_time * nozzle_change_speed/60.f; float real_travel_dis = tpu_line_count * (xr - xl - 2 * m_perimeter_width); if (real_travel_dis < need_reverse_travel_dis) nozzle_change_speed *= real_travel_dis / need_reverse_travel_dis; - writer.travel(writer.x(), writer.y() - m_nozzle_change_perimeter_width); + writer.travel(writer.x(), writer.y() + m_nozzle_change_perimeter_width); for (int i = 0; true; ++i) { need_reverse_travel_dis -= (xr - xl - 2 * m_perimeter_width);