Full re-write of spiral vase (#3091)

* Practically full re-write of spiral vase
- Adds transition out to prevent sharp edge at the top of spiral vase.
- Adds XY interpolation
- Adds option to turn XY interpolation on/off

* - Increasing E to 5 decimal digits (I observed uneven flow with less than that)
- Excluding all travel moves (I saw a bug where somehow we ended up with travel moves within the print so excluding all travel moves)

* - max_xy_smoothing is now configurable, default is 200% of nozzle_diameter
- fixed no-op travel moves in the middle of spiral that now show up as defects when Smooth Spiral is enabled!

* - Avoiding namespace pollution
- Fixing dist_XY == 0 bug

---------

Co-authored-by: Andrew Boktor <aboktor@microsoft.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
andrewboktor 2023-12-16 21:48:21 -08:00 committed by GitHub
parent 995ed049cb
commit 9acd550a9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 181 additions and 28 deletions

View file

@ -3436,6 +3436,25 @@ def = this->add("filament_loading_speed", coFloats);
def->mode = comSimple;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("spiral_mode_smooth", coBool);
def->label = L("Smooth Spiral");
def->tooltip = L("Smooth Spiral smoothes out X and Y moves as well"
"resulting in no visible seam at all, even in the XY directions on walls that are not vertical");
def->mode = comSimple;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("spiral_mode_max_xy_smoothing", coFloatOrPercent);
def->label = L("Max XY Smoothing");
def->tooltip = L("Maximum distance to move points in XY to try to achieve a smooth spiral"
"If expressed as a %, it will be computed over nozzle diameter");
def->sidetext = L("mm or %");
def->ratio_over = "nozzle_diameter";
def->min = 0;
def->max = 1000;
def->max_literal = 10;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloatOrPercent(200, true));
def = this->add("timelapse_type", coEnum);
def->label = L("Timelapse");
def->tooltip = L("If smooth or traditional mode is selected, a timelapse video will be generated for each print. "