From 1f38d12862a43858db2c8741cb1e8acb0fa9d694 Mon Sep 17 00:00:00 2001 From: "yifan.wu" Date: Sat, 10 Sep 2022 17:39:51 +0800 Subject: [PATCH] FIX: fix a prime tower issue in timelapse smooth mode Fix the issue that the first 2 layers of prime tower are not generated when timelapse is set to smooth mode. This issue only happens in single filament printing. Signed-off-by: yifan.wu --- src/libslic3r/GCode/ToolOrdering.cpp | 9 +++++++++ src/libslic3r/Print.cpp | 10 ---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index b302cd139..7a4caba6d 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -562,6 +562,15 @@ void ToolOrdering::fill_wipe_tower_partitions(const PrintConfig &config, coordf_ for (int i = int(m_layer_tools.size()) - 2; i >= 0; -- i) m_layer_tools[i].wipe_tower_partitions = std::max(m_layer_tools[i + 1].wipe_tower_partitions, m_layer_tools[i].wipe_tower_partitions); + // if enable_timelapse_print(), update all layer_tools parameters: wipe_tower_partitions + if (config.timelapse_type == TimelapseType::tlSmooth) { + for (LayerTools& layer_tools : m_layer_tools) { + if (layer_tools.wipe_tower_partitions == 0) { + layer_tools.wipe_tower_partitions = 1; + } + } + } + //FIXME this is a hack to get the ball rolling. for (LayerTools < : m_layer_tools) lt.has_wipe_tower = (lt.has_object && lt.wipe_tower_partitions > 0) || lt.print_z < object_bottom_z + EPSILON; diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 230bb65bd..900ccc04d 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1777,16 +1777,6 @@ void Print::_make_wipe_tower() // BBS: priming logic is removed, so don't consider it in tool ordering m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int)-1, false); - // if enable_timelapse_print(), update all layer_tools parameters: wipe_tower_partitions - if (enable_timelapse_print()) { - std::vector& layer_tools_array = m_wipe_tower_data.tool_ordering.layer_tools(); - for (LayerTools& layer_tools : layer_tools_array) { - if (layer_tools.wipe_tower_partitions == 0) { - layer_tools.wipe_tower_partitions = 1; - } - } - } - if (!m_wipe_tower_data.tool_ordering.has_wipe_tower()) // Don't generate any wipe tower. return;