mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-07 23:17:35 -06:00
New fill types (hilbertcurve, archimedeanchords, octagramspiral) and ability to use different patterns for solid layers. #20
This commit is contained in:
parent
041e9877a3
commit
038caddcda
22 changed files with 391 additions and 93 deletions
|
@ -1,7 +1,11 @@
|
|||
package Slic3r::Fill;
|
||||
use Moo;
|
||||
|
||||
use Slic3r::Fill::ArchimedeanChords;
|
||||
use Slic3r::Fill::Base;
|
||||
use Slic3r::Fill::Flowsnake;
|
||||
use Slic3r::Fill::HilbertCurve;
|
||||
use Slic3r::Fill::OctagramSpiral;
|
||||
use Slic3r::Fill::Rectilinear;
|
||||
use Slic3r::Fill::Rectilinear2;
|
||||
|
||||
|
@ -11,14 +15,18 @@ has 'print' => (is => 'ro', required => 1);
|
|||
has 'fillers' => (is => 'rw', default => sub { {} });
|
||||
|
||||
our %FillTypes = (
|
||||
rectilinear => 'Slic3r::Fill::Rectilinear',
|
||||
rectilinear2 => 'Slic3r::Fill::Rectilinear2',
|
||||
archimedeanchords => 'Slic3r::Fill::ArchimedeanChords',
|
||||
rectilinear => 'Slic3r::Fill::Rectilinear',
|
||||
rectilinear2 => 'Slic3r::Fill::Rectilinear2',
|
||||
flowsnake => 'Slic3r::Fill::Flowsnake',
|
||||
octagramspiral => 'Slic3r::Fill::OctagramSpiral',
|
||||
hilbertcurve => 'Slic3r::Fill::HilbertCurve',
|
||||
);
|
||||
|
||||
sub BUILD {
|
||||
my $self = shift;
|
||||
$self->fillers->{$_} ||= $FillTypes{$_}->new(print => $self->print)
|
||||
for ('rectilinear', $Slic3r::fill_type);
|
||||
for ('rectilinear', $Slic3r::fill_pattern, $Slic3r::solid_fill_pattern);
|
||||
}
|
||||
|
||||
sub make_fill {
|
||||
|
@ -38,13 +46,15 @@ sub make_fill {
|
|||
SURFACE: foreach my $surface (@$surfaces) {
|
||||
Slic3r::debugf " Processing surface %s:\n", $surface->id;
|
||||
|
||||
my $filler = $Slic3r::fill_type;
|
||||
my $filler = $Slic3r::fill_pattern;
|
||||
my $density = $Slic3r::fill_density;
|
||||
|
||||
# force 100% density and rectilinear fill for external surfaces
|
||||
if ($surface->surface_type ne 'internal') {
|
||||
$density = 1;
|
||||
$filler = 'rectilinear';
|
||||
$filler = $surface->isa('Slic3r::Surface::Bridge')
|
||||
? 'rectilinear'
|
||||
: $Slic3r::solid_fill_pattern;
|
||||
} else {
|
||||
next SURFACE unless $density > 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue