Bugfix: only_retract_when_crossing_perimeters was almost not working. #680

This commit is contained in:
Alessandro Ranellucci 2012-09-12 15:19:47 +02:00
parent 41d5412fcb
commit 9934f8957f
2 changed files with 4 additions and 2 deletions

View file

@ -3,7 +3,7 @@ use Moo;
use List::Util qw(first);
use Slic3r::ExtrusionPath ':roles';
use Slic3r::Geometry qw(scale unscale points_coincide PI X Y);
use Slic3r::Geometry qw(scale unscale scaled_epsilon points_coincide PI X Y);
has 'layer' => (is => 'rw');
has 'shift_x' => (is => 'rw', default => sub {0} );
@ -135,7 +135,7 @@ sub extrude_path {
{
my $travel = Slic3r::Line->new($self->last_pos, $path->points->[0]);
if ($travel->length >= scale $self->extruder->retract_before_travel) {
if (!$Slic3r::Config->only_retract_when_crossing_perimeters || $path->role != EXTR_ROLE_FILL || !first { $_->expolygon->encloses_line($travel) } @{$self->layer->slices}) {
if (!$Slic3r::Config->only_retract_when_crossing_perimeters || $path->role != EXTR_ROLE_FILL || !first { $_->expolygon->encloses_line($travel, scaled_epsilon) } @{$self->layer->slices}) {
$gcode .= $self->retract(travel_to => $path->points->[0]);
}
}