From f2f2ede5d5affe24576f9966e6db6ea31ae28101 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 2 Dec 2023 01:27:43 +0800 Subject: [PATCH] thick internal bridges (#2954) --- src/libslic3r/Fill/Fill.cpp | 5 +++-- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 9 +++++++++ src/libslic3r/PrintConfig.hpp | 2 ++ src/slic3r/GUI/Tab.cpp | 3 ++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 71de24f436..20171fa9d5 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -485,9 +485,10 @@ std::vector group_fills(const Layer &layer) // Calculate the actual flow we'll be using for this infill. params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern); + const bool is_thick_bridge = surface.is_bridge() && (surface.is_internal_bridge() ? object_config.thick_internal_bridges : object_config.thick_bridges); params.flow = params.bridge ? - //BBS: always enable thick bridge for internal bridge - layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) : + //Orca: enable thick bridge based on config + layerm.bridging_flow(extrusion_role, is_thick_bridge) : layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness); // Calculate flow spacing for infill pattern generation. diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index ed778e2f4c..f217215945 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -744,7 +744,7 @@ static std::vector s_Preset_print_options { "independent_support_layer_height", "support_angle", "support_interface_top_layers", "support_interface_bottom_layers", "support_interface_pattern", "support_interface_spacing", "support_interface_loop_pattern", - "support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "max_bridge_length", "print_sequence", "support_remove_small_overhang", + "support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "thick_internal_bridges", "max_bridge_length", "print_sequence", "support_remove_small_overhang", "filename_format", "wall_filament", "support_bottom_z_distance", "sparse_infill_filament", "solid_infill_filament", "support_filament", "support_interface_filament", "ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ed8d283075..0c202b588f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1165,6 +1165,15 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("thick_internal_bridges", coBool); + def->label = L("Thick internal bridges"); + def->category = L("Quality"); + def->tooltip = L("If enabled, thick internal bridges will be used. It's usually recommended to have this feature turned on. However, " + "consider turning it off if you are using large nozzles."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(true)); + + def = this->add("max_bridge_length", coFloat); def->label = L("Max bridge length"); def->category = L("Support"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 653bdfb002..06af3ac887 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -725,7 +725,9 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionEnum, support_style)) // BBS //((ConfigOptionBool, independent_support_layer_height)) + // Orca internal thick bridge ((ConfigOptionBool, thick_bridges)) + ((ConfigOptionBool, thick_internal_bridges)) // Overhang angle threshold. ((ConfigOptionInt, support_threshold_angle)) ((ConfigOptionFloat, support_object_xy_distance)) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index cb8be2843b..a6137216fc 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1896,9 +1896,10 @@ void TabPrint::build() optgroup->append_single_option_line("wall_infill_order"); optgroup->append_single_option_line("print_flow_ratio"); optgroup->append_single_option_line("bridge_flow"); - optgroup->append_single_option_line("internal_bridge_flow"); + optgroup->append_single_option_line("internal_bridge_flow"); optgroup->append_single_option_line("bridge_density"); optgroup->append_single_option_line("thick_bridges"); + optgroup->append_single_option_line("thick_internal_bridges"); optgroup->append_single_option_line("top_solid_infill_flow_ratio"); optgroup->append_single_option_line("bottom_solid_infill_flow_ratio"); optgroup->append_single_option_line("only_one_wall_top");