diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 982fef0300..7979642d4b 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3808,6 +3808,10 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, acceleration = m_config.outer_wall_acceleration.value; } else if (m_config.top_surface_acceleration.value > 0 && is_top_surface(path.role())) { acceleration = m_config.top_surface_acceleration.value; + } else if (m_config.inner_wall_acceleration.value > 0 && path.role() == erPerimeter) { + acceleration = m_config.inner_wall_acceleration.value; + } else if (m_config.get_abs_value("sparse_infill_acceleration") > 0 && (path.role() == erInternalInfill)) { + acceleration = m_config.get_abs_value("sparse_infill_acceleration"); } else { acceleration = m_config.default_acceleration.value; } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 29d89d4e0c..3ffca940cd 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -729,7 +729,7 @@ static std::vector s_Preset_print_options { "inner_wall_speed", "outer_wall_speed", "sparse_infill_speed", "internal_solid_infill_speed", "top_surface_speed", "support_speed", "support_object_xy_distance", "support_interface_speed", "bridge_speed", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed", "outer_wall_acceleration", - "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", + "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "inner_wall_acceleration", "sparse_infill_acceleration", "accel_to_decel_enable", "accel_to_decel_factor", "skirt_loops", "skirt_distance", "skirt_height", "draft_shield", "brim_width", "brim_object_gap", "brim_type", "enable_support", "support_type", "support_threshold_angle", "enforce_support_layers", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 80dbc68760..deec3d9815 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -158,7 +158,9 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "infill_jerk", "top_surface_jerk", "initial_layer_jerk", - "travel_jerk" + "travel_jerk", + "inner_wall_acceleration", + "sparse_infill_acceleration" }; static std::unordered_set steps_ignore; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5eade30d43..54d424de5c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1403,6 +1403,23 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(500)); + def = this->add("inner_wall_acceleration", coFloat); + def->label = L("Inner wall"); + def->tooltip = L("Acceleration of inner walls. 0 means using normal printing acceleration"); + def->sidetext = L("mm/s²"); + def->min = 0; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(0)); + + def = this->add("sparse_infill_acceleration", coFloatOrPercent); + def->label = L("Sparse infill"); + def->tooltip = L("Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration."); + def->sidetext = L("mm/s² or %"); + def->min = 0; + def->mode = comAdvanced; + def->ratio_over = "default_acceleration"; + def->set_default_value(new ConfigOptionFloatOrPercent(100, true)); + def = this->add("initial_layer_acceleration", coFloat); def->label = L("Initial layer"); def->tooltip = L("Acceleration of initial layer. Using a lower value can improve build plate adhensive"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index bc09115037..ece226c4de 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -892,6 +892,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionEnum,print_sequence)) ((ConfigOptionBools, slow_down_for_layer_cooling)) ((ConfigOptionFloat, default_acceleration)) + ((ConfigOptionFloat, inner_wall_acceleration)) + ((ConfigOptionFloatOrPercent, sparse_infill_acceleration)) ((ConfigOptionInts, close_fan_the_first_x_layers)) ((ConfigOptionEnum, draft_shield)) ((ConfigOptionFloat, extruder_clearance_height_to_rod))//BBs diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index dfe1022a55..e604797334 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -569,7 +569,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_default_acceleration = config->opt_float("default_acceleration") > 0; //BBS - for (auto el : { "initial_layer_acceleration", "outer_wall_acceleration", "top_surface_acceleration" }) + for (auto el : { "initial_layer_acceleration", "outer_wall_acceleration", "top_surface_acceleration", "inner_wall_acceleration", "sparse_infill_acceleration" }) toggle_field(el, have_default_acceleration); if (is_BBL_Printer) { for (auto el : {"default_jerk", "outer_wall_jerk", "inner_wall_jerk", "infill_jerk", "top_surface_jerk", "initial_layer_jerk", "travel_jerk"}) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 30e76a40e5..1c809ada15 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1944,10 +1944,12 @@ void TabPrint::build() optgroup->append_single_option_line("travel_speed"); optgroup = page->new_optgroup(L("Acceleration"), L"param_acceleration", 15); + optgroup->append_single_option_line("default_acceleration"); optgroup->append_single_option_line("initial_layer_acceleration"); optgroup->append_single_option_line("outer_wall_acceleration"); + optgroup->append_single_option_line("inner_wall_acceleration"); optgroup->append_single_option_line("top_surface_acceleration"); - optgroup->append_single_option_line("default_acceleration"); + optgroup->append_single_option_line("sparse_infill_acceleration"); optgroup->append_single_option_line("accel_to_decel_enable"); optgroup->append_single_option_line("accel_to_decel_factor");