diff --git a/resources/profiles/QIDITechnology.ini b/resources/profiles/QIDITechnology.ini index e5eeada..a2ffa72 100644 --- a/resources/profiles/QIDITechnology.ini +++ b/resources/profiles/QIDITechnology.ini @@ -169,7 +169,7 @@ skirts = 0 slice_closing_radius = 0.049 slicing_mode = regular slow_down_layers = 0 -small_perimeter_speed = 100 +small_perimeter_speed = 70 solid_infill_acceleration = 10000 solid_infill_below_area = 15 solid_infill_every_layers = 0 @@ -648,6 +648,7 @@ compatible_prints_condition = cooling = 1 disable_fan_first_layers = 1 disable_rapid_cooling_fan_first_layers = 3 +dont_slow_down_outer_wall = 1 enable_advance_pressure = 1 enable_auxiliary_fan = 100 enable_auxiliary_fan_unseal = 0 diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index f5befae..5a1ff6d 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -236,6 +236,8 @@ struct PerExtruderAdjustments float slowdown_below_layer_time = 0.f; // Minimum print speed allowed for this extruder. float min_print_speed = 0.f; +//Y28 + bool dont_slow_down_outer_wall = true; // Parsed lines. std::vector lines; @@ -344,6 +346,8 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: adj.cooling_slow_down_enabled = m_config.cooling.get_at(extruder_id); adj.slowdown_below_layer_time = float(m_config.slowdown_below_layer_time.get_at(extruder_id)); adj.min_print_speed = float(m_config.min_print_speed.get_at(extruder_id)); +//Y28 + adj.dont_slow_down_outer_wall = m_config.dont_slow_down_outer_wall.get_at(extruder_id); map_extruder_to_per_extruder_adjustment[extruder_id] = i; } @@ -424,7 +428,12 @@ std::vector CoolingBuffer::parse_layer_gcode(const std:: line.type |= CoolingLine::TYPE_EXTERNAL_PERIMETER; if (wipe) line.type |= CoolingLine::TYPE_WIPE; - if (boost::contains(sline, ";_EXTRUDE_SET_SPEED") && ! wipe) { +//Y28 + bool adjust_external = true; + if (adjustment->dont_slow_down_outer_wall && external_perimeter) + adjust_external = false; + + if (boost::contains(sline, ";_EXTRUDE_SET_SPEED") && ! wipe && adjust_external) { line.type |= CoolingLine::TYPE_ADJUSTABLE; active_speed_modifier = adjustment->lines.size(); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index b8296fe..b679e75 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -536,6 +536,8 @@ static std::vector s_Preset_filament_options { "filament_shrink", //Y26 "seal_print", + //Y28 + "dont_slow_down_outer_wall", //w15 "filament_wipe_distance" }; diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 26aefff..81b42ed 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -83,6 +83,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "disable_fan_first_layers", //B39 "disable_rapid_cooling_fan_first_layers", + //Y28 + "dont_slow_down_outer_wall", "duplicate_distance", "end_gcode", "end_filament_gcode", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 41b724d..53e4894 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2244,6 +2244,17 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 0.07 }); +//Y28 + def = this->add("dont_slow_down_outer_wall", coBools); + def->label = L("Don't slow down outer walls"); + def->tooltip = L("If enabled, this setting will ensure external perimeters are not slowed down to meet the minimum layer time. " + "This is particularly helpful in the below scenarios:\n\n " + "1. To avoid changes in shine when printing glossy filaments \n" + "2. To avoid changes in external wall speed which may create slight wall artefacts that appear like z banding \n" + "3. To avoid printing at speeds which cause VFAs (fine artefacts) on the external walls\n\n"); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBools { true }); + def = this->add("min_print_speed", coFloats); def->label = L("Min print speed"); def->tooltip = L("Slic3r will not scale speed down below this speed."); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 5ef16d2..df256f4 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -900,6 +900,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionInts, min_fan_speed)) ((ConfigOptionFloats, min_layer_height)) ((ConfigOptionFloat, max_print_height)) + //Y28 + ((ConfigOptionBools, dont_slow_down_outer_wall)) ((ConfigOptionFloats, min_print_speed)) ((ConfigOptionFloat, min_skirt_length)) ((ConfigOptionString, notes)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 4ebf733..6fa3f83 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2298,6 +2298,8 @@ void TabFilament::build() optgroup = page->new_optgroup(L("Cooling thresholds"), 25); optgroup->append_single_option_line("fan_below_layer_time", category_path + "cooling-thresholds"); optgroup->append_single_option_line("slowdown_below_layer_time", category_path + "cooling-thresholds"); +//Y28 + optgroup->append_single_option_line("dont_slow_down_outer_wall"); optgroup->append_single_option_line("min_print_speed", category_path + "cooling-thresholds"); page = add_options_page(L("Advanced"), "wrench");