mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-07-24 04:54:25 +08:00
fix the Fix for no_perimeter_unsupported_algo (a4caa5)
assign instead of insert... supermerill/SuperSlicer#1621
This commit is contained in:
parent
e53f60dc1a
commit
f900d80e93
@ -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."
|
||||
|
@ -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--;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user