mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-31 20:51:12 -06:00
New separate options for retraction length to be used when switching tools
This commit is contained in:
parent
075213c731
commit
9e682924c7
6 changed files with 58 additions and 17 deletions
|
|
@ -607,6 +607,26 @@ END
|
|||
deserialize => $deserialize_comma,
|
||||
default => [0],
|
||||
},
|
||||
'retract_length_toolchange' => {
|
||||
label => 'Length',
|
||||
tooltip => 'When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder).',
|
||||
sidetext => 'mm (zero to disable)',
|
||||
cli => 'retract-length-toolchange=f@',
|
||||
type => 'f',
|
||||
serialize => $serialize_comma,
|
||||
deserialize => $deserialize_comma,
|
||||
default => [3],
|
||||
},
|
||||
'retract_restart_extra_toolchange' => {
|
||||
label => 'Extra length on restart',
|
||||
tooltip => 'When the retraction is compensated after changing tool, the extruder will push this additional amount of filament.',
|
||||
sidetext => 'mm',
|
||||
cli => 'retract-restart-extra-toolchange=f@',
|
||||
type => 'f',
|
||||
serialize => $serialize_comma,
|
||||
deserialize => $deserialize_comma,
|
||||
default => [0],
|
||||
},
|
||||
|
||||
# cooling options
|
||||
'cooling' => {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ use constant OPTIONS => [qw(
|
|||
extruder_offset
|
||||
nozzle_diameter filament_diameter extrusion_multiplier temperature first_layer_temperature
|
||||
retract_length retract_lift retract_speed retract_restart_extra retract_before_travel
|
||||
retract_length_toolchange retract_restart_extra_toolchange
|
||||
)];
|
||||
has $_ => (is => 'ro', required => 1) for @{&OPTIONS};
|
||||
|
||||
|
|
|
|||
|
|
@ -196,12 +196,15 @@ sub retract {
|
|||
my $self = shift;
|
||||
my %params = @_;
|
||||
|
||||
return "" unless $self->extruder->retract_length > 0
|
||||
&& !$self->extruder->retracted;
|
||||
my ($length, $restart_extra) = $params{toolchange}
|
||||
? ($self->extruder->retract_length_toolchange, $self->extruder->retract_restart_extra_toolchange)
|
||||
: ($self->extruder->retract_length, $self->extruder->retract_restart_extra);
|
||||
|
||||
return "" unless $length > 0 && !$self->extruder->retracted;
|
||||
|
||||
# prepare moves
|
||||
$self->speed('retract');
|
||||
my $retract = [undef, undef, -$self->extruder->retract_length, "retract"];
|
||||
my $retract = [undef, undef, -$length, "retract"];
|
||||
my $lift = ($self->extruder->retract_lift == 0 || defined $params{move_z})
|
||||
? undef
|
||||
: [undef, $self->z + $self->extruder->retract_lift, 0, 'lift plate during retraction'];
|
||||
|
|
@ -231,7 +234,7 @@ sub retract {
|
|||
$gcode .= $self->G1(@$lift);
|
||||
}
|
||||
}
|
||||
$self->extruder->retracted($self->extruder->retract_length + $self->extruder->retract_restart_extra);
|
||||
$self->extruder->retracted($length + $restart_extra);
|
||||
$self->lifted($self->extruder->retract_lift) if $lift;
|
||||
|
||||
# reset extrusion distance during retracts
|
||||
|
|
@ -378,7 +381,7 @@ sub set_tool {
|
|||
return "" if $self->extruder_idx == $tool;
|
||||
|
||||
$self->extruder_idx($tool);
|
||||
return $self->retract
|
||||
return $self->retract(toolchange => 1)
|
||||
. (sprintf "T%d%s\n", $tool, ($Slic3r::Config->gcode_comments ? ' ; change tool' : ''))
|
||||
. $self->reset_e;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -583,7 +583,8 @@ sub build {
|
|||
$self->_build_extruder_pages;
|
||||
}
|
||||
|
||||
sub _extruder_options { qw(nozzle_diameter extruder_offset retract_length retract_lift retract_speed retract_restart_extra retract_before_travel) }
|
||||
sub _extruder_options { qw(nozzle_diameter extruder_offset retract_length retract_lift retract_speed retract_restart_extra retract_before_travel
|
||||
retract_length_toolchange retract_restart_extra_toolchange) }
|
||||
|
||||
sub config {
|
||||
my $self = shift;
|
||||
|
|
@ -619,6 +620,13 @@ sub _build_extruder_pages {
|
|||
qw(retract_length retract_lift retract_speed retract_restart_extra retract_before_travel)
|
||||
],
|
||||
},
|
||||
{
|
||||
title => 'Retraction when tool is disabled (advanced settings for multi-extruder setups)',
|
||||
options => [
|
||||
map "${_}#${extruder_idx}",
|
||||
qw(retract_length_toolchange retract_restart_extra_toolchange)
|
||||
],
|
||||
},
|
||||
]);
|
||||
$self->{extruder_pages}[$extruder_idx]{disabled} = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue