From 6ddcc1457785e9fbda8d449b27ce9487845d8879 Mon Sep 17 00:00:00 2001 From: "salt.wei" Date: Mon, 27 Mar 2023 11:04:11 +0800 Subject: [PATCH] ENH: support fuzzy all wall lines Signed-off-by: salt.wei Change-Id: If6754b6a958203459882a125048e01b347e0a4db --- src/libslic3r/PerimeterGenerator.cpp | 4 ++-- src/libslic3r/PrintConfig.cpp | 7 +++++-- src/libslic3r/PrintConfig.hpp | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index d7e79180e..f938a12b9 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -801,8 +801,8 @@ void PerimeterGenerator::process_classic() break; } { - const bool fuzzify_contours = this->config->fuzzy_skin != FuzzySkinType::None && i == 0 && this->layer_id > 0; - const bool fuzzify_holes = fuzzify_contours && this->config->fuzzy_skin == FuzzySkinType::All; + const bool fuzzify_contours = this->config->fuzzy_skin != FuzzySkinType::None && ((i == 0 && this->layer_id > 0) || this->config->fuzzy_skin == FuzzySkinType::AllWalls); + const bool fuzzify_holes = fuzzify_contours && (this->config->fuzzy_skin == FuzzySkinType::All || this->config->fuzzy_skin == FuzzySkinType::AllWalls); for (const ExPolygon& expolygon : offsets) { // Outer contour may overlap with an inner contour, // inner contour may overlap with another inner contour, diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index d4a8e567d..ee3cb4436 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -108,7 +108,8 @@ CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(GCodeFlavor) static t_config_enum_values s_keys_map_FuzzySkinType { { "none", int(FuzzySkinType::None) }, { "external", int(FuzzySkinType::External) }, - { "all", int(FuzzySkinType::All) } + { "all", int(FuzzySkinType::All) }, + { "allwalls", int(FuzzySkinType::AllWalls)} }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(FuzzySkinType) @@ -1428,8 +1429,10 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("none"); def->enum_values.push_back("external"); def->enum_values.push_back("all"); + def->enum_values.push_back("allwalls"); def->enum_labels.push_back(L("None")); - def->enum_labels.push_back(L("Outer wall")); + def->enum_labels.push_back(L("Contour")); + def->enum_labels.push_back(L("Contour and hole")); def->enum_labels.push_back(L("All walls")); def->mode = comSimple; def->set_default_value(new ConfigOptionEnum(FuzzySkinType::None)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 746d3c3c1..c04340431 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -40,6 +40,7 @@ enum class FuzzySkinType { None, External, All, + AllWalls, }; enum PrintHostType {