diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 9c6da1ad02..2a62843ddb 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -685,7 +685,7 @@ static std::vector s_Preset_print_options { "initial_layer_infill_speed", "only_one_wall_top", "only_one_wall_first_layer", "timelapse_type", //SoftFever - "top_solid_infill_flow_ratio" + "top_solid_infill_flow_ratio","bottom_solid_infill_flow_ratio" }; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 72221f6275..d26d7ceb49 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -649,6 +649,16 @@ void PrintConfigDef::init_fff_params() def->max = 2; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(1)); + + def = this->add("bottom_solid_infill_flow_ratio", coFloat); + def->label = L("Bottom surface flow ratio"); + def->category = L("Advanced"); + def->tooltip = L("This factor affects the amount of material for bottom solid infill. "); + def->min = 0; + def->max = 2; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(1)); + def = this->add("only_one_wall_top", coBool); def->label = L("Only one wall on top surfaces"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index e556d6511d..1371b21aff 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -655,6 +655,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, bridge_speed)) ((ConfigOptionEnum, top_surface_pattern)) ((ConfigOptionFloat, top_solid_infill_flow_ratio)) + ((ConfigOptionFloat, bottom_solid_infill_flow_ratio)) ((ConfigOptionEnum, bottom_surface_pattern)) ((ConfigOptionFloat, outer_wall_line_width)) ((ConfigOptionFloat, outer_wall_speed)) diff --git a/src/libslic3r/PrintRegion.cpp b/src/libslic3r/PrintRegion.cpp index 7ed45fb444..2dfc5826ae 100644 --- a/src/libslic3r/PrintRegion.cpp +++ b/src/libslic3r/PrintRegion.cpp @@ -25,8 +25,12 @@ Flow PrintRegion::flow(const PrintObject &object, FlowRole role, double layer_he double flow_ratio = 1.0; // Get extrusion width from configuration. // (might be an absolute value, or a percent value, or zero for auto) - if (first_layer && print_config.initial_layer_line_width.value > 0) { - config_width = print_config.initial_layer_line_width; + if (first_layer) { + if(role != frExternalPerimeter) + flow_ratio = m_config.bottom_solid_infill_flow_ratio; + if(print_config.initial_layer_line_width.value > 0) { + config_width = print_config.initial_layer_line_width; + } } else if (role == frExternalPerimeter) { config_width = m_config.outer_wall_line_width; } else if (role == frPerimeter) { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 4bd10b75da..d989891f08 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1783,6 +1783,7 @@ void TabPrint::build() optgroup->append_single_option_line("wall_infill_order"); optgroup->append_single_option_line("bridge_flow"); 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"); optgroup->append_single_option_line("only_one_wall_first_layer"); optgroup->append_single_option_line("detect_overhang_wall");