Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2016-12-22 01:09:58 +0300
committerbubnikv <bubnikv@gmail.com>2017-02-21 16:02:47 +0300
commita65c9ba0839bcfc4363e369294bdcc3ceeb949d2 (patch)
tree6eeccd31a50a62e1a1279d67926e80a4c19e8890 /t
parentc517b0d8f17ced2b93c63f47aa4cc12eed268801 (diff)
Ported CoolingBuffer to C++/XS
Diffstat (limited to 't')
-rw-r--r--t/cooling.t45
1 files changed, 33 insertions, 12 deletions
diff --git a/t/cooling.t b/t/cooling.t
index f39fa0f52..2d76bf747 100644
--- a/t/cooling.t
+++ b/t/cooling.t
@@ -12,20 +12,17 @@ BEGIN {
use Slic3r;
use Slic3r::Test;
+my $gcodegen;
sub buffer {
my $config = shift || Slic3r::Config->new;
my $print_config = Slic3r::Config::Print->new;
$print_config->apply_dynamic($config);
- my $gcodegen = Slic3r::GCode->new;
+ $gcodegen = Slic3r::GCode->new;
$gcodegen->apply_print_config($print_config);
$gcodegen->set_layer_count(10);
- my $buffer = Slic3r::GCode::CoolingBuffer->new(
- config => $print_config,
- gcodegen => $gcodegen,
- );
- return $buffer;
+ return Slic3r::GCode::CoolingBuffer->new($gcodegen);
}
my $config = Slic3r::Config->new_from_defaults;
@@ -33,14 +30,14 @@ $config->set('disable_fan_first_layers', 0);
{
my $buffer = buffer($config);
- $buffer->gcodegen->set_elapsed_time($buffer->config->slowdown_below_layer_time + 1);
+ $buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time + 1);
my $gcode = $buffer->append('G1 F3000;_EXTRUDE_SET_SPEED\nG1 X100 E1', 0, 0, 0.4) . $buffer->flush;
like $gcode, qr/F3000/, 'speed is not altered when elapsed time is greater than slowdown threshold';
}
{
my $buffer = buffer($config);
- $buffer->gcodegen->set_elapsed_time($buffer->config->slowdown_below_layer_time - 1);
+ $buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time - 1);
my $gcode = $buffer->append(
"G1 X50 F2500\n" .
"G1 F3000;_EXTRUDE_SET_SPEED\n" .
@@ -55,7 +52,7 @@ $config->set('disable_fan_first_layers', 0);
{
my $buffer = buffer($config);
- $buffer->gcodegen->set_elapsed_time($buffer->config->fan_below_layer_time + 1);
+ $buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time + 1);
my $gcode = $buffer->append('G1 X100 E1 F3000', 0, 0, 0.4) . $buffer->flush;
unlike $gcode, qr/M106/, 'fan is not activated when elapsed time is greater than fan threshold';
}
@@ -65,7 +62,7 @@ $config->set('disable_fan_first_layers', 0);
my $gcode = "";
for my $obj_id (0 .. 1) {
# use an elapsed time which is < the slowdown threshold but greater than it when summed twice
- $buffer->gcodegen->set_elapsed_time($buffer->config->slowdown_below_layer_time - 1);
+ $buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time - 1);
$gcode .= $buffer->append("G1 X100 E1 F3000\n", $obj_id, 0, 0.4);
}
$gcode .= $buffer->flush;
@@ -78,7 +75,7 @@ $config->set('disable_fan_first_layers', 0);
for my $layer_id (0 .. 1) {
for my $obj_id (0 .. 1) {
# use an elapsed time which is < the threshold but greater than it when summed twice
- $buffer->gcodegen->set_elapsed_time($buffer->config->fan_below_layer_time - 1);
+ $buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time - 1);
$gcode .= $buffer->append("G1 X100 E1 F3000\n", $obj_id, $layer_id, 0.4 + 0.4*$layer_id + 0.1*$obj_id); # print same layer at distinct heights
}
}
@@ -92,7 +89,7 @@ $config->set('disable_fan_first_layers', 0);
for my $layer_id (0 .. 1) {
for my $obj_id (0 .. 1) {
# use an elapsed time which is < the threshold even when summed twice
- $buffer->gcodegen->set_elapsed_time($buffer->config->fan_below_layer_time/2 - 1);
+ $buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time/2 - 1);
$gcode .= $buffer->append("G1 X100 E1 F3000\n", $obj_id, $layer_id, 0.4 + 0.4*$layer_id + 0.1*$obj_id); # print same layer at distinct heights
}
}
@@ -134,4 +131,28 @@ $config->set('disable_fan_first_layers', 0);
ok !$bridge_with_no_fan, 'bridge fan is turned on for all bridges';
}
+{
+ my $config = Slic3r::Config->new_from_defaults;
+ $config->set('cooling', 1);
+ $config->set('fan_below_layer_time', 0);
+ $config->set('slowdown_below_layer_time', 10);
+ $config->set('min_print_speed', 0);
+ $config->set('start_gcode', '');
+
+ my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
+ my @layer_times = (0); # in seconds
+ Slic3r::GCode::Reader->new->parse(my $gcode = Slic3r::Test::gcode($print), sub {
+ my ($self, $cmd, $args, $info) = @_;
+
+ if ($cmd eq 'G1') {
+ if ($info->{dist_Z}) {
+ push @layer_times, 0;
+ }
+ $layer_times[-1] += abs($info->{dist_XY} || $info->{dist_E} || $info->{dist_Z} || 0) / ($args->{F} // $self->F) * 60;
+ }
+ });
+ my $all_below = !defined first { $_ > 0 && $_ < $config->slowdown_below_layer_time } @layer_times;
+ ok $all_below, 'slowdown_below_layer_time is honored';
+}
+
__END__