The previous implementation during the grouping of perimeters using depth-first searches unnecessarily searched nodes that had no impact on grouping, which significantly increased the search space.
Cherry-picked from prusa3d/PrusaSlicer@86309ba939
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
Especially in cases when the object is composed only of 2 external perimeters and 1 or 2 internal perimeters, the order of perimeters wasn't optimal and differed from the Classic perimeter generator. That caused unnecessary long travels before the external contour was printed.
The ordering of perimeters is slightly inspired by the latest changes in CuraEngine.
Cherry-picked from prusa3d/PrusaSlicer@10875082de
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* Arachne: Fix an arithmetic overflow that causing extra points outside the plate (SoftFever/OrcaSlicer#7321)
* Better way of avoiding overflow, works in Release mode as well
* Fix debug build
* Fix build
Accessing a moved object.
Also this method create an unused "out" variable by removing from the parameter.
I guess It should update the parameter object?
Anyway, seems very wrong
(cherry picked from commit 534792e249da3efb83a62279f532b6690d028592)
Co-authored-by: Merill <merill@free.fr>
PrintObject.cpp references tbb::spin_mutex, thus it needs to include
tbb/spin_mutex. Otherwise compilation fails with:
error: ‘spin_mutex’ is not a member of ‘tbb’
Supersedes #7057
Avoid collisions with previous extrusions in the same layer when moving Z down in an XYZ move.
This happens for example when starting a scarf joint after another perimeter was already printed.
Fixes SoftFever#7191
Co-authored-by: SoftFever <softfeverever@gmail.com>
* pa calib: print flow value and acceleration
Print flow value and acceleration for PA pattern calibration.
This should help keep track during adaptive PA calibration.
* pa pattern: fix legent section too wide in some cases
Rework pa pattern legent generation to correctly estimate
width of the legend section.
Current flow value now has variable length which is a longest of
PA value and the acceleration for a given test.
Few examples:
1. PA value are 4 characters: 0.04
Acceleratioion 3 chars: 400
Flow value will be 4 chars long: 7.98, or 11.3
2. PA: 0.018
Accel: 1000
Flow: 12.35, or 6.345
3. PA: 0.04
Accel: 15000
Flow: 34.34, or 4.567
Rework number-to-string conversion flow to correctly round values at
given precision.
Fixed Clipper library (our own fork of it) when working with Z coordinate:
The Eigen vector type compares all components, while the ClipperLib
own IntPoint type compared x and y only.
Fixed by overriding the ==/!= operators to compare just x and y components
for Eigen types.
Cherry-picked from prusa3d/PrusaSlicer@0202eec4b7
Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
If layer starts with a color change, the full layer time will be much longer, which will trick the slicer to think this layer has enough cooling time.
However the actual filament extrusion time (the real "printing" part) won't necessarily have enough time to cool down, so if we don't do extra slowing down
before starting next layer, the filament could still be soft and lead to worse surface quality.