From ce1e736b6bcd3b4e28123cf0f98419aa18a3c722 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Tue, 27 May 2014 13:38:41 +0200 Subject: [PATCH] Bugfix: crash when skirt was contained in brim area. Includes regression test. #2058 --- lib/Slic3r/Print.pm | 2 +- t/skirt_brim.t | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 7c4f1b31..0870091c 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -783,7 +783,7 @@ sub make_brim { # if brim touches skirt, make it around skirt too # TODO: calculate actual skirt width (using each extruder's flow in multi-extruder setups) if ($self->config->skirt_distance + (($self->config->skirts - 1) * $flow->spacing) <= $self->config->brim_width) { - push @islands, map @{$_->split_at_first_point->polyline->grow($grow_distance)}, @{$self->skirt}; + push @islands, map @{$_->polygon->split_at_first_point->grow($grow_distance)}, @{$self->skirt}; } my @loops = (); diff --git a/t/skirt_brim.t b/t/skirt_brim.t index b62c9a8b..b04234bb 100644 --- a/t/skirt_brim.t +++ b/t/skirt_brim.t @@ -1,4 +1,4 @@ -use Test::More tests => 2; +use Test::More tests => 3; use strict; use warnings; @@ -69,4 +69,13 @@ use Slic3r::Test; is scalar(grep $_, values %layers_with_brim), 1, "brim is generated"; } +{ + my $config = Slic3r::Config->new_from_defaults; + $config->set('skirts', 1); + $config->set('brim_width', 10); + + my $print = Slic3r::Test::init_print('20mm_cube', config => $config); + ok Slic3r::Test::gcode($print), 'successful G-code generation when skirt is smaller than brim width'; +} + __END__