diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm index f57eff59..7031dbd9 100644 --- a/lib/Slic3r/Config.pm +++ b/lib/Slic3r/Config.pm @@ -558,8 +558,8 @@ our $Options = { tooltip => 'Pattern used to generate support material.', cli => 'support-material-pattern=s', type => 'select', - values => [qw(rectilinear honeycomb)], - labels => [qw(rectilinear honeycomb)], + values => [qw(rectilinear rectilinear-grid honeycomb)], + labels => ['rectilinear', 'rectilinear grid', 'honeycomb'], default => 'rectilinear', }, 'support_material_spacing' => { diff --git a/lib/Slic3r/Print/Object.pm b/lib/Slic3r/Print/Object.pm index 248981c6..f628da2a 100644 --- a/lib/Slic3r/Print/Object.pm +++ b/lib/Slic3r/Print/Object.pm @@ -643,9 +643,15 @@ sub generate_support_material { my @support_material_areas = map $_->offset_ex(- 0.5 * $flow->scaled_width), @{union_ex([ map $_->contour, map @$_, values %layers ])}; - my $filler = Slic3r::Fill->filler($Slic3r::Config->support_material_pattern); - $filler->angle($Slic3r::Config->support_material_angle); - { + my $pattern = $Slic3r::Config->support_material_pattern; + my @angles = ($Slic3r::Config->support_material_angle); + if ($pattern eq 'rectilinear-grid') { + $pattern = 'rectilinear'; + push @angles, $angles[0] + 90; + } + my $filler = Slic3r::Fill->filler($pattern); + foreach my $angle (@angles) { + $filler->angle($angle); my @patterns = (); foreach my $expolygon (@support_material_areas) { my @paths = $filler->fill_surface(