No need for a role to identify small perimeters
This commit is contained in:
parent
2564317fb4
commit
283809f5c2
@ -3,7 +3,7 @@ use Moo;
|
|||||||
|
|
||||||
require Exporter;
|
require Exporter;
|
||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
our @EXPORT_OK = qw(EXTR_ROLE_PERIMETER EXTR_ROLE_SMALLPERIMETER EXTR_ROLE_EXTERNAL_PERIMETER
|
our @EXPORT_OK = qw(EXTR_ROLE_PERIMETER EXTR_ROLE_EXTERNAL_PERIMETER
|
||||||
EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER
|
EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER
|
||||||
EXTR_ROLE_FILL EXTR_ROLE_SOLIDFILL EXTR_ROLE_TOPSOLIDFILL EXTR_ROLE_BRIDGE EXTR_ROLE_SKIRT
|
EXTR_ROLE_FILL EXTR_ROLE_SOLIDFILL EXTR_ROLE_TOPSOLIDFILL EXTR_ROLE_BRIDGE EXTR_ROLE_SKIRT
|
||||||
EXTR_ROLE_SUPPORTMATERIAL EXTR_ROLE_GAPFILL);
|
EXTR_ROLE_SUPPORTMATERIAL EXTR_ROLE_GAPFILL);
|
||||||
@ -24,7 +24,6 @@ has 'flow_spacing' => (is => 'rw');
|
|||||||
has 'role' => (is => 'rw', required => 1);
|
has 'role' => (is => 'rw', required => 1);
|
||||||
|
|
||||||
use constant EXTR_ROLE_PERIMETER => 0;
|
use constant EXTR_ROLE_PERIMETER => 0;
|
||||||
use constant EXTR_ROLE_SMALLPERIMETER => 1;
|
|
||||||
use constant EXTR_ROLE_EXTERNAL_PERIMETER => 2;
|
use constant EXTR_ROLE_EXTERNAL_PERIMETER => 2;
|
||||||
use constant EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER => 3;
|
use constant EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER => 3;
|
||||||
use constant EXTR_ROLE_FILL => 4;
|
use constant EXTR_ROLE_FILL => 4;
|
||||||
|
@ -42,7 +42,6 @@ has 'speeds' => (
|
|||||||
# assign speeds to roles
|
# assign speeds to roles
|
||||||
my %role_speeds = (
|
my %role_speeds = (
|
||||||
&EXTR_ROLE_PERIMETER => 'perimeter',
|
&EXTR_ROLE_PERIMETER => 'perimeter',
|
||||||
&EXTR_ROLE_SMALLPERIMETER => 'small_perimeter',
|
|
||||||
&EXTR_ROLE_EXTERNAL_PERIMETER => 'external_perimeter',
|
&EXTR_ROLE_EXTERNAL_PERIMETER => 'external_perimeter',
|
||||||
&EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER => 'perimeter',
|
&EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER => 'perimeter',
|
||||||
&EXTR_ROLE_FILL => 'infill',
|
&EXTR_ROLE_FILL => 'infill',
|
||||||
@ -179,8 +178,15 @@ sub extrude_path {
|
|||||||
# calculate extrusion length per distance unit
|
# calculate extrusion length per distance unit
|
||||||
my $e = $self->extruder->e_per_mm3 * $area;
|
my $e = $self->extruder->e_per_mm3 * $area;
|
||||||
|
|
||||||
# extrude arc or line
|
# set speed
|
||||||
$self->speed( $role_speeds{$path->role} || die "Unknown role: " . $path->role );
|
$self->speed( $role_speeds{$path->role} || die "Unknown role: " . $path->role );
|
||||||
|
if ($path->role == EXTR_ROLE_PERIMETER || $path->role == EXTR_ROLE_EXTERNAL_PERIMETER || $path->role == EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER) {
|
||||||
|
if (abs($path->length) <= &Slic3r::SMALL_PERIMETER_LENGTH) {
|
||||||
|
$self->speed('small_perimeter');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# extrude arc or line
|
||||||
my $path_length = 0;
|
my $path_length = 0;
|
||||||
if ($path->isa('Slic3r::ExtrusionPath::Arc')) {
|
if ($path->isa('Slic3r::ExtrusionPath::Arc')) {
|
||||||
$path_length = unscale $path->length;
|
$path_length = unscale $path->length;
|
||||||
|
@ -382,7 +382,7 @@ sub _add_perimeter {
|
|||||||
return unless $polygon->is_printable($self->perimeter_flow->width);
|
return unless $polygon->is_printable($self->perimeter_flow->width);
|
||||||
push @{ $self->perimeters }, Slic3r::ExtrusionLoop->pack(
|
push @{ $self->perimeters }, Slic3r::ExtrusionLoop->pack(
|
||||||
polygon => $polygon,
|
polygon => $polygon,
|
||||||
role => (abs($polygon->length) <= &Slic3r::SMALL_PERIMETER_LENGTH) ? EXTR_ROLE_SMALLPERIMETER : ($role // EXTR_ROLE_PERIMETER), #/
|
role => ($role // EXTR_ROLE_PERIMETER),
|
||||||
flow_spacing => $self->perimeter_flow->spacing,
|
flow_spacing => $self->perimeter_flow->spacing,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user