Bugfix: ignore only_retract_when_crossing_perimeters when fill_density = 0
This commit is contained in:
parent
16a3d29a1d
commit
71209711b3
2 changed files with 27 additions and 1 deletions
|
@ -335,6 +335,7 @@ sub travel_to {
|
||||||
# *and* in an island in the upper layer (so that the ooze will not be visible)
|
# *and* in an island in the upper layer (so that the ooze will not be visible)
|
||||||
if ($travel->length < scale $self->extruder->retract_before_travel
|
if ($travel->length < scale $self->extruder->retract_before_travel
|
||||||
|| ($self->config->only_retract_when_crossing_perimeters
|
|| ($self->config->only_retract_when_crossing_perimeters
|
||||||
|
&& $self->config->fill_density > 0
|
||||||
&& (first { $_->contains_line($travel) } @{$self->_upper_layer_islands})
|
&& (first { $_->contains_line($travel) } @{$self->_upper_layer_islands})
|
||||||
&& (first { $_->contains_line($travel) } @{$self->_layer_islands}))
|
&& (first { $_->contains_line($travel) } @{$self->_layer_islands}))
|
||||||
|| (defined $role && $role == EXTR_ROLE_SUPPORTMATERIAL && (first { $_->contains_line($travel) } @{$self->layer->support_islands}))
|
|| (defined $role && $role == EXTR_ROLE_SUPPORTMATERIAL && (first { $_->contains_line($travel) } @{$self->layer->support_islands}))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use Test::More tests => 17;
|
use Test::More tests => 18;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
|
@ -155,4 +155,29 @@ use Slic3r::Test qw(_eq);
|
||||||
is $layer_changes_with_retraction, 0, 'no retraction on layer change';
|
is $layer_changes_with_retraction, 0, 'no retraction on layer change';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
my $config = Slic3r::Config->new_from_defaults;
|
||||||
|
$config->set('only_retract_when_crossing_perimeters', 1);
|
||||||
|
$config->set('fill_density', 0);
|
||||||
|
|
||||||
|
my $print = Slic3r::Test::init_print('cube_with_hole', config => $config);
|
||||||
|
my $retracted = 0;
|
||||||
|
my $traveling_without_retraction = 0;
|
||||||
|
Slic3r::GCode::Reader->new->parse(Slic3r::Test::gcode($print), sub {
|
||||||
|
my ($self, $cmd, $args, $info) = @_;
|
||||||
|
|
||||||
|
if ($info->{retracting}) {
|
||||||
|
$retracted = 1;
|
||||||
|
} elsif ($info->{extruding} && $retracted) {
|
||||||
|
$retracted = 0;
|
||||||
|
} elsif ($info->{travel} && !$retracted) {
|
||||||
|
if ($info->{dist_XY} > $config->retract_before_travel->[0]) {
|
||||||
|
$traveling_without_retraction = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ok !$traveling_without_retraction, 'always retract when using only_retract_when_crossing_perimeters and fill_density = 0';
|
||||||
|
}
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|
Loading…
Add table
Reference in a new issue