diff --git a/lib/Slic3r/Print/Object.pm b/lib/Slic3r/Print/Object.pm index 9aa6ca7ec..2ca0e0d17 100644 --- a/lib/Slic3r/Print/Object.pm +++ b/lib/Slic3r/Print/Object.pm @@ -908,6 +908,10 @@ sub generate_support_material { my $contact_z = $layer->print_z - $nozzle_diameter * 1.5; ###$contact_z = $layer->print_z - $layer->height; + + # ignore this contact area if it's too low + next if $contact_z < $Slic3r::Config->first_layer_height; + $contact{$contact_z} = [ @contact ]; $overhang{$contact_z} = [ @overhang ]; } @@ -1227,7 +1231,7 @@ sub _compute_support_layers { # enforce first layer height my $first_layer_height = $config->get_value('first_layer_height'); - shift @support_layers while @support_layers && $support_layers[0] < $first_layer_height; + shift @support_layers while @support_layers && $support_layers[0] <= $first_layer_height; unshift @support_layers, $first_layer_height; for (my $i = $#support_layers; $i >= 0; $i--) { @@ -1244,9 +1248,9 @@ sub _compute_support_layers { } } - # remove duplicates + # remove duplicates and make sure all 0.x values have the leading 0 { - my %sl = map { $_ => 1 } @support_layers; + my %sl = map { 1 * $_ => 1 } @support_layers; @support_layers = sort { $a <=> $b } keys %sl; }