diff options
author | Alessandro Ranellucci <aar@cpan.org> | 2016-03-19 00:19:49 +0300 |
---|---|---|
committer | Alessandro Ranellucci <aar@cpan.org> | 2016-03-19 00:40:29 +0300 |
commit | 5ff7511a148bcfcd42c579f5c8e80306376c97d7 (patch) | |
tree | 447b56caa5419f698ae52837598e06576ef948b3 /t | |
parent | e2aae39f151edc5e77054288a95ecd8a8f382bf3 (diff) |
Fixed regression in bridging caused by error in porting. Includes regression test. #3175
Diffstat (limited to 't')
-rw-r--r-- | t/bridges.t | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/t/bridges.t b/t/bridges.t index c7428a195..432d5e7a9 100644 --- a/t/bridges.t +++ b/t/bridges.t @@ -1,4 +1,4 @@ -use Test::More tests => 14; +use Test::More tests => 16; use strict; use warnings; @@ -107,4 +107,30 @@ sub check_angle { return defined $result && $result>=0 && abs($delta) < $tolerance; } +{ + my $config = Slic3r::Config->new_from_defaults; + $config->set('top_solid_layers', 0); # to prevent bridging on sparse infill + $config->set('bridge_speed', 99); + + my $print = Slic3r::Test::init_print('bridge', config => $config); + + my %extrusions = (); # angle => length + Slic3r::GCode::Reader->new->parse(Slic3r::Test::gcode($print), sub { + my ($self, $cmd, $args, $info) = @_; + + if ($cmd eq 'G1' && ($args->{F} // $self->F)/60 == $config->bridge_speed) { + my $line = Slic3r::Line->new_scale( + [ $self->X, $self->Y ], + [ $info->{new_X}, $info->{new_Y} ], + ); + my $angle = $line->direction; + $extrusions{$angle} //= 0; + $extrusions{$angle} += $line->length; + } + }); + ok !!%extrusions, "bridge is generated"; + my ($main_angle) = sort { $extrusions{$b} <=> $extrusions{$a} } keys %extrusions; + is $main_angle, 0, "bridge has the expected direction"; +} + __END__ |