From f639c08caf9a9a95119b1f64575d76b29100da65 Mon Sep 17 00:00:00 2001 From: Ilya Date: Wed, 10 Feb 2021 07:01:40 -0800 Subject: [PATCH] Added separate checkbox for gap filling (#5999) * in dev * moved to Advanced menu --- src/libslic3r/PerimeterGenerator.cpp | 2 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 7 +++++++ src/libslic3r/PrintConfig.hpp | 2 ++ src/libslic3r/PrintObject.cpp | 1 + src/slic3r/GUI/PresetHints.cpp | 1 + src/slic3r/GUI/Tab.cpp | 1 + 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index b6929b839..b69acf8df 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -384,7 +384,7 @@ void PerimeterGenerator::process() // internal flow which is unrelated. coord_t min_spacing = coord_t(perimeter_spacing * (1 - INSET_OVERLAP_TOLERANCE)); coord_t ext_min_spacing = coord_t(ext_perimeter_spacing * (1 - INSET_OVERLAP_TOLERANCE)); - bool has_gap_fill = this->config->gap_fill_speed.value > 0; + bool has_gap_fill = this->config->gap_fill_speed.value > 0 && this->config->gap_fill_enabled.value; // prepare grown lower layer slices for overhang detection if (this->lower_slices != NULL && this->config->overhangs) { diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index b7e966c9e..ecaa8a04e 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -406,7 +406,7 @@ const std::vector& Preset::print_options() "layer_height", "first_layer_height", "perimeters", "spiral_vase", "slice_closing_radius", "top_solid_layers", "top_solid_min_thickness", "bottom_solid_layers", "bottom_solid_min_thickness", "extra_perimeters", "ensure_vertical_shell_thickness", "avoid_crossing_perimeters", "thin_walls", "overhangs", - "seam_position", "external_perimeters_first", "fill_density", "fill_pattern", "top_fill_pattern", "bottom_fill_pattern", + "seam_position", "external_perimeters_first", "gap_fill_enabled", "fill_density", "fill_pattern", "top_fill_pattern", "bottom_fill_pattern", "infill_every_layers", "infill_only_where_needed", "solid_infill_every_layers", "fill_angle", "bridge_angle", "solid_infill_below_area", "only_retract_when_crossing_perimeters", "infill_first", "ironing", "ironing_type", "ironing_flowrate", "ironing_speed", "ironing_spacing", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 7aaacc4c7..96efdefca 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -558,6 +558,13 @@ void PrintConfigDef::init_fff_params() def->mode = comExpert; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("gap_fill_enabled", coBool); + def->label = L("Fill gaps"); + def->category = L("Layers and Perimeters"); + def->tooltip = L("Enables small gap fill."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(true)); + def = this->add("extra_perimeters", coBool); def->label = L("Extra perimeters if needed"); def->category = L("Layers and Perimeters"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 5189baab2..1b33bfa11 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -609,6 +609,7 @@ public: ConfigOptionFloatOrPercent external_perimeter_speed; ConfigOptionBool external_perimeters_first; ConfigOptionBool extra_perimeters; + ConfigOptionBool gap_fill_enabled; ConfigOptionFloat fill_angle; ConfigOptionPercent fill_density; ConfigOptionEnum fill_pattern; @@ -662,6 +663,7 @@ protected: OPT_PTR(external_perimeter_speed); OPT_PTR(external_perimeters_first); OPT_PTR(extra_perimeters); + OPT_PTR(gap_fill_enabled); OPT_PTR(fill_angle); OPT_PTR(fill_density); OPT_PTR(fill_pattern); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 233f693e3..3dd4ca181 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -519,6 +519,7 @@ bool PrintObject::invalidate_state_by_config_options(const std::vectornew_optgroup(L("Advanced")); optgroup->append_single_option_line("seam_position", category_path + "seam-position"); optgroup->append_single_option_line("external_perimeters_first", category_path + "external-perimeters-first"); + optgroup->append_single_option_line("gap_fill_enabled"); optgroup = page->new_optgroup(L("Fuzzy skin (experimental)")); Option option = optgroup->get_option("fuzzy_skin_perimeter_mode");