Prevent superfluous extra perimeters added when a region has an acute angle
This commit is contained in:
parent
06fc1d1044
commit
ea0e136b45
3 changed files with 41 additions and 2 deletions
|
@ -1,4 +1,4 @@
|
|||
use Test::More tests => 5;
|
||||
use Test::More tests => 6;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
|
@ -139,4 +139,33 @@ use Slic3r::Test;
|
|||
}
|
||||
}
|
||||
|
||||
{
|
||||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('skirts', 0);
|
||||
$config->set('perimeters', 3);
|
||||
$config->set('layer_height', 0.4);
|
||||
$config->set('first_layer_height', 0.35);
|
||||
$config->set('extra_perimeters', 1);
|
||||
$config->set('cooling', 0); # to prevent speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds from being altered
|
||||
$config->set('perimeter_speed', 99);
|
||||
$config->set('external_perimeter_speed', 99);
|
||||
$config->set('small_perimeter_speed', 99);
|
||||
|
||||
my $print = Slic3r::Test::init_print('ipadstand', config => $config);
|
||||
my %perimeters = (); # z => number of loops
|
||||
my $in_loop = 0;
|
||||
Slic3r::GCode::Reader->new->parse(Slic3r::Test::gcode($print), sub {
|
||||
my ($self, $cmd, $args, $info) = @_;
|
||||
|
||||
if ($info->{extruding} && $info->{dist_XY} > 0 && ($args->{F} // $self->F) == $config->perimeter_speed*60) {
|
||||
$perimeters{$self->Z}++ if !$in_loop;
|
||||
$in_loop = 1;
|
||||
} else {
|
||||
$in_loop = 0;
|
||||
}
|
||||
});
|
||||
ok !(grep { $_ % $config->perimeters } values %perimeters), 'no superfluous extra perimeters';
|
||||
}
|
||||
|
||||
__END__
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue