mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-08-10 07:15:08 -06:00
Slic3r has been modified to propagate the following filament specific
values to GCode generator, one per active extruder: bed_temperature bridge_fan_speed cooling disable_fan_first_layers fan_always_on fan_below_layer_time first_layer_bed_temperature max_fan_speed min_fan_speed min_print_speed slowdown_below_layer_time Now it remains to extend Slic3r to correctly apply these values.
This commit is contained in:
parent
0bd2bb1e8e
commit
f0325575c2
16 changed files with 180 additions and 135 deletions
32
t/cooling.t
32
t/cooling.t
|
@ -27,18 +27,18 @@ sub buffer {
|
|||
}
|
||||
|
||||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('disable_fan_first_layers', 0);
|
||||
$config->set('disable_fan_first_layers', [ 0 ]);
|
||||
|
||||
{
|
||||
my $buffer = buffer($config);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time + 1);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time->[0] + 1);
|
||||
my $gcode = $buffer->append('G1 F3000;_EXTRUDE_SET_SPEED\nG1 X100 E1', 0, 0, 0) . $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->gcodegen->config->slowdown_below_layer_time - 1);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time->[0] - 1);
|
||||
my $gcode = $buffer->append(
|
||||
"G1 X50 F2500\n" .
|
||||
"G1 F3000;_EXTRUDE_SET_SPEED\n" .
|
||||
|
@ -53,7 +53,7 @@ $config->set('disable_fan_first_layers', 0);
|
|||
|
||||
{
|
||||
my $buffer = buffer($config);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time + 1);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time->[0] + 1);
|
||||
my $gcode = $buffer->append('G1 X100 E1 F3000', 0, 0, 0) . $buffer->flush;
|
||||
unlike $gcode, qr/M106/, 'fan is not activated when elapsed time is greater than fan threshold';
|
||||
}
|
||||
|
@ -63,7 +63,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->gcodegen->config->slowdown_below_layer_time - 1);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->slowdown_below_layer_time->[0] - 1);
|
||||
$gcode .= $buffer->append("G1 X100 E1 F3000\n", $obj_id, 0, 0);
|
||||
}
|
||||
$gcode .= $buffer->flush;
|
||||
|
@ -76,7 +76,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->gcodegen->config->fan_below_layer_time - 1);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time->[0] - 1);
|
||||
$gcode .= $buffer->append("G1 X100 E1 F3000\n", $obj_id, $layer_id, 0);
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +90,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->gcodegen->config->fan_below_layer_time/2 - 1);
|
||||
$buffer->gcodegen->set_elapsed_time($buffer->gcodegen->config->fan_below_layer_time->[0]/2 - 1);
|
||||
$gcode .= $buffer->append("G1 X100 E1 F3000\n", $obj_id, $layer_id, 0);
|
||||
}
|
||||
}
|
||||
|
@ -100,10 +100,10 @@ $config->set('disable_fan_first_layers', 0);
|
|||
|
||||
{
|
||||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('cooling', 1);
|
||||
$config->set('bridge_fan_speed', 100);
|
||||
$config->set('fan_below_layer_time', 0);
|
||||
$config->set('slowdown_below_layer_time', 0);
|
||||
$config->set('cooling', [ 1 ]);
|
||||
$config->set('bridge_fan_speed', [ 100 ]);
|
||||
$config->set('fan_below_layer_time', [ 0 ]);
|
||||
$config->set('slowdown_below_layer_time', [ 0 ]);
|
||||
$config->set('bridge_speed', 99);
|
||||
$config->set('top_solid_layers', 1); # internal bridges use solid_infil speed
|
||||
$config->set('bottom_solid_layers', 1); # internal bridges use solid_infil speed
|
||||
|
@ -134,10 +134,10 @@ $config->set('disable_fan_first_layers', 0);
|
|||
|
||||
{
|
||||
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('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);
|
||||
|
@ -152,7 +152,7 @@ $config->set('disable_fan_first_layers', 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;
|
||||
my $all_below = !defined first { $_ > 0 && $_ < $config->slowdown_below_layer_time->[0] } @layer_times;
|
||||
ok $all_below, 'slowdown_below_layer_time is honored';
|
||||
}
|
||||
|
||||
|
|
4
t/fill.t
4
t/fill.t
|
@ -199,7 +199,7 @@ for my $pattern (qw(rectilinear honeycomb hilbertcurve concentric)) {
|
|||
$config->set('infill_extruder', 2);
|
||||
$config->set('infill_extrusion_width', 0.5);
|
||||
$config->set('fill_density', 40);
|
||||
$config->set('cooling', 0); # for preventing speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # for preventing speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # for preventing speeds from being altered
|
||||
|
||||
my $test = sub {
|
||||
|
@ -249,7 +249,7 @@ for my $pattern (qw(rectilinear honeycomb hilbertcurve concentric)) {
|
|||
$config->set('solid_infill_every_layers', 2);
|
||||
$config->set('perimeter_speed', 99);
|
||||
$config->set('external_perimeter_speed', 99);
|
||||
$config->set('cooling', 0);
|
||||
$config->set('cooling', [ 0 ]);
|
||||
$config->set('first_layer_speed', '100%');
|
||||
|
||||
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
||||
|
|
2
t/flow.t
2
t/flow.t
|
@ -43,7 +43,7 @@ use Slic3r::Test;
|
|||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('bridge_speed', 99);
|
||||
$config->set('bridge_flow_ratio', 1);
|
||||
$config->set('cooling', 0); # to prevent speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds from being altered
|
||||
|
||||
my $test = sub {
|
||||
|
|
2
t/gaps.t
2
t/gaps.t
|
@ -23,7 +23,7 @@ use Slic3r::Test;
|
|||
$config->set('small_perimeter_speed', 66);
|
||||
$config->set('gap_fill_speed', 99);
|
||||
$config->set('perimeters', 1);
|
||||
$config->set('cooling', 0); # to prevent speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds from being altered
|
||||
$config->set('perimeter_extrusion_width', 0.35);
|
||||
$config->set('first_layer_extrusion_width', 0.35);
|
||||
|
|
|
@ -128,7 +128,7 @@ use Slic3r::Test;
|
|||
$config->set('fill_density', 0);
|
||||
$config->set('solid_infill_speed', 99);
|
||||
$config->set('top_solid_infill_speed', 99);
|
||||
$config->set('cooling', 0); # for preventing speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # for preventing speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # for preventing speeds from being altered
|
||||
|
||||
my $test = sub {
|
||||
|
|
|
@ -161,7 +161,7 @@ use Slic3r::Test;
|
|||
$config->set('perimeters', 3);
|
||||
$config->set('top_solid_layers', 0);
|
||||
$config->set('bottom_solid_layers', 0);
|
||||
$config->set('cooling', 0); # to prevent speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds from being altered
|
||||
|
||||
{
|
||||
|
@ -242,10 +242,10 @@ use Slic3r::Test;
|
|||
$config->set('perimeter_speed', 77);
|
||||
$config->set('external_perimeter_speed', 66);
|
||||
$config->set('bridge_speed', 99);
|
||||
$config->set('cooling', 1);
|
||||
$config->set('fan_below_layer_time', 0);
|
||||
$config->set('slowdown_below_layer_time', 0);
|
||||
$config->set('bridge_fan_speed', 100);
|
||||
$config->set('cooling', [ 1 ]);
|
||||
$config->set('fan_below_layer_time', [ 0 ]);
|
||||
$config->set('slowdown_below_layer_time', [ 0 ]);
|
||||
$config->set('bridge_fan_speed', [ 100 ]);
|
||||
$config->set('bridge_flow_ratio', 33); # arbitrary value
|
||||
$config->set('overhangs', 1);
|
||||
my $print = Slic3r::Test::init_print('overhang', config => $config);
|
||||
|
@ -289,7 +289,7 @@ use Slic3r::Test;
|
|||
$config->set('layer_height', 0.4);
|
||||
$config->set('first_layer_height', 0.35);
|
||||
$config->set('extra_perimeters', 1);
|
||||
$config->set('cooling', 0); # to prevent speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds from being altered
|
||||
$config->set('perimeter_speed', 99);
|
||||
$config->set('external_perimeter_speed', 99);
|
||||
|
@ -377,7 +377,7 @@ use Slic3r::Test;
|
|||
$config->set('bridge_speed', 99);
|
||||
$config->set('fill_density', 0); # to prevent bridging over sparse infill
|
||||
$config->set('overhangs', 1);
|
||||
$config->set('cooling', 0); # to prevent speeds from being altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds from being altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds from being altered
|
||||
|
||||
my $test = sub {
|
||||
|
|
|
@ -20,7 +20,7 @@ use Slic3r::Test;
|
|||
$config->set('top_solid_infill_speed', 99);
|
||||
$config->set('bridge_speed', 72);
|
||||
$config->set('first_layer_speed', '100%');
|
||||
$config->set('cooling', 0);
|
||||
$config->set('cooling', [ 0 ]);
|
||||
|
||||
my $test = sub {
|
||||
my ($conf) = @_;
|
||||
|
@ -86,7 +86,7 @@ use Slic3r::Test;
|
|||
$config->set('first_layer_height', '100%');
|
||||
$config->set('bottom_solid_layers', 0);
|
||||
$config->set('top_solid_layers', 3);
|
||||
$config->set('cooling', 0);
|
||||
$config->set('cooling', [ 0 ]);
|
||||
$config->set('bridge_speed', 99);
|
||||
$config->set('solid_infill_speed', 99);
|
||||
$config->set('top_solid_infill_speed', 99);
|
||||
|
@ -115,7 +115,7 @@ use Slic3r::Test;
|
|||
# discarded instead of grown
|
||||
$config->set('perimeters', 1);
|
||||
$config->set('fill_density', 0);
|
||||
$config->set('cooling', 0); # prevent speed alteration
|
||||
$config->set('cooling', [ 0 ]); # prevent speed alteration
|
||||
$config->set('first_layer_speed', '100%'); # prevent speed alteration
|
||||
$config->set('layer_height', 0.4);
|
||||
$config->set('first_layer_height', '100%');
|
||||
|
@ -138,7 +138,7 @@ use Slic3r::Test;
|
|||
{
|
||||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('perimeters', 3);
|
||||
$config->set('cooling', 0); # prevent speed alteration
|
||||
$config->set('cooling', [ 0 ]); # prevent speed alteration
|
||||
$config->set('first_layer_speed', '100%'); # prevent speed alteration
|
||||
$config->set('layer_height', 0.4);
|
||||
$config->set('first_layer_height', '100%');
|
||||
|
|
|
@ -18,7 +18,7 @@ use Slic3r::Test;
|
|||
$config->set('skirt_height', 2);
|
||||
$config->set('perimeters', 0);
|
||||
$config->set('support_material_speed', 99);
|
||||
$config->set('cooling', 0); # to prevent speeds to be altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds to be altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds to be altered
|
||||
|
||||
my $test = sub {
|
||||
|
@ -52,7 +52,7 @@ use Slic3r::Test;
|
|||
$config->set('bottom_solid_layers', 0); # to prevent solid shells and their speeds
|
||||
$config->set('brim_width', 5);
|
||||
$config->set('support_material_speed', 99);
|
||||
$config->set('cooling', 0); # to prevent speeds to be altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds to be altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds to be altered
|
||||
|
||||
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
||||
|
@ -97,7 +97,7 @@ use Slic3r::Test;
|
|||
$config->set('support_material_speed', 99);
|
||||
$config->set('perimeter_extruder', 1);
|
||||
$config->set('support_material_extruder', 2);
|
||||
$config->set('cooling', 0); # to prevent speeds to be altered
|
||||
$config->set('cooling', [ 0 ]); # to prevent speeds to be altered
|
||||
$config->set('first_layer_speed', '100%'); # to prevent speeds to be altered
|
||||
|
||||
my $print = Slic3r::Test::init_print('overhang', config => $config);
|
||||
|
|
|
@ -114,7 +114,7 @@ use Slic3r::Test;
|
|||
$config->set('support_material_extrusion_width', 0.6);
|
||||
$config->set('first_layer_extrusion_width', '100%');
|
||||
$config->set('bridge_speed', 99);
|
||||
$config->set('cooling', 0); # prevent speed alteration
|
||||
$config->set('cooling', [ 0 ]); # prevent speed alteration
|
||||
$config->set('first_layer_speed', '100%'); # prevent speed alteration
|
||||
$config->set('start_gcode', ''); # prevent any unexpected Z move
|
||||
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
||||
|
@ -197,7 +197,7 @@ use Slic3r::Test;
|
|||
$config->set('support_material', 1);
|
||||
$config->set('top_solid_layers', 0); # so that we don't have the internal bridge over infill
|
||||
$config->set('bridge_speed', 99);
|
||||
$config->set('cooling', 0);
|
||||
$config->set('cooling', [ 0 ]);
|
||||
$config->set('first_layer_speed', '100%');
|
||||
|
||||
my $test = sub {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue