mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-13 09:47:58 -06:00
Fixed regression causing crash when using avoid_crossing_perimeters with multiple object, caused by recent refactorings. Added regression test
This commit is contained in:
parent
43cbad8867
commit
23848492ce
2 changed files with 24 additions and 1 deletions
|
@ -560,6 +560,8 @@ has '_layer_mp' => (is => 'rw');
|
||||||
has 'new_object' => (is => 'rw', default => sub {0}); # this flag triggers the use of the external configuration space for avoid_crossing_perimeters for the next travel move
|
has 'new_object' => (is => 'rw', default => sub {0}); # this flag triggers the use of the external configuration space for avoid_crossing_perimeters for the next travel move
|
||||||
has 'straight_once' => (is => 'rw', default => sub {1}); # this flag disables avoid_crossing_perimeters just for the next travel move
|
has 'straight_once' => (is => 'rw', default => sub {1}); # this flag disables avoid_crossing_perimeters just for the next travel move
|
||||||
|
|
||||||
|
use Slic3r::Geometry qw(scale);
|
||||||
|
|
||||||
sub init_external_mp {
|
sub init_external_mp {
|
||||||
my ($self, $islands) = @_;
|
my ($self, $islands) = @_;
|
||||||
$self->_external_mp(Slic3r::MotionPlanner->new($islands));
|
$self->_external_mp(Slic3r::MotionPlanner->new($islands));
|
||||||
|
@ -612,7 +614,7 @@ sub _plan {
|
||||||
# append the actual path and return
|
# append the actual path and return
|
||||||
# use G1 because we rely on paths being straight (G0 may make round paths)
|
# use G1 because we rely on paths being straight (G0 may make round paths)
|
||||||
$gcode .= join '',
|
$gcode .= join '',
|
||||||
map $gcodegen->writer->travel_to_xy($self->point_to_gcode($_->b), $comment),
|
map $gcodegen->writer->travel_to_xy($gcodegen->point_to_gcode($_->b), $comment),
|
||||||
@{$travel->lines};
|
@{$travel->lines};
|
||||||
|
|
||||||
return $gcode;
|
return $gcode;
|
||||||
|
|
21
t/avoid_crossing_perimeters.t
Normal file
21
t/avoid_crossing_perimeters.t
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
use Test::More tests => 1;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
use FindBin;
|
||||||
|
use lib "$FindBin::Bin/../lib";
|
||||||
|
}
|
||||||
|
|
||||||
|
use List::Util qw(first sum);
|
||||||
|
use Slic3r;
|
||||||
|
use Slic3r::Test;
|
||||||
|
|
||||||
|
{
|
||||||
|
my $config = Slic3r::Config->new_from_defaults;
|
||||||
|
$config->set('avoid_crossing_perimeters', 2);
|
||||||
|
my $print = Slic3r::Test::init_print('20mm_cube', config => $config, duplicate => 2);
|
||||||
|
ok my $gcode = Slic3r::Test::gcode($print), "no crash with avoid_crossing_perimeters and multiple objects";
|
||||||
|
}
|
||||||
|
|
||||||
|
__END__
|
Loading…
Add table
Add a link
Reference in a new issue