Bugfix: some holes were filled. #291
This commit is contained in:
parent
f380b1007d
commit
0afb5ad9dd
@ -8,7 +8,7 @@ our @EXPORT_OK = qw(explode_expolygon explode_expolygons safety_offset offset
|
||||
diff_ex diff union_ex intersection_ex xor_ex PFT_EVENODD JT_MITER JT_ROUND
|
||||
is_counter_clockwise);
|
||||
|
||||
use Math::Clipper 1.03 ':all';
|
||||
use Math::Clipper 1.05 ':all';
|
||||
use Slic3r::Geometry qw(scale);
|
||||
our $clipper = Math::Clipper->new;
|
||||
|
||||
|
@ -37,6 +37,21 @@ sub lines {
|
||||
return @lines;
|
||||
}
|
||||
|
||||
sub is_counter_clockwise {
|
||||
my $self = shift;
|
||||
return Math::Clipper::is_counter_clockwise($self);
|
||||
}
|
||||
|
||||
sub make_counter_clockwise {
|
||||
my $self = shift;
|
||||
$self->reverse if !$self->is_counter_clockwise;
|
||||
}
|
||||
|
||||
sub make_clockwise {
|
||||
my $self = shift;
|
||||
$self->reverse if $self->is_counter_clockwise;
|
||||
}
|
||||
|
||||
sub cleanup {
|
||||
my $self = shift;
|
||||
$self->merge_continuous_lines;
|
||||
|
@ -66,21 +66,6 @@ sub reverse {
|
||||
@$self = CORE::reverse @$self;
|
||||
}
|
||||
|
||||
sub is_counter_clockwise {
|
||||
my $self = shift;
|
||||
return Math::Clipper::is_counter_clockwise($self);
|
||||
}
|
||||
|
||||
sub make_counter_clockwise {
|
||||
my $self = shift;
|
||||
$self->reverse if !$self->is_counter_clockwise;
|
||||
}
|
||||
|
||||
sub make_clockwise {
|
||||
my $self = shift;
|
||||
$self->reverse if $self->is_counter_clockwise;
|
||||
}
|
||||
|
||||
sub nearest_point_to {
|
||||
my $self = shift;
|
||||
my ($point) = @_;
|
||||
|
@ -222,8 +222,8 @@ sub detect_surfaces_type {
|
||||
# save surfaces to layer
|
||||
@{$layer->slices} = (@bottom, @top, @internal);
|
||||
|
||||
Slic3r::debugf " layer %d (%d sliced expolygons) has %d bottom, %d top and %d internal surfaces\n",
|
||||
$layer->id, scalar(@{$layer->slices}), scalar(@bottom), scalar(@top), scalar(@internal);
|
||||
Slic3r::debugf " layer %d has %d bottom, %d top and %d internal surfaces\n",
|
||||
$layer->id, scalar(@bottom), scalar(@top), scalar(@internal);
|
||||
}
|
||||
|
||||
# clip surfaces to the fill boundaries
|
||||
|
@ -245,8 +245,10 @@ sub make_loops {
|
||||
$line = $next_line;
|
||||
} while ($first_facet_index != $line->facet_index);
|
||||
|
||||
Slic3r::debugf " Discovered polygon of %d points\n", scalar(@points);
|
||||
push @polygons, Slic3r::Polygon->new(@points);
|
||||
Slic3r::debugf " Discovered %s polygon of %d points\n",
|
||||
($polygons[-1]->is_counter_clockwise ? 'ccw' : 'cw'), scalar(@points)
|
||||
if $Slic3r::debug;
|
||||
pop @polygons if !$polygons[-1]->cleanup;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user