mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-05-17 19:36:48 +08:00
Fixes to retraction and skirt
This commit is contained in:
parent
a1d518f1a2
commit
5a07137def
@ -29,14 +29,14 @@ use Slic3r::Surface;
|
|||||||
use Slic3r::Surface::Collection;
|
use Slic3r::Surface::Collection;
|
||||||
|
|
||||||
# printer options
|
# printer options
|
||||||
our $nozzle_diameter = 0.55;
|
our $nozzle_diameter = 0.5;
|
||||||
our $print_center = [100,100]; # object will be centered around this point
|
our $print_center = [100,100]; # object will be centered around this point
|
||||||
our $use_relative_e_distances = 0;
|
our $use_relative_e_distances = 0;
|
||||||
our $z_offset = 0;
|
our $z_offset = 0;
|
||||||
|
|
||||||
# filament options
|
# filament options
|
||||||
our $filament_diameter = 3; # mm
|
our $filament_diameter = 3; # mm
|
||||||
our $filament_packing_density = 0.85;
|
our $filament_packing_density = 1;
|
||||||
|
|
||||||
# speed options
|
# speed options
|
||||||
our $print_feed_rate = 60; # mm/sec
|
our $print_feed_rate = 60; # mm/sec
|
||||||
|
@ -76,7 +76,7 @@ sub extrude {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# retract
|
# retract
|
||||||
if (Slic3r::Geometry::distance_between_points($self->last_pos, $path->points->[0]->p)
|
if (Slic3r::Geometry::distance_between_points($self->last_pos, $path->points->[0]->p) * $Slic3r::resolution
|
||||||
>= $Slic3r::retract_before_travel) {
|
>= $Slic3r::retract_before_travel) {
|
||||||
$gcode .= $self->retract;
|
$gcode .= $self->retract;
|
||||||
}
|
}
|
||||||
@ -105,7 +105,6 @@ sub extrude {
|
|||||||
sub retract {
|
sub retract {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return "" unless $Slic3r::retract_length > 0
|
return "" unless $Slic3r::retract_length > 0
|
||||||
&& $self->extrusion_distance > 0
|
|
||||||
&& !$self->retracted;
|
&& !$self->retracted;
|
||||||
|
|
||||||
$self->retracted(1);
|
$self->retracted(1);
|
||||||
|
@ -57,7 +57,7 @@ sub points_coincide {
|
|||||||
|
|
||||||
sub distance_between_points {
|
sub distance_between_points {
|
||||||
my ($p1, $p2) = @_;
|
my ($p1, $p2) = @_;
|
||||||
return sqrt(($p1->[X] - $p2->[X])**2 + ($p1->[Y] - $p2->[Y])**2);
|
return sqrt((($p1->[X] - $p2->[X])**2) + ($p1->[Y] - $p2->[Y])**2);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub point_in_polygon {
|
sub point_in_polygon {
|
||||||
|
@ -84,7 +84,7 @@ sub make_perimeter {
|
|||||||
# draw outlines from outside to inside
|
# draw outlines from outside to inside
|
||||||
for (my $i = $Slic3r::skirts - 1; $i >= 0; $i--) {
|
for (my $i = $Slic3r::skirts - 1; $i >= 0; $i--) {
|
||||||
my $distance = ($Slic3r::skirt_distance + ($Slic3r::flow_width * $i)) / $Slic3r::resolution;
|
my $distance = ($Slic3r::skirt_distance + ($Slic3r::flow_width * $i)) / $Slic3r::resolution;
|
||||||
my $outline = offset([$convex_hull_points], $distance, $Slic3r::resolution * 100000, JT_ROUND);
|
my $outline = offset([$convex_hull_points], $distance, $Slic3r::resolution * 100, JT_ROUND);
|
||||||
push @{ $layer->skirts }, Slic3r::ExtrusionLoop->cast([ @{$outline->[0]} ]);
|
push @{ $layer->skirts }, Slic3r::ExtrusionLoop->cast([ @{$outline->[0]} ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user