Minor cleanup and refactoring in Slic3r::GCode

This commit is contained in:
Alessandro Ranellucci 2014-10-25 11:00:08 +02:00
parent 36c1a9d20c
commit e29569a2cd
2 changed files with 8 additions and 11 deletions

View File

@ -28,16 +28,13 @@ has 'layer' => (is => 'rw');
has '_layer_islands' => (is => 'rw'); has '_layer_islands' => (is => 'rw');
has '_upper_layer_islands' => (is => 'rw'); has '_upper_layer_islands' => (is => 'rw');
has '_seam_position' => (is => 'ro', default => sub { {} }); # $object => pos has '_seam_position' => (is => 'ro', default => sub { {} }); # $object => pos
has 'shift_x' => (is => 'rw', default => sub {0} );
has 'shift_y' => (is => 'rw', default => sub {0} );
has 'z' => (is => 'rw');
has 'external_mp' => (is => 'rw'); has 'external_mp' => (is => 'rw');
has 'layer_mp' => (is => 'rw'); has 'layer_mp' => (is => 'rw');
has 'new_object' => (is => 'rw', default => sub {0}); has 'new_object' => (is => 'rw', default => sub {0});
has 'straight_once' => (is => 'rw', default => sub {1}); has 'straight_once' => (is => 'rw', default => sub {1});
has 'elapsed_time' => (is => 'rw', default => sub {0} ); # seconds has 'elapsed_time' => (is => 'rw', default => sub {0} ); # seconds
has 'last_pos' => (is => 'rw', default => sub { Slic3r::Point->new(0,0) } ); has 'last_pos' => (is => 'rw', default => sub { Slic3r::Point->new(0,0) } );
has 'wipe_path' => (is => 'rw'); has '_wipe_path' => (is => 'rw');
sub apply_print_config { sub apply_print_config {
my ($self, $print_config) = @_; my ($self, $print_config) = @_;
@ -64,7 +61,7 @@ sub set_origin {
scale ($self->origin->y - $pointf->y), #- scale ($self->origin->y - $pointf->y), #-
); );
$self->last_pos->translate(@translate); $self->last_pos->translate(@translate);
$self->wipe_path->translate(@translate) if $self->wipe_path; $self->_wipe_path->translate(@translate) if $self->_wipe_path;
$self->origin($pointf); $self->origin($pointf);
} }
@ -189,7 +186,7 @@ sub extrude_loop {
# reset acceleration # reset acceleration
$gcode .= $self->_writer->set_acceleration($self->config->default_acceleration); $gcode .= $self->_writer->set_acceleration($self->config->default_acceleration);
$self->wipe_path($paths[-1]->polyline->clone) if $self->enable_wipe; # TODO: don't limit wipe to last path $self->_wipe_path($paths[-1]->polyline->clone) if $self->enable_wipe; # TODO: don't limit wipe to last path
# make a little move inwards before leaving loop # make a little move inwards before leaving loop
if ($paths[-1]->role == EXTR_ROLE_EXTERNAL_PERIMETER && defined $self->layer && $self->config->perimeters > 1) { if ($paths[-1]->role == EXTR_ROLE_EXTERNAL_PERIMETER && defined $self->layer && $self->config->perimeters > 1) {
@ -301,8 +298,8 @@ sub _extrude_path {
$self->config->gcode_comments ? " ; $description" : ""); $self->config->gcode_comments ? " ; $description" : "");
if ($self->enable_wipe) { if ($self->enable_wipe) {
$self->wipe_path($path->polyline->clone); $self->_wipe_path($path->polyline->clone);
$self->wipe_path->reverse; $self->_wipe_path->reverse;
} }
} }
$gcode .= ";_BRIDGE_FAN_END\n" if $path->is_bridge; $gcode .= ";_BRIDGE_FAN_END\n" if $path->is_bridge;
@ -401,7 +398,7 @@ sub retract {
my $gcode = ""; my $gcode = "";
# wipe (if it's enabled for this extruder and we have a stored wipe path) # wipe (if it's enabled for this extruder and we have a stored wipe path)
if ($self->config->get_at('wipe', $self->_writer->extruder->id) && $self->wipe_path) { if ($self->config->get_at('wipe', $self->_writer->extruder->id) && $self->_wipe_path) {
# Reduce feedrate a bit; travel speed is often too high to move on existing material. # Reduce feedrate a bit; travel speed is often too high to move on existing material.
# Too fast = ripping of existing material; too slow = short wipe path, thus more blob. # Too fast = ripping of existing material; too slow = short wipe path, thus more blob.
my $wipe_speed = $self->_writer->config->travel_speed * 0.8; my $wipe_speed = $self->_writer->config->travel_speed * 0.8;
@ -420,7 +417,7 @@ sub retract {
# (they might be different, for example, in case of loop clipping). # (they might be different, for example, in case of loop clipping).
my $wipe_path = Slic3r::Polyline->new( my $wipe_path = Slic3r::Polyline->new(
$self->last_pos, $self->last_pos,
@{$self->wipe_path}[1..$#{$self->wipe_path}], @{$self->_wipe_path}[1..$#{$self->_wipe_path}],
); );
# #
$wipe_path->clip_end($wipe_path->length - $wipe_dist); $wipe_path->clip_end($wipe_path->length - $wipe_dist);

View File

@ -76,7 +76,7 @@ sub process_layer {
# set new layer - this will change Z and force a retraction if retract_layer_change is enabled # set new layer - this will change Z and force a retraction if retract_layer_change is enabled
$gcode .= $self->gcodegen->change_layer($layer); $gcode .= $self->gcodegen->change_layer($layer);
$gcode .= $self->gcodegen->placeholder_parser->process($self->print->config->layer_gcode, { $gcode .= $self->gcodegen->placeholder_parser->process($self->print->config->layer_gcode, {
layer_num => $self->gcodegen->layer->id, layer_num => $layer->id,
}) . "\n" if $self->print->config->layer_gcode; }) . "\n" if $self->print->config->layer_gcode;
# extrude skirt # extrude skirt