From 1fa62efb6604fd06673602b489a88c9ba3a640c2 Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Mon, 3 Jun 2024 17:35:41 +0800 Subject: [PATCH] FIX: error layer height on gui while open scarf seam Github: 4132 Thanks orca, this fix merged from orca Signed-off-by: qing.zhang Change-Id: Ic2361299532b3cc4667e7744f23aedd4414d8a08 --- src/libslic3r/GCode/GCodeProcessor.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 5594559f6..8834dc601 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -3191,11 +3191,17 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) } if (m_detect_layer_based_on_tag && !m_result.spiral_vase_layers.empty()) { - if (m_result.spiral_vase_layers.back().first == FLT_MAX && delta_pos[Z] > 0.0) + if (delta_pos[Z] >= 0.0 && type == EMoveType::Extrude) { + const float current_z = static_cast(m_end_position[Z]); // replace layer height placeholder with correct value - m_result.spiral_vase_layers.back().first = static_cast(m_end_position[Z]); + if (m_result.spiral_vase_layers.back().first == FLT_MAX) { + m_result.spiral_vase_layers.back().first = current_z; + } else { + m_result.spiral_vase_layers.back().first = std::max(m_result.spiral_vase_layers.back().first, current_z); + } + } if (!m_result.moves.empty()) - m_result.spiral_vase_layers.back().second.second = m_result.moves.size() - 1; + m_result.spiral_vase_layers.back().second.second = m_result.moves.size() - 1 - m_seams_count; } // store move