add "first layer flow" setting, for fuck sake first layer width isn't enough with a cheap printer like an ender3 that can have his bed damaged so easily.

This commit is contained in:
supermerill 2020-03-18 21:01:18 +01:00
parent 1984df6d49
commit 7f4c9c9a5c
7 changed files with 17 additions and 1 deletions

View File

@ -216,6 +216,7 @@ group:Flow
setting:bridge_flow_ratio
setting:over_bridge_flow_ratio
setting:fill_top_flow_ratio
setting:first_layer_flow_ratio
end_line
page:Multiple extruders:funnel

View File

@ -3350,6 +3350,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string &descri
// calculate extrusion length per distance unit
double e_per_mm = m_writer.extruder()->e_per_mm3() * path.mm3_per_mm;
if (this->m_layer_index <= 0) e_per_mm *= this->config().first_layer_flow_ratio.get_abs_value(1);
if (m_writer.extrusion_axis().empty()) e_per_mm = 0;
double path_length = 0.;
{

View File

@ -102,6 +102,7 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
"filament_cost",
"first_layer_acceleration",
"first_layer_bed_temperature",
"first_layer_flow_ratio",
"first_layer_speed",
"first_layer_infill_speed",
"gcode_comments",

View File

@ -1244,7 +1244,16 @@ void PrintConfigDef::init_fff_params()
def->label = L("Top fill");
def->full_label = L("Top fill flow ratio");
def->category = OptionCategory::width;
def->tooltip = L("You can increase this to over-extrude on the top layer if there are not enough plastic to makle a good fill.");
def->tooltip = L("You can increase this to over-extrude on the top layer if there are not enough plastic to make a good fill.");
def->min = 0;
def->mode = comExpert;
def->set_default_value(new ConfigOptionFloatOrPercent(100, true));
def = this->add("first_layer_flow_ratio", coFloatOrPercent);
def->label = L("First layer");
def->full_label = L("First layer flow ratio");
def->category = OptionCategory::width;
def->tooltip = L("You can increase this to over-extrude on the first layer if there are not enough plastic because your bed isn't levelled.");
def->min = 0;
def->mode = comExpert;
def->set_default_value(new ConfigOptionFloatOrPercent(100, true));

View File

@ -1007,6 +1007,7 @@ public:
ConfigOptionFloat first_layer_acceleration;
ConfigOptionInts first_layer_bed_temperature;
ConfigOptionFloatOrPercent first_layer_extrusion_width;
ConfigOptionFloatOrPercent first_layer_flow_ratio;
ConfigOptionFloatOrPercent first_layer_speed;
ConfigOptionFloatOrPercent first_layer_infill_speed;
ConfigOptionInts first_layer_temperature;
@ -1085,6 +1086,7 @@ protected:
OPT_PTR(first_layer_acceleration);
OPT_PTR(first_layer_bed_temperature);
OPT_PTR(first_layer_extrusion_width);
OPT_PTR(first_layer_flow_ratio);
OPT_PTR(first_layer_speed);
OPT_PTR(first_layer_infill_speed);
OPT_PTR(first_layer_temperature);

View File

@ -452,6 +452,7 @@ const std::vector<std::string>& Preset::print_options()
"clip_multipart_objects",
"over_bridge_flow_ratio",
"bridge_overlap",
"first_layer_flow_ratio",
"clip_multipart_objects", "enforce_full_fill_volume", "external_infill_margin", "bridged_infill_margin",
"elefant_foot_compensation", "xy_size_compensation", "hole_size_compensation",
"hole_to_polyhole",

View File

@ -1746,6 +1746,7 @@ void TabPrint::build()
line.append_option(optgroup->get_option("bridge_overlap"));
line.append_option(optgroup->get_option("over_bridge_flow_ratio"));
line.append_option(optgroup->get_option("fill_top_flow_ratio"));
line.append_option(optgroup->get_option("first_layer_flow_ratio"));
optgroup->append_line(line);
page = add_options_page(_(L(toString(OptionCategory::extruders))), "funnel");