Update t/dynamic.t
This commit is contained in:
parent
b0f24a2666
commit
f9e20db156
@ -234,7 +234,7 @@ sub make_perimeters {
|
|||||||
map $_->noncollapsing_offset_ex(-0.5*$flow->scaled_width),
|
map $_->noncollapsing_offset_ex(-0.5*$flow->scaled_width),
|
||||||
@gaps;
|
@gaps;
|
||||||
|
|
||||||
if (0) {
|
if (0) { # remember to re-enable t/dynamic.t
|
||||||
# fill gaps using dynamic extrusion width, by treating them like thin polygons,
|
# fill gaps using dynamic extrusion width, by treating them like thin polygons,
|
||||||
# thus generating the skeleton and using it to fill them
|
# thus generating the skeleton and using it to fill them
|
||||||
my %path_args = (
|
my %path_args = (
|
||||||
|
41
t/dynamic.t
41
t/dynamic.t
@ -2,6 +2,7 @@ use Test::More;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
|
plan skip_all => 'variable-width paths are currently disabled';
|
||||||
plan tests => 20;
|
plan tests => 20;
|
||||||
|
|
||||||
BEGIN {
|
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;
|
my $w = 0.7;
|
||||||
local $Slic3r::perimeter_flow = Slic3r::Flow->new(
|
my $perimeter_flow = Slic3r::Flow->new(
|
||||||
nozzle_diameter => 0.5,
|
nozzle_diameter => 0.5,
|
||||||
layer_height => 0.4,
|
layer_height => 0.4,
|
||||||
width => $w,
|
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 $make_layer = sub {
|
||||||
my ($width) = @_;
|
my ($width) = @_;
|
||||||
my $layer = Slic3r::Layer->new(
|
my $layer = Slic3r::Layer->new(
|
||||||
|
object => $object,
|
||||||
id => 1,
|
id => 1,
|
||||||
slices => [
|
slices => [
|
||||||
Slic3r::Surface->new(
|
Slic3r::Surface->new(
|
||||||
@ -48,27 +60,28 @@ sub scale_points (@) { map [scale $_->[X], scale $_->[Y]], @_ }
|
|||||||
],
|
],
|
||||||
thin_walls => [],
|
thin_walls => [],
|
||||||
);
|
);
|
||||||
|
my $layerm = $layer->region(0);
|
||||||
$layer->make_perimeters;
|
$layer->make_perimeters;
|
||||||
return $layer;
|
return $layerm;
|
||||||
};
|
};
|
||||||
|
|
||||||
my %widths = (
|
my %widths = (
|
||||||
1 * $w => { perimeters => 1, gaps => 0 },
|
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.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 => $Slic3r::perimeter_flow->clone(width => 0.5 * $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 => $Slic3r::perimeter_flow->spacing },
|
2 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $perimeter_flow->spacing },
|
||||||
2.5 * $w => { perimeters => 1, gaps => 1, gap_flow_spacing => $Slic3r::perimeter_flow->clone(width => 1.5 * $w)->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 },
|
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) {
|
foreach my $width (sort keys %widths) {
|
||||||
my $layer = $make_layer->($width);
|
my $layerm = $make_layer->($width);
|
||||||
is scalar @{$layer->perimeters}, $widths{$width}{perimeters}, 'right number of perimeters';
|
is scalar @{$layerm->perimeters}, $widths{$width}{perimeters}, 'right number of perimeters';
|
||||||
is scalar @{$layer->thin_fills} ? 1 : 0, $widths{$width}{gaps},
|
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
|
($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) {
|
if (@gaps) {
|
||||||
ok +(!first { abs($_->flow_spacing - $widths{$width}{gap_flow_spacing}) > epsilon } @gaps),
|
ok +(!first { abs($_->flow_spacing - $widths{$width}{gap_flow_spacing}) > epsilon } @gaps),
|
||||||
'flow spacing was dynamically adjusted';
|
'flow spacing was dynamically adjusted';
|
||||||
|
Loading…
Reference in New Issue
Block a user