diff options
author | supermerill <merill@free.fr> | 2021-10-11 18:53:31 +0300 |
---|---|---|
committer | supermerill <merill@free.fr> | 2021-10-11 18:53:31 +0300 |
commit | f900d80e93a62f3ad72f07e3ac0e9540627c89bb (patch) | |
tree | c32c828776a7d0e86b5ea12979e1c143f00b3c7c | |
parent | e53f60dc1aab829d86733a5590f4b43e6c0daff8 (diff) |
fix the Fix for no_perimeter_unsupported_algo (a4caa5)
assign instead of insert...
supermerill/SuperSlicer#1621
-rw-r--r-- | src/libslic3r/PrintConfig.cpp | 5 | ||||
-rw-r--r-- | src/libslic3r/PrintObject.cpp | 7 |
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--; } |