diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 6cae4756a3b..3b9bc6daaa7 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -735,6 +735,12 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime if(paths.empty()) continue; chain_and_reorder_extrusion_paths(paths, &paths.front().first_point()); } else { + if (overhangs_reverse && perimeter_generator.layer_id > perimeter_generator.object_config->raft_layers) { + // Always reverse if detect overhang wall is not enabled + steep_overhang_contour = true; + steep_overhang_hole = true; + } + ExtrusionPath path(role); //BBS. path.polyline = polygon.split_at_first_point(); @@ -1219,6 +1225,12 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p } } else { + if (overhangs_reverse && perimeter_generator.layer_id > perimeter_generator.object_config->raft_layers) { + // Always reverse if detect overhang wall is not enabled + steep_overhang_contour = true; + steep_overhang_hole = true; + } + extrusion_paths_append(paths, *extrusion, role, is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow); } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 33941656dae..5dbf78c0da9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1056,7 +1056,8 @@ void PrintConfigDef::init_fff_params() def->category = L("Quality"); // xgettext:no-c-format, no-boost-format def->tooltip = L("Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width." - "\nValue 0 enables reversal on every even layers regardless."); + "\nValue 0 enables reversal on every even layers regardless." + "\nWhen Detect overhang wall is not enabled, this option is ignored and reversal happens on every even layers regardless."); def->sidetext = L("mm or %"); def->ratio_over = "line_width"; def->min = 0; diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 3f4399d68e3..704fdf0dac1 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -736,8 +736,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool has_detect_overhang_wall = config->opt_bool("detect_overhang_wall"); bool has_overhang_reverse = config->opt_bool("overhang_reverse"); bool force_wall_direction = config->opt_enum("wall_direction") != WallDirection::Auto; - bool allow_overhang_reverse = has_detect_overhang_wall && !has_spiral_vase && !force_wall_direction; + bool allow_overhang_reverse = !has_spiral_vase && !force_wall_direction; toggle_field("overhang_reverse", allow_overhang_reverse); + toggle_field("overhang_reverse_threshold", has_detect_overhang_wall); toggle_line("overhang_reverse_threshold", allow_overhang_reverse && has_overhang_reverse); toggle_line("overhang_reverse_internal_only", allow_overhang_reverse && has_overhang_reverse); bool has_overhang_reverse_internal_only = config->opt_bool("overhang_reverse_internal_only");