From 980fe77b32e8730ce08173af793af53653d1dd05 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Wed, 30 Sep 2020 08:34:29 +0200 Subject: [PATCH] #4806 - Fixed detection of move type for G1 lines containing Z>0 and E>0 --- src/libslic3r/GCode/GCodeProcessor.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 0a5617559d..ac67fdabe5 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1377,12 +1377,11 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) auto move_type = [this](const AxisCoords& delta_pos) { EMoveType type = EMoveType::Noop; - if (delta_pos[E] < 0.0f) { + if (delta_pos[E] < 0.0f) type = (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f || delta_pos[Z] != 0.0f) ? EMoveType::Travel : EMoveType::Retract; - } else if (delta_pos[E] > 0.0f) { - if (delta_pos[X] == 0.0f && delta_pos[Y] == 0.0f && delta_pos[Z] == 0.0f) - type = EMoveType::Unretract; + if (delta_pos[X] == 0.0f && delta_pos[Y] == 0.0f) + type = (delta_pos[Z] == 0.0f) ? EMoveType::Unretract : EMoveType::Travel; else if (delta_pos[X] != 0.0f || delta_pos[Y] != 0.0f) type = EMoveType::Extrude; }