mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-11-02 20:51:23 -07:00
Massive reduction of memory usage (down to one third).
This commit is contained in:
parent
882a022e3a
commit
b246480535
10 changed files with 75 additions and 31 deletions
|
|
@ -284,19 +284,14 @@ sub make_perimeters {
|
|||
}
|
||||
}
|
||||
|
||||
foreach my $hole (reverse @holes) {
|
||||
push @{ $self->perimeters }, Slic3r::ExtrusionLoop->new(polygon => $hole, role => EXTR_ROLE_PERIMETER);
|
||||
# do holes, then contours starting from innermost one
|
||||
foreach my $polygon ((reverse @holes), (map $_->contour, map @$_, reverse @$island)) {
|
||||
next unless $polygon->is_printable;
|
||||
push @{ $self->perimeters }, Slic3r::ExtrusionLoop->new(
|
||||
polygon => $polygon,
|
||||
role => (abs($polygon->length) <= $Slic3r::small_perimeter_length) ? EXTR_ROLE_SMALLPERIMETER : EXTR_ROLE_PERIMETER,
|
||||
);
|
||||
}
|
||||
|
||||
# do contours starting from innermost one
|
||||
foreach my $contour (map $_->contour, map @$_, reverse @$island) {
|
||||
push @{ $self->perimeters }, Slic3r::ExtrusionLoop->new(polygon => $contour, role => EXTR_ROLE_PERIMETER);
|
||||
}
|
||||
}
|
||||
|
||||
# detect small perimeters by checking their area
|
||||
for (@{ $self->perimeters }) {
|
||||
$_->role(EXTR_ROLE_SMALLPERIMETER) if abs($_->polygon->length) <= $Slic3r::small_perimeter_length;
|
||||
}
|
||||
|
||||
# add thin walls as perimeters
|
||||
|
|
@ -384,16 +379,6 @@ sub remove_small_surfaces {
|
|||
}
|
||||
}
|
||||
|
||||
sub remove_small_perimeters {
|
||||
my $self = shift;
|
||||
my @good_perimeters = grep $_->is_printable, @{$self->perimeters};
|
||||
Slic3r::debugf "removed %d unprintable perimeters at layer %d\n",
|
||||
(@{$self->perimeters} - @good_perimeters), $self->id
|
||||
if @good_perimeters != @{$self->perimeters};
|
||||
|
||||
@{$self->perimeters} = @good_perimeters;
|
||||
}
|
||||
|
||||
# make bridges printable
|
||||
sub process_bridges {
|
||||
my $self = shift;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue