From d38503bf44fbc5740fbf47248d4e73a2ad5096f6 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 29 Dec 2014 14:29:21 +0100 Subject: [PATCH] Bugfix: downwards interface detection might cause a crash --- lib/Slic3r/Print/SupportMaterial.pm | 30 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/Slic3r/Print/SupportMaterial.pm b/lib/Slic3r/Print/SupportMaterial.pm index a738c1dd8..7e23a75c7 100644 --- a/lib/Slic3r/Print/SupportMaterial.pm +++ b/lib/Slic3r/Print/SupportMaterial.pm @@ -442,23 +442,25 @@ sub generate_bottom_interface_layers { my $z = $support_z->[$layer_id]; next unless $z > $top_z; - # get the support material area that should be considered interface - my $interface_area = intersection( - $base->{$layer_id}, - $this, - ); + if ($base->{$layer_id}) { + # get the support material area that should be considered interface + my $interface_area = intersection( + $base->{$layer_id}, + $this, + ); - # discard too small areas - $interface_area = [ grep abs($_->area) >= $area_threshold, @$interface_area ]; + # discard too small areas + $interface_area = [ grep abs($_->area) >= $area_threshold, @$interface_area ]; - # subtract new interface area from base - $base->{$layer_id} = diff( - $base->{$layer_id}, - $interface_area, - ); + # subtract new interface area from base + $base->{$layer_id} = diff( + $base->{$layer_id}, + $interface_area, + ); - # add new interface area to interface - push @{$interface->{$layer_id}}, @$interface_area; + # add new interface area to interface + push @{$interface->{$layer_id}}, @$interface_area; + } $interface_layers++; last if $interface_layers == $self->object_config->support_material_interface_layers;