From 7707685069393e4ba7f17f1c62e4355b45060b9f Mon Sep 17 00:00:00 2001 From: Christos Karampeazis-Papadakis Date: Mon, 1 Jul 2024 12:13:50 +0200 Subject: [PATCH] Disable small area flow compensation on first layer (Fixes #4617) (#5838) Co-authored-by: SoftFever --- src/libslic3r/GCode.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c078d1a5d6..cdeaa1f159 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -5442,7 +5442,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, continue; path_length += line_length; auto dE = e_per_mm * line_length; - if (m_small_area_infill_flow_compensator && m_config.small_area_infill_flow_compensation.value) { + if (!this->on_first_layer() && m_small_area_infill_flow_compensator + && m_config.small_area_infill_flow_compensation.value) { auto oldE = dE; dE = m_small_area_infill_flow_compensator->modify_flow(line_length, dE, path.role()); @@ -5482,7 +5483,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, if (line_length < EPSILON) continue; auto dE = e_per_mm * line_length; - if (m_small_area_infill_flow_compensator && m_config.small_area_infill_flow_compensation.value) { + if (!this->on_first_layer() && m_small_area_infill_flow_compensator + && m_config.small_area_infill_flow_compensation.value) { auto oldE = dE; dE = m_small_area_infill_flow_compensator->modify_flow(line_length, dE, path.role()); @@ -5505,7 +5507,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, continue; const Vec2d center_offset = this->point_to_gcode(arc.center) - this->point_to_gcode(arc.start_point); auto dE = e_per_mm * arc_length; - if (m_small_area_infill_flow_compensator && m_config.small_area_infill_flow_compensation.value) { + if (!this->on_first_layer() && m_small_area_infill_flow_compensator + && m_config.small_area_infill_flow_compensation.value) { auto oldE = dE; dE = m_small_area_infill_flow_compensator->modify_flow(arc_length, dE, path.role()); @@ -5593,7 +5596,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, last_set_speed = new_speed; } auto dE = e_per_mm * line_length; - if (m_small_area_infill_flow_compensator && m_config.small_area_infill_flow_compensation.value) { + if (!this->on_first_layer() && m_small_area_infill_flow_compensator + && m_config.small_area_infill_flow_compensation.value) { auto oldE = dE; dE = m_small_area_infill_flow_compensator->modify_flow(line_length, dE, path.role());