From 1c22799956275a692ac5468d82e72241b03ca15b Mon Sep 17 00:00:00 2001 From: igiannakas Date: Wed, 5 Mar 2025 17:18:00 +0000 Subject: [PATCH] One wall draft shield options refactor --- src/libslic3r/GCode.cpp | 5 +++-- src/libslic3r/PrintConfig.cpp | 4 ++-- src/slic3r/GUI/ConfigManipulation.cpp | 5 +++-- src/slic3r/GUI/Tab.cpp | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 5ef59946b60..c5e9b3d8ac6 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3541,9 +3541,10 @@ std::string GCode::generate_skirt(const Print &print, // Decide where to start looping: // - If it’s the first layer or if we do NOT want a single-wall draft shield, // start from loops.first (all loops). - // - Otherwise, if one_wall_draft_shield == true (and not the first layer), + // - Otherwise, if one_wall_draft_shield == true and draft_shield == true (and not the first layer), // start from loops.second - 1 (just one loop). - bool one_wall_draft_shield = print.m_config.one_wall_draft_shield; + bool one_wall_draft_shield = print.m_config.one_wall_draft_shield && + (print.m_config.draft_shield == dsEnabled); const size_t start_idx = (first_layer || !one_wall_draft_shield) ? loops.first : (loops.second - 1); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 344a9587302..c6f942c3994 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -4290,8 +4290,8 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionInt(1)); def = this->add("one_wall_draft_shield", coBool); - def->label = L("One wall skirt after first layer"); - def->tooltip = L("Limits the skirt loops to one wall after the first skirt layer. This is useful, on occasion, to conserve filament when using a draft shield."); + def->label = L("One wall draft shield"); + def->tooltip = L("Limits the draft shield loops to one wall after the first layer. This is useful, on occasion, to conserve filament but may cause the draft shield to warp / crack."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 163a53baddc..8fd87fd4c46 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -565,8 +565,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_skirt = config->opt_int("skirt_loops") > 0; toggle_field("skirt_height", have_skirt && config->opt_enum("draft_shield") != dsEnabled); - for (auto el : {"skirt_type", "skirt_distance", "skirt_start_angle", "draft_shield"}) - toggle_field(el, have_skirt); + toggle_line("one_wall_draft_shield", have_skirt && config->opt_enum("draft_shield") == dsEnabled); // ORCA: Display one wall draft shield if draft shield is enabled and skirt enabled + for (auto el : {"skirt_type","min_skirt_length", "skirt_distance", "skirt_start_angle","skirt_height","skirt_speed", "draft_shield", "one_wall_draft_shield"}) + toggle_field(el, have_skirt); bool have_brim = (config->opt_enum("brim_type") != btNoBrim); toggle_field("brim_object_gap", have_brim); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8bed8ed70c6..7b4bbc9ce69 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2308,9 +2308,9 @@ page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only v optgroup->append_single_option_line("skirt_distance"); optgroup->append_single_option_line("skirt_start_angle"); optgroup->append_single_option_line("skirt_height"); - optgroup->append_single_option_line("one_wall_draft_shield"); optgroup->append_single_option_line("skirt_speed"); optgroup->append_single_option_line("draft_shield"); + optgroup->append_single_option_line("one_wall_draft_shield"); optgroup = page->new_optgroup(L("Brim"), L"param_adhension"); optgroup->append_single_option_line("brim_type", "auto-brim");