mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-06-04 11:25:47 +08:00
54 lines
1.7 KiB
Perl
54 lines
1.7 KiB
Perl
use Test::More tests => 2;
|
|
use strict;
|
|
use warnings;
|
|
|
|
BEGIN {
|
|
use FindBin;
|
|
use lib "$FindBin::Bin/../lib";
|
|
use local::lib "$FindBin::Bin/../local-lib";
|
|
}
|
|
|
|
use List::Util qw(none);
|
|
use Slic3r;
|
|
use Slic3r::Geometry qw(epsilon);
|
|
use Slic3r::Test;
|
|
|
|
{
|
|
my $config = Slic3r::Config->new_from_defaults;
|
|
my $test = sub {
|
|
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
|
my %speeds_by_z = (); # z => []
|
|
Slic3r::GCode::Reader->new->parse(my $gcode = Slic3r::Test::gcode($print), sub {
|
|
my ($self, $cmd, $args, $info) = @_;
|
|
|
|
if ($cmd eq 'G1' && $info->{dist_E} > 0 && $info->{dist_XY} > 0) {
|
|
$speeds_by_z{$self->Z} //= [];
|
|
push @{ $speeds_by_z{$self->Z} }, $self->F/60;
|
|
}
|
|
});
|
|
return %speeds_by_z;
|
|
};
|
|
|
|
{
|
|
$config->set('perimeter_speed', 0);
|
|
$config->set('external_perimeter_speed', 0);
|
|
$config->set('infill_speed', 0);
|
|
$config->set('support_material_speed', 0);
|
|
$config->set('solid_infill_speed', 0);
|
|
$config->set('first_layer_speed', '50%');
|
|
$config->set('first_layer_height', 0.25);
|
|
my %speeds_by_z = $test->();
|
|
ok !!(none { $_ > $config->max_print_speed/2+&epsilon } @{ $speeds_by_z{$config->first_layer_height} }),
|
|
'percent first_layer_speed is applied over autospeed';
|
|
}
|
|
|
|
{
|
|
$config->set('first_layer_speed', 33);
|
|
my %speeds_by_z = $test->();
|
|
ok !!(none { $_ > $config->first_layer_speed } @{ $speeds_by_z{$config->first_layer_height} }),
|
|
'absolute first_layer_speed overrides autospeed';
|
|
}
|
|
}
|
|
|
|
__END__
|