mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-07-25 13:24:27 +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->set_default_value(new ConfigOptionBool(false));
|
||||||
|
|
||||||
def = this->add("solid_over_perimeters", coInt);
|
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->category = OptionCategory::perimeter;
|
||||||
def->tooltip = L("When you have a medium/hight number of top/bottom solid layers, and a low/medium of perimeters,"
|
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."
|
" 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));
|
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
|
//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) {
|
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
|
// 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)
|
//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) {
|
if (nb_perimeter_layers_for_solid_fill != 0) {
|
||||||
for (int i = 0; i < shell.size(); i++) {
|
for (int i = 0; i < shell.size(); i++) {
|
||||||
if (nb_perimeter_layers_for_solid_fill < 2 || intersection({ shell[i] }, max_perimeter_shell, false).empty()) {
|
if (nb_perimeter_layers_for_solid_fill < 2 || intersection_ex({ shell[i] }, max_perimeter_shell, false).empty()) {
|
||||||
toadd = intersection_ex({ shell[i] }, fill_shell);
|
ExPolygons expoly = intersection_ex({ shell[i] }, fill_shell);
|
||||||
|
toadd.insert(toadd.end(), expoly.begin(), expoly.end());
|
||||||
shell.erase(shell.begin() + i);
|
shell.erase(shell.begin() + i);
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user