diff --git a/lib/Slic3r/Layer/Region.pm b/lib/Slic3r/Layer/Region.pm index 357f63645..6af5c3d97 100644 --- a/lib/Slic3r/Layer/Region.pm +++ b/lib/Slic3r/Layer/Region.pm @@ -284,7 +284,7 @@ sub make_perimeters { # detect overhanging/bridging perimeters my @paths = (); - if ($self->region->config->overhangs && $lower_slices->count > 0) { + if ($self->region->config->overhangs) { # get non-overhang paths by intersecting this loop with the grown lower slices foreach my $polyline (@{ intersection_ppl([ $polygon ], $lower_slices_p) }) { push @paths, Slic3r::ExtrusionPath->new( diff --git a/lib/Slic3r/Print/Object.pm b/lib/Slic3r/Print/Object.pm index d7878e25a..af07f3488 100644 --- a/lib/Slic3r/Print/Object.pm +++ b/lib/Slic3r/Print/Object.pm @@ -700,7 +700,14 @@ sub detect_surfaces_type { # if no lower layer, all surfaces of this one are solid # we clone surfaces because we're going to clear the slices collection @bottom = map $_->clone, @{$layerm->slices}; - $_->surface_type(S_TYPE_BOTTOM) for @bottom; + + # if we have raft layers, consider bottom layer as a bridge + # just like any other bottom surface lying on the void + if ($self->config->raft_layers > 0) { + $_->surface_type(S_TYPE_BOTTOMBRIDGE) for @bottom; + } else { + $_->surface_type(S_TYPE_BOTTOM) for @bottom; + } } # now, if the object contained a thin membrane, we could have overlapping bottom