* Introduce option to control number of skirt walls after first layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* One wall draft shield options refactor
* Merge remote-tracking branch 'upstream/main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Renamed to single loop draft shield
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Merge branch 'main' into Introduce-option-to-control-number-of-walls-on-skirt-after-first-layer
* Check for air filtration support on the printer level before emitting air filtration gcode command
* Merge branch 'main' into Check-air-filtration-support-at-the-printer-level-too
* Removed expand factor from IOI as it was incorrectly causing perimeter failing to observe IOI reordering.
* Merge branch 'main' into Bug-Fix-IOI-re-ordering-failing-to-reorder-in-certain-edge-cases
According to https://eigen.tuxfamily.org/dox/TopicPitfalls.html one
should just avoid using `auto` as the type of an Eigen expression.
This PR fixes most of them I could found in the project. There might be
cases that I missed, and I might update those later if I noticed.
This should prevent issues like #7741 and hopefully fix some mysterious
crashes happened inside Eigen calls.
and modify the overlap of wall and infill for wipe tower jira:none
cherry picked from commit
bambulab/BambuStudio@4db196b11f
Thanks BambuLab!
- Optimize the starting position of the printing wiper tower after
material change, the initial print on the wipe tower sometimes had
under-extrusion issues, and all layers of wipe tower have the same
starting position, increasing the risk of collision. This optimization
distributes the initial extrusion over four corners, reducing the
accumulation of defects.
- Reducing the rivet length between the wipe tower's outer wall and
infill to 0mm minimizes the risk of collision when switching between
printing infill and outer walls.

# Description
Fixed two regressions:
1. Total layer number was missing for BBL printers
2. M73 remaining info was wrong when ARC fitting is enabled.
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
* Added Elegoolink connection
* Set Elegoo CC default bed to btPTE
* Friendly output of some error codes of PrintHost
* feat: Add elegoo centauri carbon profile
* fix: Fix the issue where the bed type in the printer configuration does not match the bed temperature settings when multiple bed types are not supported.
* feat: Modify the elegoo process parameters to disable slowdown_for_curled_perimeters.
* feat: Update comment to clarify plate visibility for multi bed support, BBL printer, and selected bed type.
* fix: Optimize ElegooLink upload; The code is clearer than before.
* feat: Format the ElegooPrintHostSendDialog code.
* fix: Remove the unnecessary instantiation attribute in the Elegoo process.
* fix: Flatpak compilation failed
---------
Co-authored-by: anjis <anjis.zhou@elegoo.com>
and modify the overlap of wall and infill for wipe tower
jira:none
Change-Id: I0d1355c718e2bd1efea6d898f793f5869476ab12
(cherry picked from commit 4db196b11f052d6a7a7c7a8aafe0d2b34a7d2d80)
Add minimum flow ratios for spiral vase transitsions
Currently when starting the spiral vase the extrusion rate is ramped
from 0 to 100% on the first layer and from 100% to 0% on the last layer.
In some cases it can lead to underextrusion at the beginning and end of
the spiral.
This change adds minimum flow ratio options for the beginning and the end
of the vase. This means that instead of ramping from 0% to 100% it
instead ramps from for example 20% to 100%.
This issue has been reported in SuperSlicer
https://github.com/supermerill/SuperSlicer/issues/4195
* Additional control over bridges
* Label updates
* Detect and handle layers over external bridges
* Label updates
* To-Do placeholders
* Filter out small external bridges
* Apply safety offset for internal bridge polygon intersections
* code comments
* Increase bridge offsets to 3 perimeters total (1.5 perimeter in each dimension)
* Filter out bridges based on perimeter counts to focus bridge on areas where bridge infill is actually generated in the end.
* Fixing bugs
* Convert tick boxes to drop down menu
* Additional geometry checks for second internal bridge to ensure no small polygons are left over.
* Minor code refactor for clarity
* Further refinements in polygon logic
* Polygon logic refinements pt3
* Further union operations to ensure clean geometry
* Fix compile error
* Clean up constructors
* Only create bridges on stInternalSolid areas, not sparse infill.
* Refactor internal second bridge logic to stand alone parallel for loop to avoid thread deadlocks
* Revert change to only consider stInternalSolid areas for second internal bridge layer.
This resulted in partly unsupported solid infill areas above as the remainder was too narrow to generate sparse infill
* Updated beta statements and tooltip changes
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>