diff options
Diffstat (limited to 'src/libslic3r/Layer.cpp')
-rw-r--r-- | src/libslic3r/Layer.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 74deabf3e..53a7f2fc4 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -88,8 +88,12 @@ ExPolygons Layer::merged(float offset_scaled) const offset_scaled2 = float(- EPSILON); } Polygons polygons; - for (LayerRegion *layerm : m_regions) - append(polygons, offset(to_expolygons(layerm->slices.surfaces), offset_scaled)); + for (LayerRegion *layerm : m_regions) { + const PrintRegionConfig &config = layerm->region()->config(); + // Our users learned to bend Slic3r to produce empty volumes to act as subtracters. Only add the region if it is non-empty. + if (config.bottom_solid_layers > 0 || config.top_solid_layers > 0 || config.fill_density > 0. || config.perimeters > 0) + append(polygons, offset(to_expolygons(layerm->slices.surfaces), offset_scaled)); + } ExPolygons out = union_ex(polygons); if (offset_scaled2 != 0.f) out = offset_ex(out, offset_scaled2); |