fix the Fix for no_perimeter_unsupported_algo (a4caa5)

assign instead of insert...
supermerill/SuperSlicer#1621
This commit is contained in:
supermerill 2021-10-11 17:53:31 +02:00
parent e53f60dc1a
commit f900d80e93
2 changed files with 8 additions and 4 deletions

View File

@ -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."

View File

@ -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--;
}