From 3e70923483ad11107d90a75946209dd957892e86 Mon Sep 17 00:00:00 2001 From: sunsets <845944018@qq.com> Date: Fri, 22 Sep 2023 09:40:56 +0800 Subject: [PATCH] disable_rapid_cooling_fan_first_layers --- src/libslic3r/GCode/CoolingBuffer.cpp | 9 +++++++-- src/libslic3r/Preset.cpp | 4 +++- src/libslic3r/Print.cpp | 2 ++ src/libslic3r/PrintConfig.cpp | 17 ++++++++++++++--- src/libslic3r/PrintConfig.hpp | 2 ++ src/slic3r/GUI/Tab.cpp | 2 ++ 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index 98c01fa..a518e97 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -764,6 +764,11 @@ std::string CoolingBuffer::apply_layer_cooldown( std::pair custom_fan_speed_limits{fan_speed_new, 100 }; int disable_fan_first_layers = EXTRUDER_CONFIG(disable_fan_first_layers); + + //B39 + int disable_rapid_cooling_fan_first_layers = EXTRUDER_CONFIG(disable_rapid_cooling_fan_first_layers); + + // Is the fan speed ramp enabled? int full_fan_speed_layer = EXTRUDER_CONFIG(full_fan_speed_layer); if (disable_fan_first_layers <= 0 && full_fan_speed_layer > 0) { @@ -810,8 +815,8 @@ std::string CoolingBuffer::apply_layer_cooldown( fan_gcode << "M106 P2 S" << 255.0 * enable_auxiliary_fan / 100.0 << "\n"; new_gcode += fan_gcode.str(); } - //B25 - if (int(layer_id) == disable_fan_first_layers && enable_volume_fan != 0 && fan_speed_new != m_fan_speed) { + //B25 //B39 + if (int(layer_id) == disable_rapid_cooling_fan_first_layers && enable_volume_fan != 0 ) { std::ostringstream fan_gcode; fan_gcode << "M106 P3 S" << 255.0 * enable_volume_fan / 100.0 << "\n"; new_gcode += fan_gcode.str(); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 020659d..55e06b5 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -516,7 +516,9 @@ static std::vector s_Preset_filament_options { //B26 "advance_pressure", //B26 - "smooth_time" + "smooth_time", + //B39 + "disable_rapid_cooling_fan_first_layers" }; static std::vector s_Preset_machine_limits_options { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 1c8780a..855548c 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -78,6 +78,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "default_acceleration", "deretract_speed", "disable_fan_first_layers", + //B39 + "disable_rapid_cooling_fan_first_layers", "duplicate_distance", "end_gcode", "end_filament_gcode", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index a794e4a..477d7f3 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -778,6 +778,17 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->set_default_value(new ConfigOptionInts { 3 }); + //B39 + def = this->add("disable_rapid_cooling_fan_first_layers", coInts); + def->label = L("Disable rapid cooling fan for the first"); + def->tooltip = L("You can set this to a positive value to disable rapid cooling fan at all " + "during the first layers, so that it does not make adhesion worse."); + def->sidetext = L("layers"); + def->min = 0; + def->max = 1000; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts { 3 }); + def = this->add("dont_support_bridges", coBool); def->label = L("Don't support bridges"); def->category = L("Support material"); @@ -1368,7 +1379,7 @@ void PrintConfigDef::init_fff_params() //B36 def = this->add("first_layer_travel_speed", coFloat); def->label = L("First layer travel"); - def->tooltip = L("Speed for travel moves (jumps between distant extrusion points)."); + def->tooltip = L("Speed for travel moves of the first layer (jumps between distant extrusion points)."); def->sidetext = L("mm/s"); def->aliases = {"travel_feed_rate"}; def->min = 1; @@ -1378,9 +1389,9 @@ void PrintConfigDef::init_fff_params() //B37 def = this->add("first_layer_external_perimeter_speed", coFloat); def->label = L("First layer external perimeters"); - def->tooltip = L("Speed for travel moves (jumps between distant extrusion points)."); + def->tooltip = L("Speed for external perimeters of the first layer (jumps between distant extrusion points)."); def->sidetext = L("mm/s"); - def->aliases = {"travel_feed_rate"}; + def->aliases = {"external_perimeter_speed"}; def->min = 1; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(130)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 74ec0c8..efc1c7b 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -788,6 +788,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionInts, enable_auxiliary_fan)) ((ConfigOptionFloat, default_acceleration)) ((ConfigOptionInts, disable_fan_first_layers)) + //B39 + ((ConfigOptionInts, disable_rapid_cooling_fan_first_layers)) ((ConfigOptionEnum, draft_shield)) ((ConfigOptionFloat, duplicate_distance)) ((ConfigOptionFloat, external_perimeter_acceleration)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index b397889..ac75760 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2104,6 +2104,8 @@ void TabFilament::build() //B25 optgroup->append_single_option_line("enable_volume_fan", category_path + "fan-settings"); optgroup->append_single_option_line("disable_fan_first_layers", category_path + "fan-settings"); + //B39 + optgroup->append_single_option_line("disable_rapid_cooling_fan_first_layers", category_path + "fan-settings"); optgroup->append_single_option_line("full_fan_speed_layer", category_path + "fan-settings"); optgroup = page->new_optgroup(L("Dynamic fan speeds"), 25);