Browse Source

Separate speed option for support material interface. #2009

Alessandro Ranellucci 10 years ago
parent
commit
8ca352eb62
5 changed files with 20 additions and 3 deletions
  1. 3 0
      README.md
  2. 2 2
      lib/Slic3r/GCode/Layer.pm
  3. 1 1
      lib/Slic3r/GUI/Tab.pm
  4. 3 0
      slic3r.pl
  5. 11 0
      xs/src/PrintConfig.hpp

+ 3 - 0
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

+ 2 - 2
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)};
             }
         }

+ 1 - 1
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',

+ 3 - 0
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

+ 11 - 0
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<SupportMaterialPattern> 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;