diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 98377dbc4d..0b3ec8a643 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3689,7 +3689,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } // calculate extrusion length per distance unit - double e_per_mm = m_writer.extruder()->e_per_mm3() * path.mm3_per_mm; + double e_per_mm = m_writer.extruder()->e_per_mm3() * path.mm3_per_mm * this->config().print_flow_ratio.get_abs_value(1); double min_speed = double(m_config.slow_down_min_speed.get_at(m_writer.extruder()->id())); // set speed diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 243f6326fa..63e7ffe027 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -748,9 +748,12 @@ static std::vector s_Preset_print_options { "timelapse_type", "internal_bridge_support_thickness", "wall_generator", "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle", "wall_distribution_count", "min_feature_size", "min_bead_width", + // SoftFever "small_perimeter_speed", "small_perimeter_threshold","bridge_angle", "filter_out_gap_fill", "travel_acceleration","inner_wall_acceleration", "default_jerk", "outer_wall_jerk", "inner_wall_jerk", "top_surface_jerk", "initial_layer_jerk","travel_jerk", - "top_solid_infill_flow_ratio","bottom_solid_infill_flow_ratio","only_one_wall_first_layer" + "top_solid_infill_flow_ratio","bottom_solid_infill_flow_ratio","only_one_wall_first_layer", + "print_flow_ratio" + }; static std::vector s_Preset_filament_options { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index af38e58f79..d8b77893d9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1149,6 +1149,17 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 1. }); + def = this->add("print_flow_ratio", coPercent); + def->label = L("Flow ratio"); + def->tooltip = L("The material may have volumetric change after switching between molten state and crystalline state. " + "This setting changes all extrusion flow of this filament in gcode proportionally. " + "Recommended value range is between 0.95 and 1.05. " + "Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow"); + def->sidetext = L("%"); + def->mode = comAdvanced; + def->min = 2; + def->set_default_value(new ConfigOptionPercent(100)); + def = this->add("enable_pressure_advance", coBools); def->label = L("Enable pressure advance"); def->tooltip = L("Enable pressure advance, auto calibration result will be overwriten once enabled."); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 82a1964693..dfc4d15f4d 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -742,6 +742,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, overhang_4_4_speed)) ((ConfigOptionBool, only_one_wall_top)) ((ConfigOptionBool, only_one_wall_first_layer)) + //SoftFever + ((ConfigOptionPercent, print_flow_ratio)) ) PRINT_CONFIG_CLASS_DEFINE( diff --git a/src/slic3r/GUI/ParamsPanel.cpp b/src/slic3r/GUI/ParamsPanel.cpp index caf4d01dc0..7a6588719a 100644 --- a/src/slic3r/GUI/ParamsPanel.cpp +++ b/src/slic3r/GUI/ParamsPanel.cpp @@ -598,6 +598,14 @@ void ParamsPanel::set_active_tab(wxPanel* tab) wxString title = cur_tab->type() == Preset::TYPE_FILAMENT ? _L("Filament settings") : _L("Printer settings"); dialog->SetTitle(title); } + if (cur_tab == m_tab_print) { + if (cur_tab) + cur_tab->toggle_line("print_flow_ratio", false); + } + else { + if (cur_tab) + cur_tab->toggle_line("print_flow_ratio", false); + } } bool ParamsPanel::is_active_and_shown_tab(wxPanel* tab) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 59457a6c08..966ac31ff1 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1801,6 +1801,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); 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("top_solid_infill_flow_ratio"); optgroup->append_single_option_line("bottom_solid_infill_flow_ratio");