From 8e4a43ea5c55329e09d0c07661d39eeabefef427 Mon Sep 17 00:00:00 2001 From: Scott Mudge <19617165+scottmudge@users.noreply.github.com> Date: Mon, 26 Jun 2023 08:53:17 -0400 Subject: [PATCH] Add option for skirt-speed override (#1371) Add skirt speed option. Co-authored-by: SoftFever --- src/libslic3r/GCode.cpp | 6 ++++++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 1 + src/libslic3r/PrintConfig.cpp | 9 +++++++++ src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 1 + 7 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f734477c52..6d1ce40f2c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4022,6 +4022,12 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } } } + // Override skirt speed if set + if (path.role() == erSkirt) { + const double skirt_speed = m_config.get_abs_value("skirt_speed"); + if (skirt_speed > 0.0) + speed = skirt_speed; + } //BBS: remove this config //else if (this->object_layer_over_raft()) // speed = m_config.get_abs_value("first_layer_speed_over_raft", speed); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 02ff26aa56..36f6633ade 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -720,7 +720,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", "skirt_loops", "skirt_distance", "skirt_height", "draft_shield", + "outer_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_loops", "skirt_speed", "skirt_distance", "skirt_height", "draft_shield", "brim_width", "brim_object_gap", "brim_type", "enable_support", "support_type", "support_threshold_angle", "enforce_support_layers", "raft_layers", "raft_first_layer_density", "raft_first_layer_expansion", "raft_contact_distance", "raft_expansion", "support_base_pattern", "support_base_pattern_spacing", "support_expansion", "support_style", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 1650801034..b5a349931e 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -185,6 +185,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n // These steps have no influence on the G-code whatsoever. Just ignore them. } else if ( opt_key == "skirt_loops" + || opt_key == "skirt_speed" || opt_key == "skirt_height" || opt_key == "draft_shield" || opt_key == "skirt_distance" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5641a13194..25009af8e2 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2691,6 +2691,15 @@ void PrintConfigDef::init_fff_params() def->mode = comSimple; def->set_default_value(new ConfigOptionInt(1)); + def = this->add("skirt_speed", coFloat); + def->label = L("Skirt speed"); + def->full_label = L("Skirt speed"); + def->tooltip = L("Speed of skirt, in mm/s. Zero means use default layer extrusion speed."); + def->min = 0; + def->sidetext = L("mm/s"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(0.0)); + def = this->add("slow_down_layer_time", coFloats); def->label = L("Layer time"); def->tooltip = L("The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to " diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 5ac32bae60..db93f3b1a1 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -968,6 +968,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloat, skirt_distance)) ((ConfigOptionInt, skirt_height)) ((ConfigOptionInt, skirt_loops)) + ((ConfigOptionFloat, skirt_speed)) ((ConfigOptionFloats, slow_down_layer_time)) ((ConfigOptionBool, spiral_mode)) ((ConfigOptionInt, standby_temperature_delta)) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cd5baa548c..0801ca19b9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2231,7 +2231,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) //BBS: add bed_exclude_area , config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({ "printable_area", "bed_exclude_area", "bed_custom_texture", "bed_custom_model", "print_sequence", - "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_distance", + "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_speed", "skirt_distance", "brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_volume", "extruder_colour", "filament_colour", "material_colour", "printable_height", "printer_model", "printer_technology", diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 497ef553d0..2bba25ff3e 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2033,6 +2033,7 @@ void TabPrint::build() optgroup->append_single_option_line("skirt_loops"); optgroup->append_single_option_line("skirt_distance"); optgroup->append_single_option_line("skirt_height"); + optgroup->append_single_option_line("skirt_speed"); //optgroup->append_single_option_line("draft_shield"); optgroup->append_single_option_line("brim_type", "auto-brim"); optgroup->append_single_option_line("brim_width", "auto-brim#manual");