Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsupermerill <merill@free.fr>2021-10-11 18:53:31 +0300
committersupermerill <merill@free.fr>2021-10-11 18:53:31 +0300
commitf900d80e93a62f3ad72f07e3ac0e9540627c89bb (patch)
treec32c828776a7d0e86b5ea12979e1c143f00b3c7c
parente53f60dc1aab829d86733a5590f4b43e6c0daff8 (diff)
fix the Fix for no_perimeter_unsupported_algo (a4caa5)
assign instead of insert... supermerill/SuperSlicer#1621
-rw-r--r--src/libslic3r/PrintConfig.cpp5
-rw-r--r--src/libslic3r/PrintObject.cpp7
2 files changed, 8 insertions, 4 deletions
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index 3e5f52572..a4cc2f4d3 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -3849,7 +3849,10 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionBool(false));
def = this->add("solid_over_perimeters", coInt);
- def->label = L("Max perimeters layer for solid infill");
+ def->label = L("No solid infill over");
+ def->full_label = L("No solid infill over perimeters");
+ def->sidetext = L("perimeters");
+ def->sidetext_width = 20;
def->category = OptionCategory::perimeter;
def->tooltip = L("When you have a medium/hight number of top/bottom solid layers, and a low/medium of perimeters,"
" then it have to put some solid infill inside the part to have enough solid layers."
diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp
index c9d48093f..126db9a2c 100644
--- a/src/libslic3r/PrintObject.cpp
+++ b/src/libslic3r/PrintObject.cpp
@@ -1672,7 +1672,7 @@ namespace Slic3r {
size_t grain_size = std::max(num_layers / 16, size_t(1));
//solid_over_perimeters value, to remove solid fill where there's only perimeters on multiple layers
- int nb_perimeter_layers_for_solid_fill = region.config().solid_over_perimeters.value;
+ const int nb_perimeter_layers_for_solid_fill = region.config().solid_over_perimeters.value;
if (!top_bottom_surfaces_all_regions) {
// This is either a single material print, or a multi-material print and interface_shells are enabled, meaning that the vertical shell thickness
@@ -1899,8 +1899,9 @@ namespace Slic3r {
//check if a polygon is only over perimeter, in this case evict it (depends from nb_perimeter_layers_for_solid_fill value)
if (nb_perimeter_layers_for_solid_fill != 0) {
for (int i = 0; i < shell.size(); i++) {
- if (nb_perimeter_layers_for_solid_fill < 2 || intersection({ shell[i] }, max_perimeter_shell, false).empty()) {
- toadd = intersection_ex({ shell[i] }, fill_shell);
+ if (nb_perimeter_layers_for_solid_fill < 2 || intersection_ex({ shell[i] }, max_perimeter_shell, false).empty()) {
+ ExPolygons expoly = intersection_ex({ shell[i] }, fill_shell);
+ toadd.insert(toadd.end(), expoly.begin(), expoly.end());
shell.erase(shell.begin() + i);
i--;
}