diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 9c646585f7..5b4f7f218c 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -732,7 +732,7 @@ void Layer::make_ironing() ironing_params.line_spacing = config.ironing_spacing; ironing_params.height = default_layer_height * 0.01 * config.ironing_flow; ironing_params.speed = config.ironing_speed; - ironing_params.angle = config.infill_direction * M_PI / 180.; + ironing_params.angle = (config.ironing_angle >= 0 ? config.ironing_angle : config.infill_direction) * M_PI / 180.; ironing_params.pattern = config.ironing_pattern; ironing_params.layerm = layerm; by_extruder.emplace_back(ironing_params); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 1a1f75008d..6fc81cb306 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -722,7 +722,7 @@ static std::vector s_Preset_print_options { "seam_position", "staggered_inner_seams", "wall_infill_order", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", "infill_direction", "minimum_sparse_infill_area", "reduce_infill_retraction","internal_solid_infill_pattern", - "ironing_type", "ironing_pattern", "ironing_flow", "ironing_speed", "ironing_spacing", + "ironing_type", "ironing_pattern", "ironing_flow", "ironing_speed", "ironing_spacing", "ironing_angle", "max_travel_detour_distance", "fuzzy_skin", "fuzzy_skin_thickness", "fuzzy_skin_point_distance", "max_volumetric_extrusion_rate_slope", "max_volumetric_extrusion_rate_slope_segment_length", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index b802400550..83578c5762 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2375,6 +2375,16 @@ def = this->add("filament_loading_speed", coFloats); def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(20)); + def = this->add("ironing_angle", coFloat); + def->label = L("Ironing angle"); + 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->sidetext = L("°"); + def->min = -1; + def->max = 359; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(-1)); + def = this->add("layer_change_gcode", coString); def->label = L("Layer change G-code"); def->tooltip = L("This gcode part is inserted at every layer change after lift z"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 41de30a2a7..7e1d5106cc 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -775,6 +775,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionPercent, ironing_flow)) ((ConfigOptionFloat, ironing_spacing)) ((ConfigOptionFloat, ironing_speed)) + ((ConfigOptionFloat, ironing_angle)) // Detect bridging perimeters ((ConfigOptionBool, detect_overhang_wall)) ((ConfigOptionInt, wall_filament)) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 9b1371a73c..073e2cc4b9 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -654,7 +654,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field(el, have_support_material && !(support_is_normal_tree && !have_raft)); bool has_ironing = (config->opt_enum("ironing_type") != IroningType::NoIroning); - for (auto el : { "ironing_flow", "ironing_spacing", "ironing_speed" }) + for (auto el : { "ironing_flow", "ironing_spacing", "ironing_speed", "ironing_angle" }) toggle_line(el, has_ironing); // bool have_sequential_printing = (config->opt_enum("print_sequence") == PrintSequence::ByObject); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index cb1eb6a56a..546f5124f0 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1877,6 +1877,7 @@ void TabPrint::build() optgroup->append_single_option_line("ironing_speed"); optgroup->append_single_option_line("ironing_flow"); optgroup->append_single_option_line("ironing_spacing"); + optgroup->append_single_option_line("ironing_angle"); optgroup = page->new_optgroup(L("Wall generator"), L"param_wall"); optgroup->append_single_option_line("wall_generator");