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.pattern = ipRectiWithPerimeter;
params.connection = InfillConnection::icConnected; params.connection = InfillConnection::icConnected;
} }
if (params.density <= 0) if (params.density <= 0 && !is_denser)
continue; continue;
} }
//adjust spacing/density (to over-extrude when needed) //adjust spacing/density (to over-extrude when needed)

View File

@ -567,11 +567,11 @@ namespace Slic3r {
tbb::parallel_for( tbb::parallel_for(
tbb::blocked_range<size_t>(1, m_layers.size()), tbb::blocked_range<size_t>(1, m_layers.size()),
[this](const tbb::blocked_range<size_t>& range) { [this](const tbb::blocked_range<size_t>& range) {
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) {
m_print->throw_if_canceled(); m_print->throw_if_canceled();
m_layers[layer_idx]->make_ironing(); m_layers[layer_idx]->make_ironing();
}
} }
}
); );
m_print->throw_if_canceled(); m_print->throw_if_canceled();
BOOST_LOG_TRIVIAL(debug) << "Ironing in parallel - end"; 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) for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx)
if (layer_expansions_and_voids[layer_idx + 1]) { if (layer_expansions_and_voids[layer_idx + 1]) {
m_print->throw_if_canceled(); m_print->throw_if_canceled();
Polygons voids; surfaces_covered[layer_idx] = to_polygons(this->m_layers[layer_idx]->lslices);
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);
} }
} }
); );