Acceleration control. #185
This commit is contained in:
parent
34e047205a
commit
32fd58d531
@ -153,6 +153,17 @@ The author of the Silk icon set is Mark James.
|
|||||||
--first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute
|
--first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute
|
||||||
value or as a percentage over normal speeds (default: 30%)
|
value or as a percentage over normal speeds (default: 30%)
|
||||||
|
|
||||||
|
Acceleration options:
|
||||||
|
--perimeter-acceleration
|
||||||
|
Overrides firmware's default acceleration for perimeters. (mm/s^2, set zero
|
||||||
|
to disable; default: 0)
|
||||||
|
--infill-acceleration
|
||||||
|
Overrides firmware's default acceleration for infill. (mm/s^2, set zero
|
||||||
|
to disable; default: 0)
|
||||||
|
--default-acceleration
|
||||||
|
Acceleration will be reset to this value after the specific settings above
|
||||||
|
have been applied. (mm/s^2, set zero to disable; default: 130)
|
||||||
|
|
||||||
Accuracy options:
|
Accuracy options:
|
||||||
--layer-height Layer height in mm (default: 0.4)
|
--layer-height Layer height in mm (default: 0.4)
|
||||||
--first-layer-height Layer height for first layer (mm or %, default: 100%)
|
--first-layer-height Layer height for first layer (mm or %, default: 100%)
|
||||||
|
@ -6,7 +6,7 @@ use utf8;
|
|||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
|
|
||||||
# cemetery of old config settings
|
# cemetery of old config settings
|
||||||
our @Ignore = qw(duplicate_x duplicate_y multiply_x multiply_y support_material_tool);
|
our @Ignore = qw(duplicate_x duplicate_y multiply_x multiply_y support_material_tool acceleration);
|
||||||
|
|
||||||
my $serialize_comma = sub { join ',', @{$_[0]} };
|
my $serialize_comma = sub { join ',', @{$_[0]} };
|
||||||
my $deserialize_comma = sub { [ split /,/, $_[0] ] };
|
my $deserialize_comma = sub { [ split /,/, $_[0] ] };
|
||||||
@ -319,25 +319,29 @@ our $Options = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
# acceleration options
|
# acceleration options
|
||||||
'acceleration' => {
|
'default_acceleration' => {
|
||||||
label => 'Enable acceleration control',
|
label => 'Default',
|
||||||
cli => 'acceleration!',
|
tooltip => 'This is the acceleration your printer will be reset to after the role-specific acceleration values are used (perimeter/infill). Set zero to prevent resetting acceleration at all.',
|
||||||
type => 'bool',
|
sidetext => 'mm/s²',
|
||||||
|
cli => 'default-acceleration',
|
||||||
|
type => 'f',
|
||||||
default => 0,
|
default => 0,
|
||||||
},
|
},
|
||||||
'perimeter_acceleration' => {
|
'perimeter_acceleration' => {
|
||||||
label => 'Perimeters',
|
label => 'Perimeters',
|
||||||
|
tooltip => 'This is the acceleration your printer will use for perimeters. A high value like 9000 usually gives good results if your hardware is up to the job. Set zero to disable acceleration control for perimeters.',
|
||||||
sidetext => 'mm/s²',
|
sidetext => 'mm/s²',
|
||||||
cli => 'perimeter-acceleration',
|
cli => 'perimeter-acceleration',
|
||||||
type => 'f',
|
type => 'f',
|
||||||
default => 25,
|
default => 0,
|
||||||
},
|
},
|
||||||
'infill_acceleration' => {
|
'infill_acceleration' => {
|
||||||
label => 'Infill',
|
label => 'Infill',
|
||||||
|
tooltip => 'This is the acceleration your printer will use for infill. Set zero to disable acceleration control for infill.',
|
||||||
sidetext => 'mm/s²',
|
sidetext => 'mm/s²',
|
||||||
cli => 'infill-acceleration',
|
cli => 'infill-acceleration',
|
||||||
type => 'f',
|
type => 'f',
|
||||||
default => 50,
|
default => 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
# accuracy options
|
# accuracy options
|
||||||
|
@ -323,9 +323,9 @@ sub reset_e {
|
|||||||
sub set_acceleration {
|
sub set_acceleration {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($acceleration) = @_;
|
my ($acceleration) = @_;
|
||||||
return "" unless $Slic3r::Config->acceleration;
|
return "" if !$acceleration;
|
||||||
|
|
||||||
return sprintf "M201 E%s%s\n",
|
return sprintf "M204 S%s%s\n",
|
||||||
$acceleration, ($Slic3r::Config->gcode_comments ? ' ; adjust acceleration' : '');
|
$acceleration, ($Slic3r::Config->gcode_comments ? ' ; adjust acceleration' : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,6 +430,10 @@ sub build {
|
|||||||
title => 'Modifiers',
|
title => 'Modifiers',
|
||||||
options => [qw(first_layer_speed)],
|
options => [qw(first_layer_speed)],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title => 'Acceleration control (advanced)',
|
||||||
|
options => [qw(perimeter_acceleration infill_acceleration default_acceleration)],
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$self->add_options_page('Skirt and brim', 'box.png', optgroups => [
|
$self->add_options_page('Skirt and brim', 'box.png', optgroups => [
|
||||||
|
@ -748,7 +748,6 @@ sub write_gcode {
|
|||||||
$gcodegen->set_shift(@shift);
|
$gcodegen->set_shift(@shift);
|
||||||
$gcode .= $gcodegen->set_extruder($self->extruders->[0]); # move_z requires extruder
|
$gcode .= $gcodegen->set_extruder($self->extruders->[0]); # move_z requires extruder
|
||||||
$gcode .= $gcodegen->move_z($gcodegen->layer->print_z);
|
$gcode .= $gcodegen->move_z($gcodegen->layer->print_z);
|
||||||
$gcode .= $gcodegen->set_acceleration($Slic3r::Config->perimeter_acceleration);
|
|
||||||
# skip skirt if we have a large brim
|
# skip skirt if we have a large brim
|
||||||
if ($layer_id < $Slic3r::Config->skirt_height) {
|
if ($layer_id < $Slic3r::Config->skirt_height) {
|
||||||
# distribute skirt loops across all extruders
|
# distribute skirt loops across all extruders
|
||||||
@ -807,7 +806,10 @@ sub write_gcode {
|
|||||||
# extrude perimeters
|
# extrude perimeters
|
||||||
if (@{ $layerm->perimeters }) {
|
if (@{ $layerm->perimeters }) {
|
||||||
$gcode .= $gcodegen->set_extruder($region->extruders->{perimeter});
|
$gcode .= $gcodegen->set_extruder($region->extruders->{perimeter});
|
||||||
|
$gcode .= $gcodegen->set_acceleration($Slic3r::Config->perimeter_acceleration);
|
||||||
$gcode .= $gcodegen->extrude($_, 'perimeter') for @{ $layerm->perimeters };
|
$gcode .= $gcodegen->extrude($_, 'perimeter') for @{ $layerm->perimeters };
|
||||||
|
$gcode .= $gcodegen->set_acceleration($Slic3r::Config->default_acceleration)
|
||||||
|
if $Slic3r::Config->perimeter_acceleration;
|
||||||
}
|
}
|
||||||
|
|
||||||
# extrude fills
|
# extrude fills
|
||||||
@ -822,6 +824,8 @@ sub write_gcode {
|
|||||||
$gcode .= $gcodegen->extrude($fill, 'fill') ;
|
$gcode .= $gcodegen->extrude($fill, 'fill') ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$gcode .= $gcodegen->set_acceleration($Slic3r::Config->default_acceleration)
|
||||||
|
if $Slic3r::Config->infill_acceleration;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
slic3r.pl
11
slic3r.pl
@ -201,6 +201,17 @@ $j
|
|||||||
--first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute
|
--first-layer-speed Speed of print moves for bottom layer, expressed either as an absolute
|
||||||
value or as a percentage over normal speeds (default: $config->{first_layer_speed})
|
value or as a percentage over normal speeds (default: $config->{first_layer_speed})
|
||||||
|
|
||||||
|
Acceleration options:
|
||||||
|
--perimeter-acceleration
|
||||||
|
Overrides firmware's default acceleration for perimeters. (mm/s^2, set zero
|
||||||
|
to disable; default: $config->{perimeter_acceleration})
|
||||||
|
--infill-acceleration
|
||||||
|
Overrides firmware's default acceleration for infill. (mm/s^2, set zero
|
||||||
|
to disable; default: $config->{infill_acceleration})
|
||||||
|
--default-acceleration
|
||||||
|
Acceleration will be reset to this value after the specific settings above
|
||||||
|
have been applied. (mm/s^2, set zero to disable; default: $config->{travel_speed})
|
||||||
|
|
||||||
Accuracy options:
|
Accuracy options:
|
||||||
--layer-height Layer height in mm (default: $config->{layer_height})
|
--layer-height Layer height in mm (default: $config->{layer_height})
|
||||||
--first-layer-height Layer height for first layer (mm or %, default: $config->{first_layer_height})
|
--first-layer-height Layer height for first layer (mm or %, default: $config->{first_layer_height})
|
||||||
|
Loading…
Reference in New Issue
Block a user