Finished porting PlaceholderParser to XS
This commit is contained in:
parent
249088b4f8
commit
580d28d071
10 changed files with 87 additions and 98 deletions
|
@ -48,7 +48,6 @@ use Slic3r::GCode;
|
|||
use Slic3r::GCode::ArcFitting;
|
||||
use Slic3r::GCode::CoolingBuffer;
|
||||
use Slic3r::GCode::MotionPlanner;
|
||||
use Slic3r::GCode::PlaceholderParser;
|
||||
use Slic3r::GCode::PressureRegulator;
|
||||
use Slic3r::GCode::Reader;
|
||||
use Slic3r::GCode::SpiralVase;
|
||||
|
|
|
@ -482,10 +482,10 @@ sub set_extruder {
|
|||
|
||||
# append custom toolchange G-code
|
||||
if (defined $self->writer->extruder && $self->config->toolchange_gcode) {
|
||||
$gcode .= sprintf "%s\n", $self->placeholder_parser->process($self->config->toolchange_gcode, {
|
||||
previous_extruder => $self->writer->extruder->id,
|
||||
next_extruder => $extruder_id,
|
||||
});
|
||||
my $pp = $self->placeholder_parser->clone;
|
||||
$pp->set('previous_extruder' => $self->writer->extruder->id);
|
||||
$pp->set('next_extruder' => $extruder_id);
|
||||
$gcode .= sprintf "%s\n", $pp->process($self->config->toolchange_gcode);
|
||||
}
|
||||
|
||||
# if ooze prevention is enabled, park current extruder in the nearest
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
package Slic3r::GCode::PlaceholderParser;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
sub process {
|
||||
my ($self, $string, $extra) = @_;
|
||||
|
||||
# extra variables have priority over the stored ones
|
||||
if ($extra) {
|
||||
my $regex = join '|', keys %$extra;
|
||||
$string =~ s/\[($regex)\]/$extra->{$1}/eg;
|
||||
}
|
||||
{
|
||||
my $regex = join '|', @{$self->_single_keys};
|
||||
$string =~ s/\[($regex)\]/$self->_single_get("$1")/eg;
|
||||
}
|
||||
{
|
||||
my $regex = join '|', @{$self->_multiple_keys};
|
||||
$string =~ s/\[($regex)\]/$self->_multiple_get("$1")/egx;
|
||||
|
||||
# unhandled indices are populated using the first value
|
||||
$string =~ s/\[($regex)_\d+\]/$self->_multiple_get("$1")/egx;
|
||||
}
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
1;
|
|
@ -14,16 +14,6 @@ use Slic3r::Print::State ':steps';
|
|||
|
||||
our $status_cb;
|
||||
|
||||
sub new {
|
||||
# TODO: port PlaceholderParser methods to C++, then its own constructor
|
||||
# can call them and no need for this new() method at all
|
||||
my ($class) = @_;
|
||||
my $self = $class->_new;
|
||||
$self->placeholder_parser->apply_env_variables;
|
||||
$self->placeholder_parser->update_timestamp;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub set_status_cb {
|
||||
my ($class, $cb) = @_;
|
||||
$status_cb = $cb;
|
||||
|
|
|
@ -378,15 +378,19 @@ sub process_layer {
|
|||
}
|
||||
|
||||
# set new layer - this will change Z and force a retraction if retract_layer_change is enabled
|
||||
$gcode .= $self->_gcodegen->placeholder_parser->process($self->print->config->before_layer_gcode, {
|
||||
layer_num => $self->_gcodegen->layer_index + 1,
|
||||
layer_z => $layer->print_z,
|
||||
}) . "\n" if $self->print->config->before_layer_gcode;
|
||||
if ($self->print->config->before_layer_gcode) {
|
||||
my $pp = $self->_gcodegen->placeholder_parser->clone;
|
||||
$pp->set('layer_num' => $self->_gcodegen->layer_index + 1);
|
||||
$pp->set('layer_z' => $layer->print_z);
|
||||
$gcode .= $pp->process($self->print->config->before_layer_gcode) . "\n";
|
||||
}
|
||||
$gcode .= $self->_gcodegen->change_layer($layer); # this will increase $self->_gcodegen->layer_index
|
||||
$gcode .= $self->_gcodegen->placeholder_parser->process($self->print->config->layer_gcode, {
|
||||
layer_num => $self->_gcodegen->layer_index,
|
||||
layer_z => $layer->print_z,
|
||||
}) . "\n" if $self->print->config->layer_gcode;
|
||||
if ($self->print->config->layer_gcode) {
|
||||
my $pp = $self->_gcodegen->placeholder_parser->clone;
|
||||
$pp->set('layer_num' => $self->_gcodegen->layer_index);
|
||||
$pp->set('layer_z' => $layer->print_z);
|
||||
$gcode .= $pp->process($self->print->config->layer_gcode) . "\n";
|
||||
}
|
||||
|
||||
# extrude skirt along raft layers and normal object layers
|
||||
# (not along interlaced support material layers)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue