Prevent rare crashes using Ooze Prevention

This commit is contained in:
Alessandro Ranellucci 2014-12-28 22:09:28 +01:00
parent b468e68c59
commit c43049e13b

View file

@ -328,6 +328,7 @@ sub _extrude_path {
return $gcode; return $gcode;
} }
# This method accepts $point in print coordinates.
sub travel_to { sub travel_to {
my ($self, $point, $role, $comment) = @_; my ($self, $point, $role, $comment) = @_;
@ -355,11 +356,11 @@ sub travel_to {
|| (defined $role && $role == EXTR_ROLE_SUPPORTMATERIAL && $self->layer->support_islands->contains_line($travel)) || (defined $role && $role == EXTR_ROLE_SUPPORTMATERIAL && $self->layer->support_islands->contains_line($travel))
) { ) {
# Just perform a straight travel move without any retraction. # Just perform a straight travel move without any retraction.
$gcode .= $self->writer->travel_to_xy($self->point_to_gcode($point), $comment); $gcode .= $self->writer->travel_to_xy($self->point_to_gcode($point), $comment || '');
} elsif ($self->config->avoid_crossing_perimeters && !$self->avoid_crossing_perimeters->disable_once) { } elsif ($self->config->avoid_crossing_perimeters && !$self->avoid_crossing_perimeters->disable_once) {
# If avoid_crossing_perimeters is enabled and the disable_once flag is not set # If avoid_crossing_perimeters is enabled and the disable_once flag is not set
# we need to plan a multi-segment travel move inside the configuration space. # we need to plan a multi-segment travel move inside the configuration space.
$gcode .= $self->avoid_crossing_perimeters->travel_to($self, $point, $comment); $gcode .= $self->avoid_crossing_perimeters->travel_to($self, $point, $comment || '');
} else { } else {
# If avoid_crossing_perimeters is disabled or the disable_once flag is set, # If avoid_crossing_perimeters is disabled or the disable_once flag is set,
# perform a straight move with a retraction. # perform a straight move with a retraction.
@ -473,7 +474,7 @@ sub pre_toolchange {
$last_pos->translate(scale +$gcodegen->origin->x, scale +$gcodegen->origin->y); #)) $last_pos->translate(scale +$gcodegen->origin->x, scale +$gcodegen->origin->y); #))
my $standby_point = $last_pos->nearest_point($self->standby_points); my $standby_point = $last_pos->nearest_point($self->standby_points);
$standby_point->translate(scale -$gcodegen->origin->x, scale -$gcodegen->origin->y); #)) $standby_point->translate(scale -$gcodegen->origin->x, scale -$gcodegen->origin->y); #))
$gcode .= $gcodegen->travel_to($standby_point); $gcode .= $gcodegen->travel_to($standby_point, undef, 'move to standby position');
} }
if ($gcodegen->config->standby_temperature_delta != 0) { if ($gcodegen->config->standby_temperature_delta != 0) {