It allows to control the spacing vs width (10%% fill vs a bit less)
The 'enforce 100% fill volume' is also adjusted to take that into account
Note that if you're using multiple extruders/filament everywhere (and spacing setting for width setting),
the result may be a bit unexpected, as the gui can't display all the interactions,
also some features (like support) may revert to default overlap value, if printed with multiple filaments.
supermerill/SuperSlicer#1590
Fixed some issues in internal anchors of the Adaptive Cubic infill.
The ugly and dangerous implicit casting operators in Line, MultiPoint,
Polyline and Polygon were made explicit.
limited anchors, while before a full perimeter segment was always
taken if possible.
2) Adapted the line infills (grid, stars, triangles, cubic) to 1).
This also solves a long standing issue of these infills producing
anchors for each sweep direction independently, thus possibly
overlapping and overextruding, which was quite detrimental
in narrow areas.
3) Refactored cubic adaptive infill anchroing algorithm
for performance and clarity.
but it works only for half of rectilinear2: because it go over a new polyline start always from the same direction.
So it needs a difficult to do change to rectilinear2. (TODO)
1) Octree is built directly from the triangle mesh by checking
overlap of a triangle with an octree cell. This shall produce
a tighter octree with less dense cells.
2) The same method is used for both the adaptive / support cubic infill,
where for the support cubic infill the non-overhang triangles are
ignored.
The AABB tree is no more used.
3) Optimized extraction of continuous infill lines in O(1) instead of O(n^2)
1) All slicer's exceptions are now derived from Slic3r::Exception.
2) New exceptions are defined for slicing errors.
3) Exceptions are propagated to the Plater to show.
It remains to modify the slicing back-end to throw the new SlicingError
exceptions instead of std::runtime_error and to show the other exceptions
by a message dialog instead of a notification.
also the rectilinear2.cpp rework that go along
use of monotonous in ironing
use of monotonous instead of rectilinear of "filled" in top & bottom
reduce gap fill area from rectilinearWGapFill to the area with no overlap
fix flatten(): don't put everything in a no_sort collection but correctly recreate the hierarchy of no_sort, sort, no_sort of collections.
by @supermerill and @wavexx
WIP: The function Fill::connect_infill() is being rewritten
to utilize spatial structures wherever possible for lower CPU load
and less dynamic memory allocation.
bugfix flow inaccuracies in FillSmooth.
TODO: do something about surface too small to be printed, particularly when 'only one perimeter top' -> don't extract them or use gapfill
not merged: fill.cpp, perimeter_generator, because they ahve been reworked and need to be understand fully before adding my extensive modifications.
To verify: glcanvas: maybe filament color selection is deleted (or the other one i added?)
* it replace rectilinear fill by gapfill when width < spacing * 1.6
* it permit to fill spaces too thin to be filled by infill (if it's not already filled by the perimeter gapfill)
* it print the gapfill after the rectilinear infill.
* the exact volume option only do his thing on the rectilinear area, not the gapfill one (as it's already done in the medial axis).