From 078f3af9c2d539b1a3fd122557fdd58073d6fa40 Mon Sep 17 00:00:00 2001 From: florens Date: Thu, 14 Aug 2014 16:36:35 +0200 Subject: [PATCH] added min and max_layer_height options to extruder to be used as limits for adaptive layer heights --- lib/Slic3r/GUI/Tab.pm | 7 ++++++- xs/src/libslic3r/PrintConfig.cpp | 12 ++++++++++++ xs/src/libslic3r/PrintConfig.hpp | 8 ++++++++ xs/src/libslic3r/PrintObject.cpp | 2 ++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/Slic3r/GUI/Tab.pm b/lib/Slic3r/GUI/Tab.pm index c7d4c11db..32e12a655 100644 --- a/lib/Slic3r/GUI/Tab.pm +++ b/lib/Slic3r/GUI/Tab.pm @@ -1013,7 +1013,7 @@ sub build { $self->_build_extruder_pages; } -sub _extruder_options { qw(nozzle_diameter extruder_offset retract_length retract_lift retract_speed retract_restart_extra retract_before_travel wipe +sub _extruder_options { qw(nozzle_diameter min_layer_height max_layer_height extruder_offset retract_length retract_lift retract_speed retract_restart_extra retract_before_travel wipe retract_layer_change retract_length_toolchange retract_restart_extra_toolchange) } sub _build_extruder_pages { @@ -1042,6 +1042,11 @@ sub _build_extruder_pages { my $optgroup = $page->new_optgroup('Size'); $optgroup->append_single_option_line('nozzle_diameter', $extruder_idx); } + { + my $optgroup = $page->new_optgroup('Limits'); + $optgroup->append_single_option_line($_, $extruder_idx) + for qw(min_layer_height max_layer_height); + } { my $optgroup = $page->new_optgroup('Position (for multi-extruder printers)'); $optgroup->append_single_option_line('extruder_offset', $extruder_idx); diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 567acb11d..8efa4399b 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -461,6 +461,12 @@ PrintConfigDef::build_def() { Options["max_fan_speed"].min = 0; Options["max_fan_speed"].max = 100; + Options["max_layer_height"].type = coFloats; + Options["max_layer_height"].label = "max"; + Options["max_layer_height"].tooltip = "This is the highest printable layer height for this extruder and limits the resolution for adaptive slicing. Typical values are slightly smaller than nozzle_diameter."; + Options["max_layer_height"].sidetext = "mm"; + Options["max_layer_height"].cli = "max-layer-height=f@"; + Options["min_fan_speed"].type = coInt; Options["min_fan_speed"].label = "Min"; Options["min_fan_speed"].tooltip = "This setting represents the minimum PWM your fan needs to work."; @@ -469,6 +475,12 @@ PrintConfigDef::build_def() { Options["min_fan_speed"].min = 0; Options["min_fan_speed"].max = 100; + Options["min_layer_height"].type = coFloats; + Options["min_layer_height"].label = "min"; + Options["min_layer_height"].tooltip = "TThis is the lowest printable layer height for this extruder and limits the resolution for adaptive slicing. Typical values are 0.1 or 0.05."; + Options["min_layer_height"].sidetext = "mm"; + Options["min_layer_height"].cli = "min-layer-height=f@"; + Options["min_print_speed"].type = coInt; Options["min_print_speed"].label = "Min print speed"; Options["min_print_speed"].tooltip = "Slic3r will not scale speed down below this speed."; diff --git a/xs/src/libslic3r/PrintConfig.hpp b/xs/src/libslic3r/PrintConfig.hpp index 160acd4d0..03e658597 100644 --- a/xs/src/libslic3r/PrintConfig.hpp +++ b/xs/src/libslic3r/PrintConfig.hpp @@ -348,7 +348,9 @@ class PrintConfig : public virtual StaticPrintConfig ConfigOptionBool infill_first; ConfigOptionString layer_gcode; ConfigOptionInt max_fan_speed; + ConfigOptionFloats max_layer_height; ConfigOptionInt min_fan_speed; + ConfigOptionFloats min_layer_height; ConfigOptionInt min_print_speed; ConfigOptionFloat min_skirt_length; ConfigOptionString notes; @@ -427,7 +429,11 @@ class PrintConfig : public virtual StaticPrintConfig this->infill_first.value = false; this->layer_gcode.value = ""; this->max_fan_speed.value = 100; + this->max_layer_height.values.resize(1); + this->max_layer_height.values[0] = 0.3; this->min_fan_speed.value = 35; + this->min_layer_height.values.resize(1); + this->min_layer_height.values[0] = 0.1; this->min_print_speed.value = 10; this->min_skirt_length.value = 0; this->notes.value = ""; @@ -508,7 +514,9 @@ class PrintConfig : public virtual StaticPrintConfig if (opt_key == "infill_first") return &this->infill_first; if (opt_key == "layer_gcode") return &this->layer_gcode; if (opt_key == "max_fan_speed") return &this->max_fan_speed; + if (opt_key == "max_layer_height") return &this->max_layer_height; if (opt_key == "min_fan_speed") return &this->min_fan_speed; + if (opt_key == "min_layer_height") return &this->min_layer_height; if (opt_key == "min_print_speed") return &this->min_print_speed; if (opt_key == "min_skirt_length") return &this->min_skirt_length; if (opt_key == "notes") return &this->notes; diff --git a/xs/src/libslic3r/PrintObject.cpp b/xs/src/libslic3r/PrintObject.cpp index d561dc6aa..d210e821b 100644 --- a/xs/src/libslic3r/PrintObject.cpp +++ b/xs/src/libslic3r/PrintObject.cpp @@ -143,6 +143,8 @@ PrintObject::invalidate_state_by_config_options(const std::vector