From 78eea0a36f86f014d004643d23edee1beb5d6d7f Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Sat, 23 Nov 2024 17:03:48 +0800 Subject: [PATCH] FIX: the wipe tower is not correct for tpu jira: none Change-Id: I79ed204638602013d73525e23a2b74af2c0efff2 --- src/libslic3r/GCode/WipeTower.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 38a55b39a..248ecf521 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -876,6 +876,9 @@ WipeTower::ToolChangeResult WipeTower::tool_change(size_t tool, bool extrude_per case 3: pos = wt_box.lu; break; default: break; } + + writer.travel(Vec2f(0, pos.y())); + writer.travel(pos); writer.set_initial_position(pos, m_wipe_tower_width, m_wipe_tower_depth, m_internal_rotation); // align the perimeter @@ -902,10 +905,7 @@ WipeTower::ToolChangeResult WipeTower::tool_change(size_t tool, bool extrude_per writer.rectangle(wt_box); } - { - writer.travel(Vec2f(0, 0)); - writer.travel(initial_position); - } + writer.travel(initial_position); toolchange_Wipe(writer, cleaning_box, wipe_length); // Wipe the newly loaded filament until the end of the assigned wipe area. @@ -957,7 +957,7 @@ WipeTower::NozzleChangeResult WipeTower::nozzle_change(int old_filament_id, int wipe_depth = b.required_depth; purge_volume = b.purge_volume; if (has_tpu_filament()) - nozzle_change_line_count = ((b.nozzle_change_depth + WT_EPSILON) / m_perimeter_width + 1) / 2; + nozzle_change_line_count = ((b.nozzle_change_depth + WT_EPSILON) / m_perimeter_width) / 2; else nozzle_change_line_count = (b.nozzle_change_depth + WT_EPSILON) / m_perimeter_width; break; @@ -1641,7 +1641,7 @@ void WipeTower::plan_toolchange(float z_par, float layer_height_par, unsigned in double length = m_nozzle_change_length / e_flow; int nozzle_change_line_count = length / (m_wipe_tower_width - m_perimeter_width) + 1; if (has_tpu_filament()) - nozzle_change_depth = (2 * nozzle_change_line_count - 1) * m_perimeter_width; + nozzle_change_depth = (2 * nozzle_change_line_count) * m_perimeter_width; else nozzle_change_depth = nozzle_change_line_count * m_perimeter_width; depth += nozzle_change_depth;