Fix concentric infill and add regression test. #1432

svg-paths
Alessandro Ranellucci 2013-09-12 11:13:11 +02:00
parent 749b8421b0
commit 5f54d0eb90
2 changed files with 7 additions and 7 deletions

View File

@ -29,7 +29,7 @@ sub fill_surface {
# compensate the overlap which is good for rectilinear but harmful for concentric # compensate the overlap which is good for rectilinear but harmful for concentric
# where the perimeter/infill spacing should be equal to any other loop spacing # where the perimeter/infill spacing should be equal to any other loop spacing
my @loops = my @last = @{offset($expolygon, -&Slic3r::INFILL_OVERLAP_OVER_SPACING * $min_spacing / 2)}; my @loops = my @last = @{offset(\@$expolygon, -&Slic3r::INFILL_OVERLAP_OVER_SPACING * $min_spacing / 2)};
while (@last) { while (@last) {
push @loops, @last = @{offset2(\@last, -1.5*$distance, +0.5*$distance)}; push @loops, @last = @{offset2(\@last, -1.5*$distance, +0.5*$distance)};
} }
@ -41,9 +41,9 @@ sub fill_surface {
# order paths using a nearest neighbor search # order paths using a nearest neighbor search
my @paths = (); my @paths = ();
my $last_pos = [0,0]; my $last_pos = Slic3r::Point->new(0,0);
foreach my $loop (@loops) { foreach my $loop (@loops) {
push @paths, $loop->split_at_index($last_pos->nearest_point_index($loop)); push @paths, $loop->split_at_index($last_pos->nearest_point_index(\@$loop));
$last_pos = $paths[-1][-1]; $last_pos = $paths[-1][-1];
} }

View File

@ -2,7 +2,7 @@ use Test::More;
use strict; use strict;
use warnings; use warnings;
plan tests => 33; plan tests => 34;
BEGIN { BEGIN {
use FindBin; use FindBin;
@ -155,11 +155,11 @@ sub scale_points (@) { map [scale $_->[X], scale $_->[Y]], @_ }
'chained path'; 'chained path';
} }
{ for my $pattern (qw(hilbertcurve concentric)) {
my $config = Slic3r::Config->new_from_defaults; my $config = Slic3r::Config->new_from_defaults;
$config->set('fill_pattern', 'hilbertcurve'); $config->set('fill_pattern', $pattern);
my $print = Slic3r::Test::init_print('20mm_cube', config => $config); my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
ok Slic3r::Test::gcode($print), 'successful hilbertcurve infill generation'; ok Slic3r::Test::gcode($print), "successful $pattern infill generation";
} }
{ {