test_seam_rear.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <libslic3r/Point.hpp>
  2. #include <catch2/catch.hpp>
  3. #include <libslic3r/GCode/SeamRear.hpp>
  4. #include "test_data.hpp"
  5. #include <fstream>
  6. using namespace Slic3r;
  7. using namespace Slic3r::Seams;
  8. constexpr bool debug_files{false};
  9. namespace RearTest {
  10. Perimeters::Perimeter get_perimeter() {
  11. const double slice_z{1.0};
  12. const std::size_t layer_index{};
  13. std::vector<Vec2d> positions{{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.5, 1.0}, {0.0, 1.0}};
  14. std::vector<double> angles(positions.size(), -M_PI / 2.0);
  15. angles[3] = 0.0;
  16. std::vector<Perimeters::PointType> point_types(positions.size(), Perimeters::PointType::common);
  17. std::vector<Perimeters::PointClassification>
  18. point_classifications{positions.size(), Perimeters::PointClassification::common};
  19. std::vector<Perimeters::AngleType> angle_type(positions.size(), Perimeters::AngleType::concave);
  20. angle_type[3] = Perimeters::AngleType::smooth;
  21. return {
  22. slice_z,
  23. layer_index,
  24. false,
  25. std::move(positions),
  26. std::move(angles),
  27. std::move(point_types),
  28. std::move(point_classifications),
  29. std::move(angle_type)};
  30. }
  31. } // namespace RearTest
  32. TEST_CASE_METHOD(Test::SeamsFixture, "Generate rear seam", "[Seams][SeamRear][Integration]") {
  33. Seams::Perimeters::LayerPerimeters perimeters{
  34. Seams::Perimeters::create_perimeters(projected, layer_infos, painting, params.perimeter)};
  35. const std::vector<std::vector<SeamPerimeterChoice>> seams{
  36. Rear::get_object_seams(std::move(perimeters), params.rear_tolerance, params.rear_y_offset)};
  37. if constexpr (debug_files) {
  38. std::ofstream csv{"rear_seam.csv"};
  39. Test::serialize_seam(csv, seams);
  40. }
  41. }