Bugfix: sometimes holes were detected as contours
This commit is contained in:
parent
133f3a0495
commit
f7a9c9be63
@ -5,7 +5,8 @@ use warnings;
|
|||||||
require Exporter;
|
require Exporter;
|
||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
our @EXPORT_OK = qw(explode_expolygon explode_expolygons safety_offset offset
|
our @EXPORT_OK = qw(explode_expolygon explode_expolygons safety_offset offset
|
||||||
diff_ex diff union_ex intersection_ex PFT_EVENODD JT_MITER JT_ROUND);
|
diff_ex diff union_ex intersection_ex PFT_EVENODD JT_MITER JT_ROUND
|
||||||
|
is_counter_clockwise);
|
||||||
|
|
||||||
use Math::Clipper 1.02 ':all';
|
use Math::Clipper 1.02 ':all';
|
||||||
our $clipper = Math::Clipper->new;
|
our $clipper = Math::Clipper->new;
|
||||||
|
@ -3,7 +3,7 @@ use Moo;
|
|||||||
|
|
||||||
use Math::Clipper ':all';
|
use Math::Clipper ':all';
|
||||||
use Slic3r::Geometry qw(scale collinear X Y A B PI);
|
use Slic3r::Geometry qw(scale collinear X Y A B PI);
|
||||||
use Slic3r::Geometry::Clipper qw(union_ex diff_ex intersection_ex PFT_EVENODD);
|
use Slic3r::Geometry::Clipper qw(union_ex diff_ex intersection_ex is_counter_clockwise);
|
||||||
use XXX;
|
use XXX;
|
||||||
|
|
||||||
# a sequential number of layer, starting at 0
|
# a sequential number of layer, starting at 0
|
||||||
@ -98,7 +98,15 @@ sub make_surfaces {
|
|||||||
my ($loops) = @_;
|
my ($loops) = @_;
|
||||||
|
|
||||||
{
|
{
|
||||||
my $expolygons = union_ex($loops, PFT_EVENODD);
|
# merge contours
|
||||||
|
my $expolygons = union_ex([ grep is_counter_clockwise($_), @$loops ]);
|
||||||
|
|
||||||
|
# subtract holes
|
||||||
|
$expolygons = union_ex([
|
||||||
|
(map @$_, @$expolygons),
|
||||||
|
(grep !is_counter_clockwise($_), @$loops)
|
||||||
|
]);
|
||||||
|
|
||||||
Slic3r::debugf " %d surface(s) having %d holes detected from %d polylines\n",
|
Slic3r::debugf " %d surface(s) having %d holes detected from %d polylines\n",
|
||||||
scalar(@$expolygons), scalar(map $_->holes, @$expolygons), scalar(@$loops);
|
scalar(@$expolygons), scalar(map $_->holes, @$expolygons), scalar(@$loops);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user