From 478a3cabc4b7c2eb2ce7f7d40c3ecdcab3d09039 Mon Sep 17 00:00:00 2001 From: QIDI TECH <893239786@qq.com> Date: Sat, 23 Sep 2023 13:41:54 +0800 Subject: [PATCH] Update P2 P3 fan gcode --- src/libslic3r/GCode/CoolingBuffer.cpp | 23 +++++++++++++++++------ src/libslic3r/GCode/CoolingBuffer.hpp | 3 +++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index d7dd59f..83135e4 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -39,6 +39,9 @@ void CoolingBuffer::reset(const Vec3d &position) m_current_pos[2] = float(position.z()); m_current_pos[4] = float(m_config.travel_speed.value); m_fan_speed = -1; +//Y12 + m_fan_speed = -1; + m_fan_speed = -1; } struct CoolingLine @@ -807,15 +810,23 @@ std::string CoolingBuffer::apply_layer_cooldown( } //B15 //B39 if (int(layer_id) == disable_rapid_cooling_fan_first_layers) { - std::ostringstream fan_gcode; - fan_gcode << "M106 P2 S" << 255.0 * enable_auxiliary_fan / 100.0 << "\n"; - new_gcode += fan_gcode.str(); + int auxiliary_fan_speed_new = 255 * enable_auxiliary_fan / 100; + if (auxiliary_fan_speed_new != m_auxiliary_fan_speed) { + std::ostringstream fan_gcode; + m_auxiliary_fan_speed = auxiliary_fan_speed_new; + fan_gcode << "M106 P2 S" << auxiliary_fan_speed_new << "\n"; + new_gcode += fan_gcode.str(); + } } //B25 if (int(layer_id) == disable_fan_first_layers) { - std::ostringstream fan_gcode; - fan_gcode << "M106 P3 S" << 255.0 * enable_volume_fan / 100.0 << "\n"; - new_gcode += fan_gcode.str(); + int volume_fan_speed_new = 255 * enable_volume_fan / 100; + if (volume_fan_speed_new != m_volume_fan_speed) { + std::ostringstream fan_gcode; + m_volume_fan_speed = volume_fan_speed_new; + fan_gcode << "M106 P3 S" << volume_fan_speed_new << "\n"; + new_gcode += fan_gcode.str(); + } } if (fan_speed_new != m_fan_speed) { diff --git a/src/libslic3r/GCode/CoolingBuffer.hpp b/src/libslic3r/GCode/CoolingBuffer.hpp index 91a81c7..85b3ed3 100644 --- a/src/libslic3r/GCode/CoolingBuffer.hpp +++ b/src/libslic3r/GCode/CoolingBuffer.hpp @@ -45,6 +45,9 @@ private: std::vector m_current_pos; // Current known fan speed or -1 if not known yet. int m_fan_speed; +//Y12 + int m_auxiliary_fan_speed; + int m_volume_fan_speed; // Cached from GCodeWriter. // Printing extruder IDs, zero based. std::vector m_extruder_ids;