Customizable speed for small perimeters. #60
This commit is contained in:
parent
ea254588f7
commit
53bc9c7421
@ -109,6 +109,8 @@ The author is Alessandro Ranellucci (me).
|
||||
Speed options:
|
||||
--travel-speed Speed of non-print moves in mm/sec (default: 130)
|
||||
--perimeter-speed Speed of print moves for perimeters in mm/sec (default: 30)
|
||||
--small-perimeter-speed
|
||||
Speed of print moves for small perimeters in mm/sec (default: 30)
|
||||
--infill-speed Speed of print moves in mm/sec (default: 60)
|
||||
--solid-infill-speed Speed of print moves for solid surfaces in mm/sec (default: 60)
|
||||
--bridge-speed Speed of bridge print moves in mm/sec (default: 60)
|
||||
|
@ -50,6 +50,7 @@ our $temperature = 200;
|
||||
# speed options
|
||||
our $travel_speed = 130; # mm/sec
|
||||
our $perimeter_speed = 30; # mm/sec
|
||||
our $small_perimeter_speed = 30; # mm/sec
|
||||
our $infill_speed = 60; # mm/sec
|
||||
our $solid_infill_speed = 60; # mm/sec
|
||||
our $bridge_speed = 60; # mm/sec
|
||||
@ -57,6 +58,7 @@ our $bottom_layer_speed_ratio = 0.3;
|
||||
|
||||
# accuracy options
|
||||
our $resolution = 0.00000001;
|
||||
our $small_perimeter_area = (5 / $resolution) ** 2;
|
||||
our $layer_height = 0.4;
|
||||
our $first_layer_height_ratio = 1;
|
||||
our $infill_every_layers = 1;
|
||||
|
@ -80,6 +80,11 @@ our $Options = {
|
||||
type => 'f',
|
||||
aliases => [qw(perimeter_feed_rate)],
|
||||
},
|
||||
'small_perimeter_speed' => {
|
||||
label => 'Small perimeters (mm/s)',
|
||||
cli => 'small-perimeter-speed=i',
|
||||
type => 'f',
|
||||
},
|
||||
'infill_speed' => {
|
||||
label => 'Infill (mm/s)',
|
||||
cli => 'infill-speed=i',
|
||||
@ -424,6 +429,7 @@ sub validate {
|
||||
if $Slic3r::skirt_height < 1;
|
||||
|
||||
# legacy with existing config files
|
||||
$Slic3r::small_perimeter_speed ||= $Slic3r::perimeter_speed;
|
||||
$Slic3r::bridge_speed ||= $Slic3r::infill_speed;
|
||||
$Slic3r::solid_infill_speed ||= $Slic3r::infill_speed;
|
||||
}
|
||||
|
@ -24,6 +24,10 @@ has 'perimeter_speed' => (
|
||||
is => 'ro',
|
||||
default => sub { $Slic3r::perimeter_speed * 60 }, # mm/min
|
||||
);
|
||||
has 'small_perimeter_speed' => (
|
||||
is => 'ro',
|
||||
default => sub { $Slic3r::small_perimeter_speed * 60 }, # mm/min
|
||||
);
|
||||
has 'infill_speed' => (
|
||||
is => 'ro',
|
||||
default => sub { $Slic3r::infill_speed * 60 }, # mm/min
|
||||
@ -124,6 +128,7 @@ sub extrude {
|
||||
# extrude arc or line
|
||||
$self->print_feed_rate(
|
||||
$path->role =~ /^(perimeter|skirt)$/o ? $self->perimeter_speed
|
||||
: $path->role eq 'small-perimeter' ? $self->small_perimeter_speed
|
||||
: $path->role eq 'fill' ? $self->infill_speed
|
||||
: $path->role eq 'solid-fill' ? $self->solid_infill_speed
|
||||
: $path->role eq 'bridge' ? $self->bridge_speed
|
||||
|
@ -25,7 +25,7 @@ sub new {
|
||||
},
|
||||
print_speed => {
|
||||
title => 'Print speed',
|
||||
options => [qw(perimeter_speed infill_speed solid_infill_speed bridge_speed)],
|
||||
options => [qw(perimeter_speed small_perimeter_speed infill_speed solid_infill_speed bridge_speed)],
|
||||
},
|
||||
speed => {
|
||||
title => 'Other speed settings',
|
||||
|
@ -71,6 +71,11 @@ sub make_perimeter {
|
||||
push @{ $layer->perimeters }, Slic3r::ExtrusionLoop->cast($contour, role => 'perimeter');
|
||||
}
|
||||
}
|
||||
|
||||
# detect small perimeters by checking their area
|
||||
for (@{ $layer->perimeters }) {
|
||||
$_->role('small-perimeter') if $_->polygon->area < $Slic3r::small_perimeter_area;
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
@ -40,4 +40,9 @@ sub is_valid {
|
||||
return @{$self->points} >= 3;
|
||||
}
|
||||
|
||||
sub polygon {
|
||||
my $self = shift;
|
||||
return Slic3r::Polygon->new($self->points);
|
||||
}
|
||||
|
||||
1;
|
||||
|
@ -115,6 +115,8 @@ Usage: slic3r.pl [ OPTIONS ] file.stl
|
||||
Speed options:
|
||||
--travel-speed Speed of non-print moves in mm/sec (default: $Slic3r::travel_speed)
|
||||
--perimeter-speed Speed of print moves for perimeters in mm/sec (default: $Slic3r::perimeter_speed)
|
||||
--small-perimeter-speed
|
||||
Speed of print moves for small perimeters in mm/sec (default: $Slic3r::small_perimeter_speed)
|
||||
--infill-speed Speed of print moves in mm/sec (default: $Slic3r::infill_speed)
|
||||
--solid-infill-speed Speed of print moves for solid surfaces in mm/sec (default: $Slic3r::solid_infill_speed)
|
||||
--bridge-speed Speed of bridge print moves in mm/sec (default: $Slic3r::bridge_speed)
|
||||
|
Loading…
Reference in New Issue
Block a user