mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-18 20:28:08 -06:00
Very large refactoring. Ditched Slic3r::Polyline::Closed and reorganized geometric classes.
This commit is contained in:
parent
2def6a9787
commit
8ed91a8ec4
20 changed files with 293 additions and 349 deletions
|
@ -1,17 +1,10 @@
|
|||
package Slic3r::Surface;
|
||||
use Moo;
|
||||
|
||||
has 'contour' => (
|
||||
is => 'ro',
|
||||
#isa => 'Slic3r::Polyline::Closed',
|
||||
required => 1,
|
||||
);
|
||||
|
||||
has 'holes' => (
|
||||
traits => ['Array'],
|
||||
is => 'rw',
|
||||
#isa => 'ArrayRef[Slic3r::Polyline::Closed]',
|
||||
default => sub { [] },
|
||||
has 'expolygon' => (
|
||||
is => 'ro',
|
||||
required => 1,
|
||||
handles => [qw(encloses_point lines contour holes)],
|
||||
);
|
||||
|
||||
has 'surface_type' => (
|
||||
|
@ -24,31 +17,6 @@ has 'depth_layers' => (is => 'ro', default => sub {1});
|
|||
|
||||
has 'bridge_angle' => (is => 'ro');
|
||||
|
||||
sub cast_from_polygon {
|
||||
my $class = shift;
|
||||
my ($polygon, %args) = @_;
|
||||
|
||||
return $class->new(
|
||||
contour => Slic3r::Polyline::Closed->cast($polygon),
|
||||
%args,
|
||||
);
|
||||
}
|
||||
|
||||
sub cast_from_expolygon {
|
||||
my $class = shift;
|
||||
my ($expolygon, %args) = @_;
|
||||
|
||||
if (ref $expolygon eq 'HASH') {
|
||||
$expolygon = Slic3r::ExPolygon->new($expolygon);
|
||||
}
|
||||
|
||||
return $class->new(
|
||||
contour => $expolygon->contour->closed_polyline,
|
||||
holes => [ map $_->closed_polyline, $expolygon->holes ],
|
||||
%args,
|
||||
);
|
||||
}
|
||||
|
||||
# static method to group surfaces having same surface_type, bridge_angle and depth_layers
|
||||
sub group {
|
||||
my $class = shift;
|
||||
|
@ -73,7 +41,7 @@ sub add_hole {
|
|||
my $self = shift;
|
||||
my ($hole) = @_;
|
||||
|
||||
push @{ $self->holes }, $hole;
|
||||
push @$self, $hole;
|
||||
}
|
||||
|
||||
sub id {
|
||||
|
@ -81,15 +49,6 @@ sub id {
|
|||
return $self->contour->id;
|
||||
}
|
||||
|
||||
sub encloses_point {
|
||||
my $self = shift;
|
||||
my ($point) = @_;
|
||||
|
||||
return 0 if !$self->contour->encloses_point($point);
|
||||
return 0 if grep $_->encloses_point($point), @{ $self->holes };
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub clipper_polygon {
|
||||
my $self = shift;
|
||||
|
||||
|
@ -102,18 +61,8 @@ sub clipper_polygon {
|
|||
}
|
||||
|
||||
sub p {
|
||||
my $self = shift;
|
||||
return ($self->contour->p, map $_->p, @{$self->holes});
|
||||
}
|
||||
|
||||
sub expolygon {
|
||||
my $self = shift;
|
||||
return Slic3r::ExPolygon->new($self->contour->p, map $_->p, @{$self->holes});
|
||||
}
|
||||
|
||||
sub lines {
|
||||
my $self = shift;
|
||||
return @{ $self->contour->lines }, map @{ $_->lines }, @{ $self->holes };
|
||||
my $self = shift;use XXX; ZZZ $self->expolygon if !eval { 1 if @{$self->expolygon}; 1 };
|
||||
return @{$self->expolygon};
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue