diff --git a/README.md b/README.md index a979afba8..d471f6f16 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,9 @@ The author of the Silk icon set is Mark James. (default: 50) --support-material-speed Speed of support material print moves in mm/s (default: 60) + --support-material-interface-speed + Speed of support material interface print moves in mm/s or % over support material + speed (default: 100%) --bridge-speed Speed of bridge print moves in mm/s (default: 60) --gap-fill-speed Speed of gap fill print moves in mm/s (default: 20) --first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute diff --git a/lib/Slic3r/GCode/Layer.pm b/lib/Slic3r/GCode/Layer.pm index 69cb7b45d..9bac7901c 100644 --- a/lib/Slic3r/GCode/Layer.pm +++ b/lib/Slic3r/GCode/Layer.pm @@ -124,12 +124,12 @@ sub process_layer { if ($layer->isa('Slic3r::Layer::Support')) { if ($layer->support_interface_fills->count > 0) { $gcode .= $self->gcodegen->set_extruder($object->config->support_material_interface_extruder-1); - $gcode .= $self->gcodegen->extrude_path($_, 'support material interface', $object->config->support_material_speed) + $gcode .= $self->gcodegen->extrude_path($_, 'support material interface', $object->config->get_abs_value('support_material_interface_speed')) for @{$layer->support_interface_fills->chained_path_from($self->gcodegen->last_pos, 0)}; } if ($layer->support_fills->count > 0) { $gcode .= $self->gcodegen->set_extruder($object->config->support_material_extruder-1); - $gcode .= $self->gcodegen->extrude_path($_, 'support material', $object->config->support_material_speed) + $gcode .= $self->gcodegen->extrude_path($_, 'support material', $object->config->get_abs_value('support_material_speed')) for @{$layer->support_fills->chained_path_from($self->gcodegen->last_pos, 0)}; } } diff --git a/lib/Slic3r/GUI/Tab.pm b/lib/Slic3r/GUI/Tab.pm index 431d66b19..9f68b2cd1 100644 --- a/lib/Slic3r/GUI/Tab.pm +++ b/lib/Slic3r/GUI/Tab.pm @@ -454,7 +454,7 @@ sub build { $self->add_options_page('Speed', 'time.png', optgroups => [ { title => 'Speed for print moves', - options => [qw(perimeter_speed small_perimeter_speed external_perimeter_speed infill_speed solid_infill_speed top_solid_infill_speed support_material_speed bridge_speed gap_fill_speed)], + options => [qw(perimeter_speed small_perimeter_speed external_perimeter_speed infill_speed solid_infill_speed top_solid_infill_speed support_material_speed support_material_interface_speed bridge_speed gap_fill_speed)], }, { title => 'Speed for non-print moves', diff --git a/slic3r.pl b/slic3r.pl index ed25c6b8d..938f4ed93 100755 --- a/slic3r.pl +++ b/slic3r.pl @@ -293,6 +293,9 @@ $j (default: $config->{top_solid_infill_speed}) --support-material-speed Speed of support material print moves in mm/s (default: $config->{support_material_speed}) + --support-material-interface-speed + Speed of support material interface print moves in mm/s or % over support material + speed (default: $config->{support_material_interface_speed}) --bridge-speed Speed of bridge print moves in mm/s (default: $config->{bridge_speed}) --gap-fill-speed Speed of gap fill print moves in mm/s (default: $config->{gap_fill_speed}) --first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute diff --git a/xs/src/PrintConfig.hpp b/xs/src/PrintConfig.hpp index a253cf6db..d775b5ff9 100644 --- a/xs/src/PrintConfig.hpp +++ b/xs/src/PrintConfig.hpp @@ -819,6 +819,13 @@ class PrintConfigDef Options["support_material_interface_spacing"].sidetext = "mm"; Options["support_material_interface_spacing"].cli = "support-material-interface-spacing=f"; + Options["support_material_interface_speed"].type = coFloatOrPercent; + Options["support_material_interface_speed"].label = "Support material interface"; + Options["support_material_interface_speed"].category = "Support material"; + Options["support_material_interface_speed"].tooltip = "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed."; + Options["support_material_interface_speed"].sidetext = "mm/s or %"; + Options["support_material_interface_speed"].cli = "support-material-interface-speed=s"; + Options["support_material_pattern"].type = coEnum; Options["support_material_pattern"].label = "Pattern"; Options["support_material_pattern"].category = "Support material"; @@ -996,6 +1003,7 @@ class PrintObjectConfig : public virtual StaticPrintConfig ConfigOptionInt support_material_interface_extruder; ConfigOptionInt support_material_interface_layers; ConfigOptionFloat support_material_interface_spacing; + ConfigOptionFloatOrPercent support_material_interface_speed; ConfigOptionEnum support_material_pattern; ConfigOptionFloat support_material_spacing; ConfigOptionFloat support_material_speed; @@ -1020,6 +1028,8 @@ class PrintObjectConfig : public virtual StaticPrintConfig this->support_material_interface_extruder.value = 1; this->support_material_interface_layers.value = 3; this->support_material_interface_spacing.value = 0; + this->support_material_interface_speed.value = 100; + this->support_material_interface_speed.percent = true; this->support_material_pattern.value = smpPillars; this->support_material_spacing.value = 2.5; this->support_material_speed.value = 60; @@ -1042,6 +1052,7 @@ class PrintObjectConfig : public virtual StaticPrintConfig if (opt_key == "support_material_interface_extruder") return &this->support_material_interface_extruder; if (opt_key == "support_material_interface_layers") return &this->support_material_interface_layers; if (opt_key == "support_material_interface_spacing") return &this->support_material_interface_spacing; + if (opt_key == "support_material_interface_speed") return &this->support_material_interface_speed; if (opt_key == "support_material_pattern") return &this->support_material_pattern; if (opt_key == "support_material_spacing") return &this->support_material_spacing; if (opt_key == "support_material_speed") return &this->support_material_speed;