Apply Douglas-Peucker to all paths before generating G-code

This commit is contained in:
Alessandro Ranellucci 2012-11-18 17:38:08 +01:00
parent 427e3c1720
commit c99ff0cfe2
5 changed files with 6 additions and 4 deletions

View file

@ -57,7 +57,8 @@ use Slic3r::TriangleMesh;
eval "use Slic3r::Build";
use constant SCALING_FACTOR => 0.000001;
use constant RESOLUTION => 0.01;
use constant RESOLUTION => 0.0125;
use constant SCALED_RESOLUTION => RESOLUTION / SCALING_FACTOR;
use constant OVERLAP_FACTOR => 1;
use constant SMALL_PERIMETER_LENGTH => (6.5 / SCALING_FACTOR) * 2 * PI;
use constant LOOP_CLIPPING_LENGTH_OVER_SPACING => 0.15;

View file

@ -15,7 +15,7 @@ use Slic3r::Geometry qw(PI X Y epsilon deg2rad rotate_points);
has 'polyline' => (
is => 'rw',
required => 1,
handles => [qw(merge_continuous_lines lines length reverse clip_end)],
handles => [qw(merge_continuous_lines lines length reverse clip_end simplify)],
);
# height is the vertical thickness of the extrusion expressed in mm

View file

@ -119,6 +119,7 @@ sub extrude_path {
my ($path, $description, $recursive) = @_;
$path = $path->unpack if $path->isa('Slic3r::ExtrusionPath::Packed');
$path->simplify(&Slic3r::SCALED_RESOLUTION);
# detect arcs
if ($Slic3r::Config->gcode_arcs && !$recursive) {

View file

@ -228,7 +228,7 @@ sub make_perimeters {
# create one more offset to be used as boundary for fill
{
my @fill_boundaries = map $_->offset_ex(-$distance), @last_offsets;
$_->simplify(scale &Slic3r::RESOLUTION) for @fill_boundaries;
$_->simplify(&Slic3r::SCALED_RESOLUTION) for @fill_boundaries;
push @{ $self->surfaces }, @fill_boundaries;
}

View file

@ -341,7 +341,7 @@ sub export_gcode {
# simplify slices (both layer and region slices),
# we only need the max resolution for perimeters
foreach my $layer (map @{$_->layers}, @{$self->objects}) {
$_->simplify(scale &Slic3r::RESOLUTION)
$_->simplify(&Slic3r::SCALED_RESOLUTION)
for @{$layer->slices}, (map $_->expolygon, map @{$_->slices}, @{$layer->regions});
}