mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-11-02 04:31:17 -07:00
Refactor E code and keep track of per-extruder consumend filament
This commit is contained in:
parent
c49330f049
commit
2d366c4852
4 changed files with 29 additions and 29 deletions
|
|
@ -15,7 +15,6 @@ use Time::HiRes qw(gettimeofday tv_interval);
|
|||
has 'config' => (is => 'rw', default => sub { Slic3r::Config->new_from_defaults }, trigger => 1);
|
||||
has 'extra_variables' => (is => 'rw', default => sub {{}});
|
||||
has 'objects' => (is => 'rw', default => sub {[]});
|
||||
has 'total_extrusion_length' => (is => 'rw');
|
||||
has 'processing_time' => (is => 'rw');
|
||||
has 'extruders' => (is => 'rw', default => sub {[]});
|
||||
has 'regions' => (is => 'rw', default => sub {[]});
|
||||
|
|
@ -236,6 +235,7 @@ sub init_extruders {
|
|||
);
|
||||
for my $extruder_id (keys %{{ map {$_ => 1} @used_extruders }}) {
|
||||
$self->extruders->[$extruder_id] = Slic3r::Extruder->new(
|
||||
config => $self->config,
|
||||
id => $extruder_id,
|
||||
map { $_ => $self->config->get($_)->[$extruder_id] // $self->config->get($_)->[0] } #/
|
||||
@{&Slic3r::Extruder::OPTIONS}
|
||||
|
|
@ -484,8 +484,9 @@ sub export_gcode {
|
|||
$self->processing_time - int($self->processing_time/60)*60;
|
||||
|
||||
# TODO: more statistics!
|
||||
printf "Filament required: %.1fmm (%.1fcm3)\n",
|
||||
$self->total_extrusion_length, $self->total_extrusion_volume;
|
||||
print map sprintf("Filament required: %.1fmm (%.1fcm3)\n",
|
||||
$_->absolute_E, $_->extruded_volume/1000),
|
||||
@{$self->extruders};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -895,16 +896,15 @@ sub write_gcode {
|
|||
print $fh $buffer->flush;
|
||||
}
|
||||
|
||||
# save statistic data
|
||||
$self->total_extrusion_length($gcodegen->total_extrusion_length);
|
||||
|
||||
# write end commands to file
|
||||
print $fh $gcodegen->retract if $gcodegen->extruder; # empty prints don't even set an extruder
|
||||
print $fh $gcodegen->set_fan(0);
|
||||
printf $fh "%s\n", $Slic3r::Config->replace_options($Slic3r::Config->end_gcode);
|
||||
|
||||
printf $fh "; filament used = %.1fmm (%.1fcm3)\n",
|
||||
$self->total_extrusion_length, $self->total_extrusion_volume;
|
||||
foreach my $extruder (@{$self->extruders}) {
|
||||
printf $fh "; filament used = %.1fmm (%.1fcm3)\n",
|
||||
$extruder->absolute_E, $extruder->extruded_volume/1000;
|
||||
}
|
||||
|
||||
if ($Slic3r::Config->gcode_comments) {
|
||||
# append full config
|
||||
|
|
@ -920,11 +920,6 @@ sub write_gcode {
|
|||
close $fh;
|
||||
}
|
||||
|
||||
sub total_extrusion_volume {
|
||||
my $self = shift;
|
||||
return $self->total_extrusion_length * ($self->extruders->[0]->filament_diameter**2) * PI/4 / 1000;
|
||||
}
|
||||
|
||||
# this method will return the supplied input file path after expanding its
|
||||
# format variables with their values
|
||||
sub expanded_output_filepath {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue