SPE-2542: Add first_layer_infill_speed

This commit is contained in:
Martin Šach 2025-01-23 17:26:07 +01:00 committed by Lukas Matena
parent 5430596a7e
commit 9490ae242f
6 changed files with 24 additions and 3 deletions

View File

@ -3408,8 +3408,14 @@ std::string GCodeGenerator::_extrude(
}
if (m_volumetric_speed != 0. && speed == 0)
speed = m_volumetric_speed / path_attr.mm3_per_mm;
if (this->on_first_layer())
speed = m_config.get_abs_value("first_layer_speed", speed);
if (this->on_first_layer()) {
const double first_layer_infill_speed{m_config.get_abs_value("first_layer_infill_speed", speed)};
if (path_attr.role == ExtrusionRole::SolidInfill && first_layer_infill_speed > 0) {
speed = first_layer_infill_speed;
} else {
speed = m_config.get_abs_value("first_layer_speed", speed);
}
}
else if (this->object_layer_over_raft())
speed = m_config.get_abs_value("first_layer_speed_over_raft", speed);

View File

@ -485,7 +485,7 @@ static std::vector<std::string> s_Preset_print_options {
"perimeter_speed", "small_perimeter_speed", "external_perimeter_speed", "infill_speed", "solid_infill_speed",
"enable_dynamic_overhang_speeds", "overhang_speed_0", "overhang_speed_1", "overhang_speed_2", "overhang_speed_3",
"top_solid_infill_speed", "support_material_speed", "support_material_xy_spacing", "support_material_interface_speed",
"bridge_speed", "over_bridge_speed", "gap_fill_speed", "gap_fill_enabled", "travel_speed", "travel_speed_z", "first_layer_speed", "first_layer_speed_over_raft", "perimeter_acceleration", "infill_acceleration",
"bridge_speed", "over_bridge_speed", "gap_fill_speed", "gap_fill_enabled", "travel_speed", "travel_speed_z", "first_layer_speed", "first_layer_infill_speed", "first_layer_speed_over_raft", "perimeter_acceleration", "infill_acceleration",
"external_perimeter_acceleration", "top_solid_infill_acceleration", "solid_infill_acceleration", "travel_acceleration", "wipe_tower_acceleration",
"bridge_acceleration", "first_layer_acceleration", "first_layer_acceleration_over_raft", "default_acceleration", "skirts", "skirt_distance", "skirt_height", "draft_shield",
"min_skirt_length", "brim_width", "brim_separation", "brim_type", "support_material", "support_material_auto", "support_material_threshold", "support_material_enforce_layers",

View File

@ -1630,6 +1630,18 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloatOrPercent(30, false));
def = this->add("first_layer_infill_speed", coFloatOrPercent);
def->label = L("First layer solid infill speed");
def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied to the solid infill print moves "
"of the first layer. If expressed as a percentage "
"(for example: 40%) it will be a percantage of the solid infill speed "
"(for example: 40% of the solid infill speed). "
"Note that 0 means that the \"First layer speed\" value will be used.");
def->sidetext = L("mm/s or %");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloatOrPercent(0, false));
def = this->add("first_layer_speed_over_raft", coFloatOrPercent);
def->label = L("Speed of object first layer over raft interface");
def->tooltip = L("If expressed as absolute value in mm/s, this speed will be applied to all the print moves "

View File

@ -937,6 +937,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionFloatOrPercent, first_layer_extrusion_width))
((ConfigOptionFloatOrPercent, first_layer_height))
((ConfigOptionFloatOrPercent, first_layer_speed))
((ConfigOptionFloatOrPercent, first_layer_infill_speed))
((ConfigOptionInts, first_layer_temperature))
((ConfigOptionIntsNullable, idle_temperature))
((ConfigOptionInts, full_fan_speed_layer))

View File

@ -920,6 +920,7 @@ bool PrintObject::invalidate_state_by_config_options(
|| opt_key == "external_perimeter_speed"
|| opt_key == "small_perimeter_speed"
|| opt_key == "solid_infill_speed"
|| opt_key == "first_layer_infill_speed"
|| opt_key == "top_solid_infill_speed") {
invalidated |= m_print->invalidate_step(psGCodeExport);
} else if (

View File

@ -1602,6 +1602,7 @@ void TabPrint::build()
optgroup = page->new_optgroup(L("Modifiers"));
optgroup->append_single_option_line("first_layer_speed");
optgroup->append_single_option_line("first_layer_infill_speed");
optgroup->append_single_option_line("first_layer_speed_over_raft");
optgroup = page->new_optgroup(L("Acceleration control (advanced)"));