mirror of https://github.com/vitalif/Slic3r
Include perimeters when propagating horizontal shells
parent
e73d76e771
commit
896bf15ea2
|
@ -767,7 +767,7 @@ sub discover_horizontal_shells {
|
||||||
];
|
];
|
||||||
next if !@$solid;
|
next if !@$solid;
|
||||||
Slic3r::debugf "Layer %d has %s surfaces\n", $i, ($type == S_TYPE_TOP) ? 'top' : 'bottom';
|
Slic3r::debugf "Layer %d has %s surfaces\n", $i, ($type == S_TYPE_TOP) ? 'top' : 'bottom';
|
||||||
|
|
||||||
my $solid_layers = ($type == S_TYPE_TOP)
|
my $solid_layers = ($type == S_TYPE_TOP)
|
||||||
? $layerm->config->top_solid_layers
|
? $layerm->config->top_solid_layers
|
||||||
: $layerm->config->bottom_solid_layers;
|
: $layerm->config->bottom_solid_layers;
|
||||||
|
@ -793,8 +793,8 @@ sub discover_horizontal_shells {
|
||||||
# upper perimeter as an obstacle and shell will not be propagated to more upper layers
|
# upper perimeter as an obstacle and shell will not be propagated to more upper layers
|
||||||
my $new_internal_solid = $solid = intersection(
|
my $new_internal_solid = $solid = intersection(
|
||||||
$solid,
|
$solid,
|
||||||
[ map $_->p, grep { ($_->surface_type == S_TYPE_INTERNAL) || ($_->surface_type == S_TYPE_INTERNALSOLID) } @neighbor_fill_surfaces ],
|
[ map $_->p, grep { ($_->surface_type == S_TYPE_INTERNAL) || ($_->surface_type == S_TYPE_INTERNALSOLID) } @{$neighbor_layerm->slices} ],
|
||||||
1,
|
0
|
||||||
);
|
);
|
||||||
next EXTERNAL if !@$new_internal_solid;
|
next EXTERNAL if !@$new_internal_solid;
|
||||||
|
|
||||||
|
@ -844,6 +844,9 @@ sub discover_horizontal_shells {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# intersect with fill surfaces before assigning to object
|
||||||
|
$new_internal_solid = intersection($new_internal_solid, [ map { $_->p } @neighbor_fill_surfaces ]);
|
||||||
|
|
||||||
# internal-solid are the union of the existing internal-solid surfaces
|
# internal-solid are the union of the existing internal-solid surfaces
|
||||||
# and new ones
|
# and new ones
|
||||||
my $internal_solid = union([
|
my $internal_solid = union([
|
||||||
|
|
Loading…
Reference in New Issue