From f9e20db156a48bb5828dcdfeffd6f8aee21b2141 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sat, 27 Oct 2012 21:20:32 +0200 Subject: [PATCH] Update t/dynamic.t --- lib/Slic3r/Layer/Region.pm | 2 +- t/dynamic.t | 41 +++++++++++++++++++++++++------------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/Slic3r/Layer/Region.pm b/lib/Slic3r/Layer/Region.pm index 564a436a4..d12cb6041 100644 --- a/lib/Slic3r/Layer/Region.pm +++ b/lib/Slic3r/Layer/Region.pm @@ -234,7 +234,7 @@ sub make_perimeters { map $_->noncollapsing_offset_ex(-0.5*$flow->scaled_width), @gaps; - if (0) { + if (0) { # remember to re-enable t/dynamic.t # fill gaps using dynamic extrusion width, by treating them like thin polygons, # thus generating the skeleton and using it to fill them my %path_args = ( diff --git a/t/dynamic.t b/t/dynamic.t index 0b5dc490f..c9cb95823 100644 --- a/t/dynamic.t +++ b/t/dynamic.t @@ -2,6 +2,7 @@ use Test::More; use strict; use warnings; +plan skip_all => 'variable-width paths are currently disabled'; plan tests => 20; BEGIN { @@ -26,19 +27,30 @@ sub scale_points (@) { map [scale $_->[X], scale $_->[Y]], @_ } } { + local $Slic3r::Config = Slic3r::Config->new( + perimeters => 3, + ); my $w = 0.7; - local $Slic3r::perimeter_flow = Slic3r::Flow->new( + my $perimeter_flow = Slic3r::Flow->new( nozzle_diameter => 0.5, layer_height => 0.4, width => $w, ); - local $Slic3r::Config = Slic3r::Config->new( - perimeters => 3, - ); + my $print = Slic3r::Print->new; + my $region = Slic3r::Print::Region->new( + print => $print, + flows => { perimeter => $perimeter_flow }, + ); + push @{$print->regions}, $region; + my $object = Slic3r::Print::Object->new( + print => $print, + size => [1,1], + ); my $make_layer = sub { my ($width) = @_; my $layer = Slic3r::Layer->new( + object => $object, id => 1, slices => [ Slic3r::Surface->new( @@ -48,27 +60,28 @@ sub scale_points (@) { map [scale $_->[X], scale $_->[Y]], @_ } ], thin_walls => [], ); + my $layerm = $layer->region(0); $layer->make_perimeters; - return $layer; + return $layerm; }; my %widths = ( 1 * $w => { perimeters => 1, gaps => 0 }, - 1.3 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 0.2 * $w)->spacing }, - 1.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 0.5 * $w)->spacing }, - 2 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->spacing }, - 2.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 1.5 * $w)->spacing }, + 1.3 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->clone(width => 0.2 * $w)->spacing }, + 1.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->clone(width => 0.5 * $w)->spacing }, + 2 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->spacing }, + 2.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->clone(width => 1.5 * $w)->spacing }, 3 * $w => { perimeters => 2, gaps => 0 }, - 4 * $w => { perimeters => 2, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->spacing }, + 4 * $w => { perimeters => 2, gaps => 1, gap_flow_spacing => $perimeter_flow->spacing }, ); foreach my $width (sort keys %widths) { - my $layer = $make_layer->($width); - is scalar @{$layer->perimeters}, $widths{$width}{perimeters}, 'right number of perimeters'; - is scalar @{$layer->thin_fills} ? 1 : 0, $widths{$width}{gaps}, + my $layerm = $make_layer->($width); + is scalar @{$layerm->perimeters}, $widths{$width}{perimeters}, 'right number of perimeters'; + is scalar @{$layerm->thin_fills} ? 1 : 0, $widths{$width}{gaps}, ($widths{$width}{gaps} ? 'gaps were filled' : 'no gaps detected'); # TODO: we should check the exact number of gaps, but we need a better medial axis algorithm - my @gaps = map $_->unpack, @{$layer->thin_fills}; + my @gaps = map $_->unpack, @{$layerm->thin_fills}; if (@gaps) { ok +(!first { abs($_->flow_spacing - $widths{$width}{gap_flow_spacing}) > epsilon } @gaps), 'flow spacing was dynamically adjusted';