From 4a9672bd88257d90e199fef1df5cae504ae1e20e Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci <aar@cpan.org> Date: Sat, 28 Jan 2012 21:52:31 +0100 Subject: [PATCH] Use about 40% less memory --- lib/Slic3r/Print.pm | 7 +++++++ lib/Slic3r/Skein.pm | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 6e2009f05..bdb393b14 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -86,6 +86,9 @@ sub new_from_mesh { # build surfaces from sparse lines $layer->make_surfaces($mesh->make_loops($layer)); + + # free memory + $layer->lines(undef); } # detect slicing errors @@ -244,7 +247,11 @@ sub detect_surfaces_type { (expolygon => $_, surface_type => $surface->surface_type), @$intersection; } + + # free memory + @{$layer->fill_boundaries} = (); } + } sub discover_horizontal_shells { diff --git a/lib/Slic3r/Skein.pm b/lib/Slic3r/Skein.pm index f8ad0a199..7719274ec 100644 --- a/lib/Slic3r/Skein.pm +++ b/lib/Slic3r/Skein.pm @@ -77,6 +77,9 @@ sub go { $self->status_cb->(60, "Generating horizontal shells..."); $print->discover_horizontal_shells; + # free memory + @{$_->surfaces} = () for @{$print->layers}; + # combine fill surfaces to honor the "infill every N layers" option $self->status_cb->(70, "Combining infill..."); $print->infill_every_layers; @@ -112,6 +115,9 @@ sub go { } } + # free memory + @{$_->fill_surfaces} = () for @{$print->layers}; + # output everything to a GCODE file $self->status_cb->(90, "Exporting GCODE..."); $print->export_gcode($self->expanded_output_filepath);