Set flowrate per object

This commit is contained in:
SoftFever 2022-12-25 23:29:48 +08:00
parent fb0b7f7b54
commit 7e1a2840e5
6 changed files with 27 additions and 2 deletions

View file

@ -3689,7 +3689,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
} }
// calculate extrusion length per distance unit // 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())); double min_speed = double(m_config.slow_down_min_speed.get_at(m_writer.extruder()->id()));
// set speed // set speed

View file

@ -748,9 +748,12 @@ static std::vector<std::string> s_Preset_print_options {
"timelapse_type", "internal_bridge_support_thickness", "timelapse_type", "internal_bridge_support_thickness",
"wall_generator", "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle", "wall_generator", "wall_transition_length", "wall_transition_filter_deviation", "wall_transition_angle",
"wall_distribution_count", "min_feature_size", "min_bead_width", "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", "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", "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<std::string> s_Preset_filament_options { static std::vector<std::string> s_Preset_filament_options {

View file

@ -1149,6 +1149,17 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced; def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloats { 1. }); 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 = this->add("enable_pressure_advance", coBools);
def->label = L("Enable pressure advance"); def->label = L("Enable pressure advance");
def->tooltip = L("Enable pressure advance, auto calibration result will be overwriten once enabled."); def->tooltip = L("Enable pressure advance, auto calibration result will be overwriten once enabled.");

View file

@ -742,6 +742,8 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionFloat, overhang_4_4_speed)) ((ConfigOptionFloat, overhang_4_4_speed))
((ConfigOptionBool, only_one_wall_top)) ((ConfigOptionBool, only_one_wall_top))
((ConfigOptionBool, only_one_wall_first_layer)) ((ConfigOptionBool, only_one_wall_first_layer))
//SoftFever
((ConfigOptionPercent, print_flow_ratio))
) )
PRINT_CONFIG_CLASS_DEFINE( PRINT_CONFIG_CLASS_DEFINE(

View file

@ -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"); wxString title = cur_tab->type() == Preset::TYPE_FILAMENT ? _L("Filament settings") : _L("Printer settings");
dialog->SetTitle(title); 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) bool ParamsPanel::is_active_and_shown_tab(wxPanel* tab)

View file

@ -1801,6 +1801,7 @@ void TabPrint::build()
optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
optgroup->append_single_option_line("wall_infill_order"); 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("bridge_flow");
optgroup->append_single_option_line("top_solid_infill_flow_ratio"); 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("bottom_solid_infill_flow_ratio");