From 3f6a9f2ebf0a5834affaa6289582f71315b0cba0 Mon Sep 17 00:00:00 2001 From: Justin Schuh Date: Sun, 18 Aug 2019 18:12:40 -0700 Subject: [PATCH] Add external_perimeter_fan_speed setting (part1) Adds a new setting and plumbs through the UI to independently control the fan speed for external perimeters. Filed as issue #2776. merill note: i only picked the setting definition, as the other part will need an almost compete re-write --- src/libslic3r/Print.cpp | 1 + src/libslic3r/PrintConfig.cpp | 12 ++++++++++++ src/libslic3r/PrintConfig.hpp | 2 ++ src/slic3r/GUI/Preset.cpp | 1 + 4 files changed, 16 insertions(+) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 9c2f5cca5..3c13de3e6 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -88,6 +88,7 @@ bool Print::invalidate_state_by_config_options(const std::vectormode = comExpert; def->set_default_value(new ConfigOptionPercent(0)); + def = this->add("external_perimeter_fan_speed", coInts); + def->label = L("External perimeter fan speed"); + def->tooltip = L("When set to a non-zero value this fan speed is used only for external perimeters (visible ones). " + "When set to zero the normal fan speed is used on external perimeters. " + "External perimeters can benefit from higher fan speed to improve surface finish, " + "while internal perimeters, infill, etc. benefit from lower fan speed to improve layer adhesion."); + def->sidetext = L("%"); + def->min = 0; + def->max = 100; + def->mode = comExpert; + def->set_default_value(new ConfigOptionInts { 0 }); + def = this->add("external_perimeter_overlap", coPercent); def->label = L("external periemter overlap"); def->full_label = L("Ext. peri. overlap"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 7ccab613e..2f8be6793 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1034,6 +1034,7 @@ public: ConfigOptionFloat default_acceleration; ConfigOptionInts disable_fan_first_layers; ConfigOptionFloat duplicate_distance; + ConfigOptionInts external_perimeter_fan_speed; ConfigOptionFloat extruder_clearance_height; ConfigOptionFloat extruder_clearance_radius; ConfigOptionStrings extruder_colour; @@ -1121,6 +1122,7 @@ protected: OPT_PTR(default_acceleration); OPT_PTR(disable_fan_first_layers); OPT_PTR(duplicate_distance); + OPT_PTR(external_perimeter_fan_speed); OPT_PTR(extruder_clearance_height); OPT_PTR(extruder_clearance_radius); OPT_PTR(extruder_colour); diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index 5f5241ee8..77bb72d5a 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -564,6 +564,7 @@ const std::vector& Preset::filament_options() , "disable_fan_first_layers" , "fan_below_layer_time", "slowdown_below_layer_time", "min_print_speed", "start_filament_gcode", "end_filament_gcode", + "external_perimeter_fan_speed", // Retract overrides "filament_retract_length", "filament_retract_lift", "filament_retract_lift_above", "filament_retract_lift_below", "filament_retract_speed", "filament_deretract_speed", "filament_retract_restart_extra", "filament_retract_before_travel", "filament_retract_layer_change", "filament_wipe", "filament_wipe_extra_perimeter", "filament_retract_before_wipe",