no infill: allow margins and denser infill

This commit is contained in:
remi durand 2021-04-11 17:01:34 +02:00
parent 147c8493a6
commit f8b249b1c8
2 changed files with 6 additions and 16 deletions

View File

@ -144,7 +144,7 @@ std::vector<SurfaceFill> group_fills(const Layer &layer)
params.pattern = ipRectiWithPerimeter;
params.connection = InfillConnection::icConnected;
}
if (params.density <= 0)
if (params.density <= 0 && !is_denser)
continue;
}
//adjust spacing/density (to over-extrude when needed)

View File

@ -567,11 +567,11 @@ namespace Slic3r {
tbb::parallel_for(
tbb::blocked_range<size_t>(1, m_layers.size()),
[this](const tbb::blocked_range<size_t>& range) {
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) {
m_print->throw_if_canceled();
m_layers[layer_idx]->make_ironing();
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) {
m_print->throw_if_canceled();
m_layers[layer_idx]->make_ironing();
}
}
}
);
m_print->throw_if_canceled();
BOOST_LOG_TRIVIAL(debug) << "Ironing in parallel - end";
@ -1439,17 +1439,7 @@ namespace Slic3r {
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx)
if (layer_expansions_and_voids[layer_idx + 1]) {
m_print->throw_if_canceled();
Polygons voids;
for (const LayerRegion* layerm : m_layers[layer_idx]->regions()) {
/// supermerill: why *0.3 ???
float unsupported_width = -float(scale_(layerm->region()->config().external_infill_margin.get_abs_value(
layerm->region()->config().perimeters == 0 ? 0 : (layerm->flow(frExternalPerimeter).width + layerm->flow(frPerimeter).spacing() * (layerm->region()->config().perimeters - 1)))));
if (layerm->region()->config().fill_density.value == 0.)
for (const Surface& surface : layerm->fill_surfaces.surfaces)
// Shrink the holes, let the layer above expand slightly inside the unsupported areas.
polygons_append(voids, offset(surface.expolygon, unsupported_width));
}
surfaces_covered[layer_idx] = diff(to_polygons(this->m_layers[layer_idx]->lslices), voids);
surfaces_covered[layer_idx] = to_polygons(this->m_layers[layer_idx]->lslices);
}
}
);