print.t 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. use Test::More tests => 6;
  2. use strict;
  3. use warnings;
  4. BEGIN {
  5. use FindBin;
  6. use lib "$FindBin::Bin/../lib";
  7. }
  8. use List::Util qw(first);
  9. use Slic3r;
  10. use Slic3r::Geometry qw(epsilon unscale X Y);
  11. use Slic3r::Test;
  12. {
  13. my $config = Slic3r::Config->new_from_defaults;
  14. my $print_center = [100,100];
  15. my $print = Slic3r::Test::init_print('20mm_cube', config => $config, print_center => $print_center);
  16. my @extrusion_points = ();
  17. Slic3r::GCode::Reader->new->parse(Slic3r::Test::gcode($print), sub {
  18. my ($self, $cmd, $args, $info) = @_;
  19. if ($cmd eq 'G1' && $info->{extruding} && $info->{dist_XY} > 0) {
  20. push @extrusion_points, my $point = Slic3r::Point->new_scale($args->{X}, $args->{Y});
  21. }
  22. });
  23. my $bb = Slic3r::Geometry::BoundingBox->new_from_points(\@extrusion_points);
  24. my $center = $bb->center;
  25. ok abs(unscale($center->[X]) - $print_center->[X]) < epsilon, 'print is centered around print_center (X)';
  26. ok abs(unscale($center->[Y]) - $print_center->[Y]) < epsilon, 'print is centered around print_center (Y)';
  27. }
  28. {
  29. # this represents the aggregate config from presets
  30. my $config = Slic3r::Config->new_from_defaults;
  31. # user adds one object to the plater
  32. my $print = Slic3r::Test::init_print(my $model = Slic3r::Test::model('20mm_cube'), config => $config);
  33. # user sets a per-region option
  34. $print->print->objects->[0]->model_object->config->set('fill_density', 100);
  35. $print->print->reload_object(0);
  36. is $print->print->regions->[0]->config->fill_density, 100, 'region config inherits model object config';
  37. # user exports G-code, thus the default config is reapplied
  38. $print->print->apply_config($config);
  39. is $print->print->regions->[0]->config->fill_density, 100, 'apply_config() does not override per-object settings';
  40. # user assigns object extruders
  41. $print->print->objects->[0]->model_object->config->set('extruder', 3);
  42. $print->print->objects->[0]->model_object->config->set('perimeter_extruder', 2);
  43. $print->print->reload_object(0);
  44. is $print->print->regions->[0]->config->infill_extruder, 3, 'extruder setting is correctly expanded';
  45. is $print->print->regions->[0]->config->perimeter_extruder, 2, 'extruder setting does not override explicitely specified extruders';
  46. }
  47. __END__