diff --git a/resources/ui_layout/print.ui b/resources/ui_layout/print.ui index 971c1d845..3ba018d23 100644 --- a/resources/ui_layout/print.ui +++ b/resources/ui_layout/print.ui @@ -159,6 +159,7 @@ group:title_width$19:Ironing post-process (This will go on top of infills and pe line:Tuning ironing setting:label_width$9:width$5:ironing_flowrate setting:label_width$26:width$5:ironing_spacing + setting:label_width$26:width$5:ironing_angle end_line page:Skirt & Brim:skirt+brim diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 8806fe203..ba4a8c638 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -584,7 +584,7 @@ void Layer::make_ironing() ironing_params.line_spacing = config.ironing_spacing; ironing_params.height = default_layer_height * 0.01 * config.ironing_flowrate; ironing_params.speed = config.ironing_speed; - ironing_params.angle = config.fill_angle * M_PI / 180.; + ironing_params.angle = config.ironing_angle <0 ? config.fill_angle * M_PI / 180. : config.ironing_angle * M_PI / 180.; ironing_params.layerm = layerm; by_extruder.emplace_back(ironing_params); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index a30786fdc..c968615ae 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -479,6 +479,7 @@ const std::vector& Preset::print_options() "ironing_flowrate", "ironing_speed", "ironing_spacing", + "ironing_angle", "fill_angle", "fill_angle_increment", "bridge_angle", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e689d665a..9aecbe507 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2160,6 +2160,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("ironing_angle", coFloat); + def->label = L("Ironing angle"); + def->category = OptionCategory::ironing; + def->tooltip = L("Ironing angle. if negative, it will use the fill angle."); + def->sidetext = L("°"); + def->min = -1; + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloat(-1)); + def = this->add("ironing_type", coEnum); def->label = L("Ironing Type"); def->category = OptionCategory::ironing; diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 6ed08fec3..06ac8398e 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -778,6 +778,7 @@ public: ConfigOptionBool infill_first; // Ironing options ConfigOptionBool ironing; + ConfigOptionFloat ironing_angle; ConfigOptionEnum ironing_type; ConfigOptionPercent ironing_flowrate; ConfigOptionFloat ironing_spacing; @@ -887,6 +888,7 @@ protected: OPT_PTR(infill_dense_algo); OPT_PTR(infill_first); OPT_PTR(ironing); + OPT_PTR(ironing_angle); OPT_PTR(ironing_type); OPT_PTR(ironing_flowrate); OPT_PTR(ironing_spacing); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 366d12137..c15efc137 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -453,7 +453,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig* config) toggle_field("support_material_speed", have_support_material || have_brim || have_skirt); bool has_ironing = config->opt_bool("ironing"); - for (auto el : { "ironing_type", "ironing_flowrate", "ironing_spacing", "ironing_speed" }) + for (auto el : { "ironing_type", "ironing_flowrate", "ironing_spacing", "ironing_angle", "ironing_speed" }) toggle_field(el, has_ironing); bool have_sequential_printing = config->opt_bool("complete_objects");