* Change direction for perimeter extrusion at odd layers.
Initial test code based on supermerill/SuperSlicer@87245ae3c1
* Perimeters for both contours and holes can have alternating direction, to support overhangs on both side.
Also fixes wipe on loop.
* Only reverse order if the loops have steep overhang
* Support a special case that treat every layer as steep overhang
* Add options
* Disable overhang reverse if vase mode is enabled
* Allow extrusion reversal and skip overhang detection if fuzzy skin
---------
Co-authored-by: supermerill <merill@free.fr>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Initial port of the new ensure vertical thickness algorithm from PrusaSlicer.
Based on prusa3d/PrusaSlicer@1a0d8f5130
* Remove code related to "Detect narrow internal solid infill" as it's handled by the new ensuring code
* Support different internal solid infill pattern
* Ignore removed options
---------
Co-authored-by: Pavel Mikuš <pavel.mikus.mail@seznam.cz>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Remove BambuLab's implementation of solid infill bridging enhancement
, will use Prusa's instead
* Port "Extend sparse infill" from Prusa
* Improve anchoring by shifting the lines half-spacing
* Add missing fill patterns
* Improve anchoring by keeping fine details
* Make sure the opposite directions do not cancel each other
---------
Co-authored-by: Pavel Mikus <pavel.mikus.mail@seznam.cz>
* Organic supports: Added check for variable layer height, with which
Organic supports are not compatible.
Fixes prusa3d/PrusaSlicer#9528 and similar.
Check the object max Z against build volume Z in Print::validate().
Cherry-picked from prusa3d/PrusaSlicer@5b94971
* Fix crash with default tree support
* Show "support_critical_regions_only" only when using auto normal tree supports (#2195)
* Fix organic tree check
---------
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
Follow-up of 6be84d529d740c44c1e9bf533e70e167b3442063 - Fixed processing of spiral vase mode in GCodeProcessor::process_G1
Co-authored-by: enricoturri1966 <enricoturri@seznam.cz>
* Initial port of organic tree support from PrusaSlicer
* Port missing Organic support parameters from PrusaSlicer
* Update parameter naming
* Reorganize the `raft_first_layer_expansion` and `raft_first_layer_density` parameters as they are not only used by rafts
* Reset support style only in simple mode
* Sync latest update from PrusaSlicer & copyrights
* Fix organic tree support crash with invalid parameters
---------
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
* First working brim ear impl, ported from SuperSlicer
* Make brim ears configurable
* Generate ears only if ear size > 0
* Fix `Polygon::convex_points` as well as brim ear max angle
* Fix another error in `Polygon::convex_points` and `Polygon::concave_points`
* Apply brim ears to inner brims as well
* tweak hide and disable condition a bit
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* First working conical overhang impl
* Add settings for Make overhang printable
* Added an Advanced setting to the Quality menu for Make overhang printable
* Allow toggling the feature and adjusting the angle threshold
* Retain recesses in the bottom of the model when "Make Overhangs Printable" is turned on
* Add settings for Make overhang printable hole size
* Allow disabling conical overhang per modifier
* Should check upper layer instead
* Skip unnecessary layers
* Apply conical overhang before any size compensation
which fixs the `lslices` not being updated issue and also the elephant foot compensation
* 1. Fix an issue that changing make_overhang_printable related parameters won't clear caches properly.
2. Tweak the logic of make_overhang_printable parameter so that it works for per region/object/print level. Remove make_overhang_printable_disable parameter.
* Change default make_overhang_printable_angle to 55
* One more missing commit
* 1. Skip checking default_region_config()->make_overhang_printable
2. Handle make_overhang_printable_angle and make_overhang_printable_hole_size value change
---------
Co-authored-by: David Bern <odie5533@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Port single wall on top surface from classic wall generator to Arachne
* Move the surface split code into a separate function to be shared between classic and Arachne. This also adds bridge detection to Arachne as well.
* Remove unwanted infills
* Fix insets calculating
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>