Set Ironing angle setting to be a relative degree offset from top surface infill direction (#10841)

* Change ironing angle setting to be an offset angle from the top surface angle rather offset from the layer 0 angle that changes on each layer.

* Change Ironing angle offset range from [-1,359] to [0,359].
-1 is redundant because it is the same behavior as 0 offset.

* Change ironing_angle new default value to 0.

* Update existing print profiles' hardcoded ironing_angles from -1 to 0 to reflect new default value.

* Add migration for old -1 ironing_angle settings. Remove logic for -1 ironing_angle.

* Add u8 prefix for degree symbol string

* Use solid_infill_direction instead of infill_direction for top surface infill direction. Use calculate_infill_rotation_angle to add offset to solid_infill_rotate_template if used.

* Update quality settings wiki for Ironing

* Set f->is_using_template_angle when making ironing filler objects

* Update quality_settings_ironing link from #angle to #angle-offset

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
This commit is contained in:
Anson Liu 2025-10-19 18:01:53 -07:00 committed by GitHub
parent d786aec255
commit fcb640bee1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 76 additions and 83 deletions

View file

@ -3497,14 +3497,14 @@ void PrintConfigDef::init_fff_params()
def->set_default_value(new ConfigOptionFloat(20));
def = this->add("ironing_angle", coFloat);
def->label = L("Ironing angle");
def->label = L("Ironing angle offset");
def->category = L("Quality");
def->tooltip = L("The angle ironing is done at. A negative number disables this function and uses the default method.");
def->tooltip = L("The angle of ironing lines offset from the top surface.");
def->sidetext = u8"°"; // degrees, don't need translation
def->min = -1;
def->min = 0;
def->max = 359;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(-1));
def->set_default_value(new ConfigOptionFloat(0));
def = this->add("layer_change_gcode", coString);
def->label = L("Layer change G-code");
@ -6863,6 +6863,8 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
opt_key = "bottom_solid_infill_flow_ratio";
} else if (opt_key == "ironing_direction") {
opt_key = "ironing_angle";
} else if (opt_key == "ironing_angle" && boost::starts_with(value, "-")) {
value = "0";
} else if (opt_key == "counterbole_hole_bridging") {
opt_key = "counterbore_hole_bridging";
} else if (opt_key == "draft_shield" && value == "limited") {