mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-23 22:54:08 -06:00
Refactoring: move ooze prevention, wipe and avoid crossing perimeters into nested classes for better isolation
This commit is contained in:
parent
3605289bbc
commit
c1e26a70f8
5 changed files with 207 additions and 170 deletions
|
@ -100,7 +100,7 @@ sub process_layer {
|
|||
}
|
||||
}
|
||||
$self->skirt_done->{$layer->print_z} = 1;
|
||||
$self->gcodegen->straight_once(1);
|
||||
$self->gcodegen->avoid_crossing_perimeters->straight_once(1);
|
||||
}
|
||||
|
||||
# extrude brim
|
||||
|
@ -110,11 +110,11 @@ sub process_layer {
|
|||
$gcode .= $self->gcodegen->extrude_loop($_, 'brim', $object->config->support_material_speed)
|
||||
for @{$self->print->brim};
|
||||
$self->brim_done(1);
|
||||
$self->gcodegen->straight_once(1);
|
||||
$self->gcodegen->avoid_crossing_perimeters->straight_once(1);
|
||||
}
|
||||
|
||||
for my $copy (@$object_copies) {
|
||||
$self->gcodegen->new_object(1) if ($self->_last_obj_copy // '') ne "$copy";
|
||||
$self->gcodegen->avoid_crossing_perimeters->new_object(1) if ($self->_last_obj_copy // '') ne "$copy";
|
||||
$self->_last_obj_copy("$copy");
|
||||
|
||||
$self->gcodegen->set_origin(Slic3r::Pointf->new(map $self->origin->[$_] + unscale $copy->[$_], X,Y));
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
package Slic3r::GCode::OozePrevention;
|
||||
use Moo;
|
||||
|
||||
use Slic3r::Geometry qw(scale);
|
||||
|
||||
has 'standby_points' => (is => 'rw', required => 1);
|
||||
|
||||
sub pre_toolchange {
|
||||
my ($self, $gcodegen) = @_;
|
||||
|
||||
my $gcode = "";
|
||||
|
||||
# move to the nearest standby point
|
||||
if (@{$self->standby_points}) {
|
||||
my $last_pos = $gcodegen->last_pos->clone;
|
||||
$last_pos->translate(scale +$gcodegen->origin->x, scale +$gcodegen->origin->y); #))
|
||||
my $standby_point = $last_pos->nearest_point($self->standby_points);
|
||||
$standby_point->translate(scale -$gcodegen->origin->x, scale -$gcodegen->origin->y); #))
|
||||
$gcode .= $gcodegen->travel_to($standby_point);
|
||||
}
|
||||
|
||||
if ($gcodegen->config->standby_temperature_delta != 0) {
|
||||
my $temp = defined $gcodegen->layer && $gcodegen->layer->id == 0
|
||||
? $gcodegen->config->get_at('first_layer_temperature', $gcodegen->writer->extruder->id)
|
||||
: $gcodegen->config->get_at('temperature', $gcodegen->writer->extruder->id);
|
||||
# we assume that heating is always slower than cooling, so no need to block
|
||||
$gcode .= $gcodegen->writer->set_temperature($temp + $gcodegen->config->standby_temperature_delta, 0);
|
||||
}
|
||||
|
||||
return $gcode;
|
||||
}
|
||||
|
||||
sub post_toolchange {
|
||||
my ($self, $gcodegen) = @_;
|
||||
|
||||
my $gcode = "";
|
||||
|
||||
if ($gcodegen->config->standby_temperature_delta != 0) {
|
||||
my $temp = defined $gcodegen->layer && $gcodegen->layer->id == 0
|
||||
? $gcodegen->config->get_at('first_layer_temperature', $gcodegen->writer->extruder->id)
|
||||
: $gcodegen->config->get_at('temperature', $gcodegen->writer->extruder->id);
|
||||
$gcode .= $gcodegen->writer->set_temperature($temp, 1);
|
||||
}
|
||||
|
||||
return $gcode;
|
||||
}
|
||||
|
||||
1;
|
Loading…
Add table
Add a link
Reference in a new issue