Organic supports are not compatible.
Fixes#9528 and similar.
Moved the object max Z against build volume Z to Print::validate().
Updated layer_height_profile_from_ranges() to compress the resulting
ranges.
Separate Alerts into new print object step so that not warnings are thrown for autopaint.
finally fix -1 access int SupportSpotGenerator bridge detection
with canceled / invalidated states.
Print / PrintObject infrastructure was extended with a cleanup()
callback, which may check for the new State::Canceled / State::Invalid
states of a particular milestone and turn it to State::Fresh
while releasing data of that particular milestone which is no more valid.
Also fixed a bug in 31fbfa56de
where the PrintObject shared data invalidation condition was flipped.
expansion, added filling in of narrow regions between solid infills
(for example created by propagating shell from the side and from
the top at the same time).
1) Flipped the order of "discover_vertical_shells" and "process_external_surfaces",
now the external surfaces are expanded after "discover_vertical_shells"
aka "ensure vertical wall thickness" is solved.
2) Reworked LayerRegion::process_external_surfaces() to only expand into
"ensure vertical wall thickness" regions, also the expansion is done
in small steps to avoid overflowing into neighbor regions.
also:
Utility functions reserve_more(), reserve_power_of_2(), reserve_more_power_of_2()
Various SurfaceCollecion::filter_xxx() modified to accept an initializer list of surface types.
New bridges detector refactored to accept overhang boundaries.
BoundingBoxWrapper was moved from RetractCrossingPerimeters to AABBTreeIndirect.
* import updates from curling avoidance branch
* fix compilation issues
* Refactoring FDM support spots generator to use the new Z-graph built during slicing
* fix local issues bugs
* fix bugs, add new filter for too short extrusions
* fix bugs with nonexistent weakest area
* Use links of Z graph after fix, format the code
* remove unnecesary includes
New step - estimation of curling on both the model and the support extrusions.
Improvements in curled filament estimation algortihm
Implementation of Jump Point Search algorithm
Use of JPS algorithm to avoid curled extrusions during travel moves in Gcode export
Implementation of extra perimeters on steep overhangs/flat unsupported parts
Also contains:
Principal components computation over polygon area
New fast bridge direction estimation which minimizes amount of unanchored bridge endpoints
into a graph with links to the layer above / below.
In addition:
Members of LayerRegion were made private, public interface const only.
this->m_xxx replaced with just m_xxx
SurfacesPtr was made a vector of const pointers.
https://github.com/tcbrindle/span
Replacing a homebrew const pointer wrapper const correctness helper
with the C++20 like span library.
One day when we switch to C++20 we will just use the C++20 spans instead.
1) Reworked the merging code to use an AABB tree for better locality.
The old code sorted lexicographically, the new code splits bounding
boxes by the longest axis.
2) Refactored to a functional style with better const correctness.
3) Reduced memory allocation pressure by replacing std::set with
vectors, in place merging etc.