From ef15ffa58e9ef840e8f333a8e85585a6bc3a5bee Mon Sep 17 00:00:00 2001 From: supermerill Date: Tue, 25 Jun 2019 19:04:33 +0200 Subject: [PATCH] some test code merge wip test denserinfill --- src/libslic3r/PrintConfig.cpp | 4 +- src/libslic3r/libslic3r.h | 2 +- src/miniz/CMakeLists.txt | 1 + src/test/CMakeLists.txt | 1 + src/test/GUI/test_cli.cpp | 2 +- src/test/libslic3r/test_denserinfill.cpp | 39 +++++++++++ src/test/libslic3r/test_model.cpp | 4 +- src/test/libslic3r/test_thin.cpp | 21 +++--- src/test/test_data.cpp | 82 ++++++++++++++++++++---- src/test/test_data.hpp | 6 +- 10 files changed, 136 insertions(+), 26 deletions(-) create mode 100644 src/test/libslic3r/test_denserinfill.cpp diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 033f3ca17..8ea22363b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -61,7 +61,7 @@ void PrintConfigDef::init_common_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloat(0.3)); + def->set_default_value(new ConfigOptionFloat(0.2)); def = this->add("max_print_height", coFloat); def->label = L("Max print height"); @@ -1094,7 +1094,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm or %"); def->ratio_over = "layer_height"; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloatOrPercent(0.35, false)); + def->set_default_value(new ConfigOptionFloatOrPercent(0.2, false)); def = this->add("first_layer_speed", coFloatOrPercent); def->label = L("Default"); diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 6b501a0e6..2aa8645b6 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -46,7 +46,7 @@ typedef double coordf_t; #define INSET_OVERLAP_TOLERANCE 0.4 //FIXME Better to use an inline function with an explicit return type. //inline coord_t scale_(coordf_t v) { return coord_t(floor(v / SCALING_FACTOR + 0.5f)); } -#define scale_(val) ((val) / SCALING_FACTOR) +#define scale_(val) (coord_t)((val) / SCALING_FACTOR) #define SCALED_EPSILON scale_(EPSILON) diff --git a/src/miniz/CMakeLists.txt b/src/miniz/CMakeLists.txt index ab27067d0..da2358690 100644 --- a/src/miniz/CMakeLists.txt +++ b/src/miniz/CMakeLists.txt @@ -29,3 +29,4 @@ else() message(STATUS "Miniz NOT found in system, using bundled version...") endif() + diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 629e5a86e..ce8607f22 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -18,6 +18,7 @@ set(SLIC3R_TEST_SOURCES libslic3r/test_model.cpp libslic3r/test_print.cpp libslic3r/test_thin.cpp + libslic3r/test_denserinfill.cpp ) if (NOT TARGET Catch) diff --git a/src/test/GUI/test_cli.cpp b/src/test/GUI/test_cli.cpp index a8a5482bd..b3c00d5ca 100644 --- a/src/test/GUI/test_cli.cpp +++ b/src/test/GUI/test_cli.cpp @@ -7,7 +7,7 @@ #include "../test_data.hpp" -#include "../../slic3r.hpp" +#include "../../PrusaSlicer.hpp" #include "../../libslic3r/GCodeReader.hpp" using namespace Slic3r; diff --git a/src/test/libslic3r/test_denserinfill.cpp b/src/test/libslic3r/test_denserinfill.cpp new file mode 100644 index 000000000..a00c2841a --- /dev/null +++ b/src/test/libslic3r/test_denserinfill.cpp @@ -0,0 +1,39 @@ + +#include +#include "../test_data.hpp" +#include "../../libslic3r/libslic3r.h" + +using namespace Slic3r; +using namespace Slic3r::Geometry; + + +SCENARIO("denser infills: ") +{ + + + GIVEN("center hole") + { + WHEN("creating the medial axis"){ + Model model{}; + Print print{}; + DynamicPrintConfig *config = Slic3r::DynamicPrintConfig::new_from_defaults(); + Slic3r::Test::init_print(print, { Slic3r::Test::TestMesh::di_5mm_center_notch }, model, config, false); + print.process(); + PrintObject& object = *(print.objects().at(0)); + + THEN("67 layers exist in the model") { + REQUIRE(object.layers().size() == 67); + } + THEN("at layer 13 , there are 1 region") { + REQUIRE(object.layers()[13]->region_count() == 2); + } + THEN("at layer 14 , there are 2 region") { + REQUIRE(object.layers()[14]->region_count() == 2); + } + THEN("at layer 15 , there are 2 region") { + REQUIRE(object.layers()[15]->region_count() == 2); + } + } + } + +} diff --git a/src/test/libslic3r/test_model.cpp b/src/test/libslic3r/test_model.cpp index 01d0015a8..f23d0ce28 100644 --- a/src/test/libslic3r/test_model.cpp +++ b/src/test/libslic3r/test_model.cpp @@ -17,7 +17,7 @@ SCENARIO("Model construction") { DynamicPrintConfig *config = Slic3r::DynamicPrintConfig::new_from_defaults(); Slic3r::Print print{}; - print.apply_config(*config); + print.apply_config_perl_tests_only(*config); //Slic3r::Test::init_print(print, { sample_mesh }, model, config); WHEN("Model object is added") { @@ -63,7 +63,7 @@ SCENARIO("Model construction") { SCENARIO("xy compensations"){ GIVEN(("A Square with a complex hole inside")){ - Polygon square/*new_scale*/{ std::vector{ + Slic3r::Polygon square/*new_scale*/{ std::vector{ Point{ 100, 100 }, Point{ 200, 100 }, Point{ 200, 200 }, diff --git a/src/test/libslic3r/test_thin.cpp b/src/test/libslic3r/test_thin.cpp index 529032def..fb2adabc9 100644 --- a/src/test/libslic3r/test_thin.cpp +++ b/src/test/libslic3r/test_thin.cpp @@ -1,3 +1,6 @@ + +#define CATCH_CONFIG_DISABLE + #include #include "../test_data.hpp" #include "../../libslic3r/ClipperUtils.hpp" @@ -224,10 +227,11 @@ SCENARIO("thin walls: ") ExPolygon anchor = union_ex(ExPolygons{ tooth }, intersection_ex(ExPolygons{ base_part }, offset_ex(tooth, nozzle_diam / 2)), true)[0]; ThickPolylines res; //expolygon.medial_axis(scale_(1), scale_(0.5), &res); - Slic3r::MedialAxis ma(tooth, anchor, nozzle_diam * 2, nozzle_diam*0.33, scale_(0.2)); - ma.nozzle_diameter = nozzle_diam; - ma.anchor_size = 0.25*nozzle_diam; - ma.build(&res); + Slic3r::MedialAxis ma(tooth, nozzle_diam * 2, nozzle_diam/3, scale_(0.2)); + ma.use_bounds(anchor) + .use_min_real_width(nozzle_diam) + .use_tapers(0.25*nozzle_diam); + ma.build(res); THEN("medial axis of a simple line is one line") { REQUIRE(res.size() == 1); THEN("medial axis has the length of the line + the length of the anchor") { @@ -258,10 +262,11 @@ SCENARIO("thin walls: ") ExPolygon anchor = union_ex(ExPolygons{ tooth }, intersection_ex(ExPolygons{ base_part }, offset_ex(tooth, nozzle_diam / 4)), true)[0]; ThickPolylines res; //expolygon.medial_axis(scale_(1), scale_(0.5), &res); - Slic3r::MedialAxis ma(tooth, anchor, nozzle_diam * 2, nozzle_diam*0.33, scale_(0.6)); - ma.nozzle_diameter = nozzle_diam; - ma.anchor_size = 1.0*nozzle_diam; - ma.build(&res); + Slic3r::MedialAxis ma(tooth, nozzle_diam * 2, nozzle_diam/3, scale_(0.6)); + ma.use_bounds(anchor) + .use_min_real_width(nozzle_diam) + .use_tapers(1.0*nozzle_diam); + ma.build(res); THEN("medial axis of a simple line is one line") { REQUIRE(res.size() == 1); THEN("medial axis has the length of the line + the length of the anchor") { diff --git a/src/test/test_data.cpp b/src/test/test_data.cpp index b17c68d49..1954530a7 100644 --- a/src/test/test_data.cpp +++ b/src/test/test_data.cpp @@ -33,8 +33,13 @@ const std::unordered_map mesh_names { std::make_pair(TestMesh::sloping_hole,"sloping_hole"), std::make_pair(TestMesh::slopy_cube,"slopy_cube"), std::make_pair(TestMesh::small_dorito,"small_dorito"), - std::make_pair(TestMesh::step,"step"), - std::make_pair(TestMesh::two_hollow_squares,"two_hollow_squares") + std::make_pair(TestMesh::step,"step"), + std::make_pair(TestMesh::two_hollow_squares,"two_hollow_squares"), + std::make_pair(TestMesh::di_5mm_center_notch,"5mm_center_notch"), + std::make_pair(TestMesh::di_10mm_notch,"10mm_notch"), + std::make_pair(TestMesh::di_20mm_notch,"20mm_notch"), + std::make_pair(TestMesh::di_25mm_notch,"25mm_notch") + }; @@ -131,15 +136,31 @@ TriangleMesh mesh(TestMesh m) { break; case TestMesh::two_hollow_squares: vertices = std::vector{ - Vec3d(66.7133483886719,104.286666870117,0), Vec3d(66.7133483886719,95.7133331298828,0), Vec3d(65.6666870117188,94.6666717529297,0), Vec3d(75.2866821289062,95.7133331298828,0), Vec3d(76.3333435058594,105.333335876465,0), Vec3d(76.3333435058594,94.6666717529297,0), Vec3d(65.6666870117188,105.33332824707,0), Vec3d(75.2866821289062,104.286666870117,0), Vec3d(71.1066818237305,104.58666229248,2.79999995231628), Vec3d(66.4133529663086,104.58666229248,2.79999995231628), Vec3d(75.5866851806641,104.58666229248,2.79999995231628), Vec3d(66.4133529663086,99.8933334350586,2.79999995231628), Vec3d(66.4133529663086,95.4133377075195,2.79999995231628), Vec3d(71.1066818237305,95.4133377075195,2.79999995231628), Vec3d(75.5866851806641,95.4133377075195,2.79999995231628), Vec3d(75.5866851806641,100.106666564941,2.79999995231628), Vec3d(74.5400161743164,103.540000915527,2.79999995231628), Vec3d(70.0320129394531,103.540000915527,2.79999995231628), Vec3d(67.4600067138672,103.540000915527,2.79999995231628), Vec3d(67.4600067138672,100.968002319336,2.79999995231628), Vec3d(67.4600067138672,96.4599990844727,2.79999995231628), Vec3d(74.5400161743164,99.0319976806641,2.79999995231628), Vec3d(74.5400161743164,96.4599990844727,2.79999995231628), Vec3d(70.0320129394531,96.4599990844727,2.79999995231628), Vec3d(123.666717529297,94.6666717529297,0), Vec3d(134.333312988281,94.6666717529297,0), Vec3d(124.413360595703,95.4133377075195,2.79999995231628), Vec3d(129.106674194336,95.4133377075195,2.79999995231628), Vec3d(133.586669921875,95.4133377075195,2.79999995231628), Vec3d(123.666717529297,105.33332824707,0), Vec3d(124.413360595703,104.58666229248,2.79999995231628), Vec3d(124.413360595703,99.8933334350586,2.79999995231628), Vec3d(134.333312988281,105.33332824707,0), Vec3d(129.106674194336,104.58666229248,2.79999995231628), Vec3d(133.586669921875,104.58666229248,2.79999995231628), Vec3d(133.586669921875,100.106666564941,2.79999995231628), Vec3d(124.713317871094,104.286666870117,0), Vec3d(124.713317871094,95.7133331298828,0), Vec3d(133.286712646484,95.7133331298828,0), Vec3d(133.286712646484,104.286666870117,0), Vec3d(132.540023803711,103.540000915527,2.79999995231628), Vec3d(128.032028198242,103.540008544922,2.79999995231628), Vec3d(125.460006713867,103.540000915527,2.79999995231628), Vec3d(125.460006713867,100.968002319336,2.79999995231628), Vec3d(125.460006713867,96.4599990844727,2.79999995231628), Vec3d(132.540023803711,99.0319976806641,2.79999995231628), Vec3d(132.540023803711,96.4599990844727,2.79999995231628), Vec3d(128.032028198242,96.4599990844727,2.79999995231628) + Vec3d(66.7133483886719,104.286666870117,0), Vec3d(66.7133483886719,95.7133331298828,0), Vec3d(65.6666870117188,94.6666717529297,0), Vec3d(75.2866821289062,95.7133331298828,0), Vec3d(76.3333435058594,105.333335876465,0), Vec3d(76.3333435058594,94.6666717529297,0), + Vec3d(65.6666870117188,105.33332824707,0), Vec3d(75.2866821289062,104.286666870117,0), Vec3d(71.1066818237305,104.58666229248,2.79999995231628), Vec3d(66.4133529663086,104.58666229248,2.79999995231628), Vec3d(75.5866851806641,104.58666229248,2.79999995231628), + Vec3d(66.4133529663086,99.8933334350586,2.79999995231628), Vec3d(66.4133529663086,95.4133377075195,2.79999995231628), Vec3d(71.1066818237305,95.4133377075195,2.79999995231628), Vec3d(75.5866851806641,95.4133377075195,2.79999995231628), Vec3d(75.5866851806641,100.106666564941,2.79999995231628), + Vec3d(74.5400161743164,103.540000915527,2.79999995231628), Vec3d(70.0320129394531,103.540000915527,2.79999995231628), Vec3d(67.4600067138672,103.540000915527,2.79999995231628), Vec3d(67.4600067138672,100.968002319336,2.79999995231628), Vec3d(67.4600067138672,96.4599990844727,2.79999995231628), + Vec3d(74.5400161743164,99.0319976806641,2.79999995231628), Vec3d(74.5400161743164,96.4599990844727,2.79999995231628), Vec3d(70.0320129394531,96.4599990844727,2.79999995231628), Vec3d(123.666717529297,94.6666717529297,0), Vec3d(134.333312988281,94.6666717529297,0), + Vec3d(124.413360595703,95.4133377075195,2.79999995231628), Vec3d(129.106674194336,95.4133377075195,2.79999995231628), Vec3d(133.586669921875,95.4133377075195,2.79999995231628), Vec3d(123.666717529297,105.33332824707,0), Vec3d(124.413360595703,104.58666229248,2.79999995231628), + Vec3d(124.413360595703,99.8933334350586,2.79999995231628), Vec3d(134.333312988281,105.33332824707,0), Vec3d(129.106674194336,104.58666229248,2.79999995231628), Vec3d(133.586669921875,104.58666229248,2.79999995231628), Vec3d(133.586669921875,100.106666564941,2.79999995231628), + Vec3d(124.713317871094,104.286666870117,0), Vec3d(124.713317871094,95.7133331298828,0), Vec3d(133.286712646484,95.7133331298828,0), Vec3d(133.286712646484,104.286666870117,0), Vec3d(132.540023803711,103.540000915527,2.79999995231628), Vec3d(128.032028198242,103.540008544922,2.79999995231628), + Vec3d(125.460006713867,103.540000915527,2.79999995231628), Vec3d(125.460006713867,100.968002319336,2.79999995231628), Vec3d(125.460006713867,96.4599990844727,2.79999995231628), Vec3d(132.540023803711,99.0319976806641,2.79999995231628), Vec3d(132.540023803711,96.4599990844727,2.79999995231628), + Vec3d(128.032028198242,96.4599990844727,2.79999995231628) }; facets = std::vector{ - Vec3i32(0,1,2), Vec3i32(3,4,5), Vec3i32(6,4,0), Vec3i32(6,0,2), Vec3i32(2,1,5), Vec3i32(7,4,3), Vec3i32(1,3,5), Vec3i32(0,4,7), Vec3i32(4,6,8), Vec3i32(6,9,8), Vec3i32(4,8,10), Vec3i32(6,2,9), Vec3i32(2,11,9), Vec3i32(2,12,11), Vec3i32(2,5,12), Vec3i32(5,13,12), Vec3i32(5,14,13), Vec3i32(4,10,15), Vec3i32(5,4,14), Vec3i32(4,15,14), Vec3i32(7,16,17), Vec3i32(0,7,18), Vec3i32(7,17,18), Vec3i32(1,19,20), Vec3i32(1,0,19), Vec3i32(0,18,19), Vec3i32(7,3,21), Vec3i32(3,22,21), Vec3i32(7,21,16), Vec3i32(3,23,22), Vec3i32(3,1,23), Vec3i32(1,20,23), Vec3i32(24,25,26), Vec3i32(25,27,26), Vec3i32(25,28,27), Vec3i32(29,24,30), Vec3i32(24,31,30), Vec3i32(24,26,31), Vec3i32(32,29,33), Vec3i32(29,30,33), Vec3i32(32,33,34), Vec3i32(32,34,35), Vec3i32(25,32,28), Vec3i32(32,35,28), Vec3i32(36,37,24), Vec3i32(38,32,25), Vec3i32(29,32,36), Vec3i32(29,36,24), Vec3i32(24,37,25), Vec3i32(39,32,38), Vec3i32(37,38,25), Vec3i32(36,32,39), Vec3i32(39,40,41), Vec3i32(36,39,42), Vec3i32(39,41,42), Vec3i32(37,43,44), Vec3i32(37,36,43), Vec3i32(36,42,43), Vec3i32(39,38,45), Vec3i32(38,46,45), Vec3i32(39,45,40), Vec3i32(38,47,46), Vec3i32(38,37,47), Vec3i32(37,44,47), Vec3i32(16,8,9), Vec3i32(16,10,8), Vec3i32(10,16,15), Vec3i32(15,16,21), Vec3i32(22,15,21), Vec3i32(15,22,14), Vec3i32(22,23,14), Vec3i32(23,20,14), Vec3i32(17,16,9), Vec3i32(18,17,9), Vec3i32(19,18,9), Vec3i32(19,9,11), Vec3i32(19,11,20), Vec3i32(13,14,20), Vec3i32(20,11,12), Vec3i32(13,20,12), Vec3i32(41,40,30), Vec3i32(42,41,30), Vec3i32(43,42,30), Vec3i32(43,30,31), Vec3i32(43,31,44), Vec3i32(27,28,44), Vec3i32(44,31,26), Vec3i32(27,44,26), Vec3i32(40,33,30), Vec3i32(40,34,33), Vec3i32(34,40,35), Vec3i32(35,40,45), Vec3i32(46,35,45), Vec3i32(35,46,28), Vec3i32(46,47,28), Vec3i32(47,44,28) , + Vec3i32(0,1,2), Vec3i32(3,4,5), Vec3i32(6,4,0), Vec3i32(6,0,2), Vec3i32(2,1,5), Vec3i32(7,4,3), Vec3i32(1,3,5), Vec3i32(0,4,7), Vec3i32(4,6,8), Vec3i32(6,9,8), Vec3i32(4,8,10), Vec3i32(6,2,9), Vec3i32(2,11,9), Vec3i32(2,12,11), Vec3i32(2,5,12), Vec3i32(5,13,12), Vec3i32(5,14,13), + Vec3i32(4,10,15), Vec3i32(5,4,14), Vec3i32(4,15,14), Vec3i32(7,16,17), Vec3i32(0,7,18), Vec3i32(7,17,18), Vec3i32(1,19,20), Vec3i32(1,0,19), Vec3i32(0,18,19), Vec3i32(7,3,21), Vec3i32(3,22,21), Vec3i32(7,21,16), Vec3i32(3,23,22), Vec3i32(3,1,23), Vec3i32(1,20,23), Vec3i32(24,25,26), + Vec3i32(25,27,26), Vec3i32(25,28,27), Vec3i32(29,24,30), Vec3i32(24,31,30), Vec3i32(24,26,31), Vec3i32(32,29,33), Vec3i32(29,30,33), Vec3i32(32,33,34), Vec3i32(32,34,35), Vec3i32(25,32,28), Vec3i32(32,35,28), Vec3i32(36,37,24), Vec3i32(38,32,25), Vec3i32(29,32,36), Vec3i32(29,36,24), + Vec3i32(24,37,25), Vec3i32(39,32,38), Vec3i32(37,38,25), Vec3i32(36,32,39), Vec3i32(39,40,41), Vec3i32(36,39,42), Vec3i32(39,41,42), Vec3i32(37,43,44), Vec3i32(37,36,43), Vec3i32(36,42,43), Vec3i32(39,38,45), Vec3i32(38,46,45), Vec3i32(39,45,40), Vec3i32(38,47,46), Vec3i32(38,37,47), + Vec3i32(37,44,47), Vec3i32(16,8,9), Vec3i32(16,10,8), Vec3i32(10,16,15), Vec3i32(15,16,21), Vec3i32(22,15,21), Vec3i32(15,22,14), Vec3i32(22,23,14), Vec3i32(23,20,14), Vec3i32(17,16,9), Vec3i32(18,17,9), Vec3i32(19,18,9), Vec3i32(19,9,11), Vec3i32(19,11,20), Vec3i32(13,14,20), + Vec3i32(20,11,12), Vec3i32(13,20,12), Vec3i32(41,40,30), Vec3i32(42,41,30), Vec3i32(43,42,30), Vec3i32(43,30,31), Vec3i32(43,31,44), Vec3i32(27,28,44), Vec3i32(44,31,26), Vec3i32(27,44,26), Vec3i32(40,33,30), Vec3i32(40,34,33), Vec3i32(34,40,35), Vec3i32(35,40,45), Vec3i32(46,35,45), + Vec3i32(35,46,28), Vec3i32(46,47,28), Vec3i32(47,44,28) , }; break; case TestMesh::small_dorito: vertices = std::vector{ - Vec3d(6.00058937072754,-22.9982089996338,0), Vec3d(22.0010242462158,-49.9998741149902,0), Vec3d(-9.99957847595215,-49.999870300293,0), Vec3d(6.00071382522583,-32.2371635437012,28.0019245147705), Vec3d(11.1670551300049,-37.9727020263672,18.9601669311523), Vec3d(6.00060224533081,-26.5392456054688,10.7321853637695) + Vec3d(6.00058937072754,-22.9982089996338,0), Vec3d(22.0010242462158,-49.9998741149902,0), Vec3d(-9.99957847595215,-49.999870300293,0), Vec3d(6.00071382522583,-32.2371635437012,28.0019245147705), Vec3d(11.1670551300049,-37.9727020263672,18.9601669311523), + Vec3d(6.00060224533081,-26.5392456054688,10.7321853637695) }; facets = std::vector{ Vec3i32(0,1,2), Vec3i32(3,4,5), Vec3i32(2,1,4), Vec3i32(2,4,3), Vec3i32(2,3,5), Vec3i32(2,5,0), Vec3i32(5,4,1), Vec3i32(5,1,0) @@ -150,7 +171,8 @@ TriangleMesh mesh(TestMesh m) { Vec3d(75,84.5,8), Vec3d(125,84.5,8), Vec3d(75,94.5,8), Vec3d(120,84.5,5), Vec3d(125,94.5,8), Vec3d(75,84.5,0), Vec3d(80,84.5,5), Vec3d(125,84.5,0), Vec3d(125,94.5,0), Vec3d(80,94.5,5), Vec3d(75,94.5,0), Vec3d(120,94.5,5), Vec3d(120,84.5,0), Vec3d(80,94.5,0), Vec3d(80,84.5,0), Vec3d(120,94.5,0) }; facets = std::vector{ - Vec3i32(0,1,2), Vec3i32(1,0,3), Vec3i32(2,1,4), Vec3i32(2,5,0), Vec3i32(0,6,3), Vec3i32(1,3,7), Vec3i32(1,8,4), Vec3i32(4,9,2), Vec3i32(10,5,2), Vec3i32(5,6,0), Vec3i32(6,11,3), Vec3i32(3,12,7), Vec3i32(7,8,1), Vec3i32(4,8,11), Vec3i32(4,11,9), Vec3i32(9,10,2), Vec3i32(10,13,5), Vec3i32(14,6,5), Vec3i32(9,11,6), Vec3i32(11,12,3), Vec3i32(12,8,7), Vec3i32(11,8,15), Vec3i32(13,10,9), Vec3i32(5,13,14), Vec3i32(14,13,6), Vec3i32(6,13,9), Vec3i32(15,12,11), Vec3i32(15,8,12) + Vec3i32(0,1,2), Vec3i32(1,0,3), Vec3i32(2,1,4), Vec3i32(2,5,0), Vec3i32(0,6,3), Vec3i32(1,3,7), Vec3i32(1,8,4), Vec3i32(4,9,2), Vec3i32(10,5,2), Vec3i32(5,6,0), Vec3i32(6,11,3), Vec3i32(3,12,7), Vec3i32(7,8,1), Vec3i32(4,8,11), Vec3i32(4,11,9), Vec3i32(9,10,2), Vec3i32(10,13,5), + Vec3i32(14,6,5), Vec3i32(9,11,6), Vec3i32(11,12,3), Vec3i32(12,8,7), Vec3i32(11,8,15), Vec3i32(13,10,9), Vec3i32(5,13,14), Vec3i32(14,13,6), Vec3i32(6,13,9), Vec3i32(15,12,11), Vec3i32(15,8,12) }; break; case TestMesh::bridge_with_hole: @@ -158,7 +180,8 @@ TriangleMesh mesh(TestMesh m) { Vec3d(75,69.5,8), Vec3d(80,76.9091644287109,8), Vec3d(75,94.5,8), Vec3d(125,69.5,8), Vec3d(120,76.9091644287109,8), Vec3d(120,87.0908355712891,8), Vec3d(80,87.0908355712891,8), Vec3d(125,94.5,8), Vec3d(80,87.0908355712891,5), Vec3d(120,87.0908355712891,5), Vec3d(125,94.5,0), Vec3d(120,69.5,0), Vec3d(120,94.5,0), Vec3d(125,69.5,0), Vec3d(120,94.5,5), Vec3d(80,94.5,5), Vec3d(80,94.5,0), Vec3d(75,94.5,0), Vec3d(80,69.5,5), Vec3d(80,69.5,0), Vec3d(80,76.9091644287109,5), Vec3d(120,69.5,5), Vec3d(75,69.5,0), Vec3d(120,76.9091644287109,5) }; facets = std::vector{ - Vec3i32(0,1,2), Vec3i32(1,0,3), Vec3i32(1,3,4), Vec3i32(4,3,5), Vec3i32(2,6,7), Vec3i32(6,2,1), Vec3i32(7,6,5), Vec3i32(7,5,3), Vec3i32(5,8,9), Vec3i32(8,5,6), Vec3i32(10,11,12), Vec3i32(11,10,13), Vec3i32(14,8,15), Vec3i32(8,14,9), Vec3i32(2,16,17), Vec3i32(16,2,15), Vec3i32(15,2,14), Vec3i32(14,10,12), Vec3i32(10,14,7), Vec3i32(7,14,2), Vec3i32(16,18,19), Vec3i32(18,16,20), Vec3i32(20,16,1), Vec3i32(1,16,8), Vec3i32(8,16,15), Vec3i32(6,1,8), Vec3i32(3,11,13), Vec3i32(11,3,21), Vec3i32(21,3,18), Vec3i32(18,22,19), Vec3i32(22,18,0), Vec3i32(0,18,3), Vec3i32(16,22,17), Vec3i32(22,16,19), Vec3i32(2,22,0), Vec3i32(22,2,17), Vec3i32(5,23,4), Vec3i32(23,11,21), Vec3i32(11,23,12), Vec3i32(12,23,9), Vec3i32(9,23,5), Vec3i32(12,9,14), Vec3i32(23,18,20), Vec3i32(18,23,21), Vec3i32(10,3,13), Vec3i32(3,10,7), Vec3i32(1,23,20), Vec3i32(23,1,4) + Vec3i32(0,1,2), Vec3i32(1,0,3), Vec3i32(1,3,4), Vec3i32(4,3,5), Vec3i32(2,6,7), Vec3i32(6,2,1), Vec3i32(7,6,5), Vec3i32(7,5,3), Vec3i32(5,8,9), Vec3i32(8,5,6), Vec3i32(10,11,12), Vec3i32(11,10,13), Vec3i32(14,8,15), Vec3i32(8,14,9), Vec3i32(2,16,17), Vec3i32(16,2,15), Vec3i32(15,2,14), + Vec3i32(14,10,12), Vec3i32(10,14,7), Vec3i32(7,14,2), Vec3i32(16,18,19), Vec3i32(18,16,20), Vec3i32(20,16,1), Vec3i32(1,16,8), Vec3i32(8,16,15), Vec3i32(6,1,8), Vec3i32(3,11,13), Vec3i32(11,3,21), Vec3i32(21,3,18), Vec3i32(18,22,19), Vec3i32(22,18,0), Vec3i32(0,18,3), Vec3i32(16,22,17), Vec3i32(22,16,19), Vec3i32(2,22,0), Vec3i32(22,2,17), Vec3i32(5,23,4), Vec3i32(23,11,21), Vec3i32(11,23,12), Vec3i32(12,23,9), Vec3i32(9,23,5), Vec3i32(12,9,14), Vec3i32(23,18,20), Vec3i32(18,23,21), Vec3i32(10,3,13), Vec3i32(3,10,7), Vec3i32(1,23,20), Vec3i32(23,1,4) }; break; case TestMesh::step: @@ -166,7 +189,8 @@ TriangleMesh mesh(TestMesh m) { Vec3d(0,20,5), Vec3d(0,20,0), Vec3d(0,0,5), Vec3d(0,0,0), Vec3d(20,0,0), Vec3d(20,0,5), Vec3d(1,19,5), Vec3d(1,1,5), Vec3d(19,1,5), Vec3d(20,20,5), Vec3d(19,19,5), Vec3d(20,20,0), Vec3d(19,19,10), Vec3d(1,19,10), Vec3d(1,1,10), Vec3d(19,1,10) }; facets = std::vector{ - Vec3i32(0,1,2), Vec3i32(1,3,2), Vec3i32(3,4,5), Vec3i32(2,3,5), Vec3i32(6,0,2), Vec3i32(6,2,7), Vec3i32(5,8,7), Vec3i32(5,7,2), Vec3i32(9,10,8), Vec3i32(9,8,5), Vec3i32(9,0,6), Vec3i32(9,6,10), Vec3i32(9,11,1), Vec3i32(9,1,0), Vec3i32(3,1,11), Vec3i32(4,3,11), Vec3i32(5,11,9), Vec3i32(5,4,11), Vec3i32(12,10,6), Vec3i32(12,6,13), Vec3i32(6,7,14), Vec3i32(13,6,14), Vec3i32(7,8,15), Vec3i32(14,7,15), Vec3i32(15,8,10), Vec3i32(15,10,12), Vec3i32(12,13,14), Vec3i32(12,14,15) + Vec3i32(0,1,2), Vec3i32(1,3,2), Vec3i32(3,4,5), Vec3i32(2,3,5), Vec3i32(6,0,2), Vec3i32(6,2,7), Vec3i32(5,8,7), Vec3i32(5,7,2), Vec3i32(9,10,8), Vec3i32(9,8,5), Vec3i32(9,0,6), Vec3i32(9,6,10), Vec3i32(9,11,1), Vec3i32(9,1,0), Vec3i32(3,1,11), Vec3i32(4,3,11), Vec3i32(5,11,9), + Vec3i32(5,4,11), Vec3i32(12,10,6), Vec3i32(12,6,13), Vec3i32(6,7,14), Vec3i32(13,6,14), Vec3i32(7,8,15), Vec3i32(14,7,15), Vec3i32(15,8,10), Vec3i32(15,10,12), Vec3i32(12,13,14), Vec3i32(12,14,15) }; break; case TestMesh::slopy_cube: @@ -179,7 +203,43 @@ TriangleMesh mesh(TestMesh m) { Vec3i32(2,3,10) , Vec3i32(9,10,12) , Vec3i32(13,9,12) , Vec3i32(3,1,8) , Vec3i32(11,3,8) , Vec3i32(10,11,8) , Vec3i32(4,10,8) , Vec3i32(6,12,10) , Vec3i32(4,6,10) , Vec3i32(7,13,12) , Vec3i32(6,7,12) , Vec3i32(7,5,9) , Vec3i32(13,7,9) }; - break; + break; + case TestMesh::di_5mm_center_notch: + vertices = std::vector{ + Vec3d(-15,-15,-5),Vec3d(-15,15,5),Vec3d(-15,15,-5),Vec3d(-15,-15,5),Vec3d(3,-2,5),Vec3d(15,15,5),Vec3d(3,3,5),Vec3d(-2,3,5),Vec3d(-2,-2,5),Vec3d(15,-15,5),Vec3d(15,15,-5),Vec3d(15,-15,-5),Vec3d(-2,3,0),Vec3d(-2,-2,0),Vec3d(3,-2,0),Vec3d(3,3,0) + }; + facets = std::vector{ + Vec3i32(0,1,2),Vec3i32(1,0,3),Vec3i32(4,5,6),Vec3i32(5,7,6),Vec3i32(7,1,8),Vec3i32(1,7,5),Vec3i32(5,4,9),Vec3i32(8,9,4),Vec3i32(8,3,9),Vec3i32(3,8,1),Vec3i32(9,10,5),Vec3i32(10,9,11),Vec3i32(10,1,5),Vec3i32(1,10,2),Vec3i32(0,10,11),Vec3i32(10,0,2),Vec3i32(0,9,3),Vec3i32(9,0,11), + Vec3i32(8,12,7),Vec3i32(12,8,13),Vec3i32(14,6,15),Vec3i32(6,14,4),Vec3i32(12,14,15),Vec3i32(14,12,13),Vec3i32(14,8,4),Vec3i32(8,14,13),Vec3i32(12,6,7),Vec3i32(6,12,15) + }; + break; + case TestMesh::di_10mm_notch: + vertices = std::vector{ + Vec3d(-15,15,-5),Vec3d(-15,-5,0),Vec3d(-15,15,5),Vec3d(-15,-15,-5),Vec3d(-15,-15,0),Vec3d(-15,-5,5),Vec3d(15,15,5),Vec3d(-5,-5,5),Vec3d(15,-15,5),Vec3d(-5,-15,5),Vec3d(15,15,-5),Vec3d(15,-15,-5),Vec3d(-5,-15,0),Vec3d(-5,-5,0) + }; + facets = std::vector{ + Vec3i32(0,1,2),Vec3i32(3,1,0),Vec3i32(1,3,4),Vec3i32(2,1,5),Vec3i32(6,7,8),Vec3i32(2,7,6),Vec3i32(7,2,5),Vec3i32(8,7,9),Vec3i32(8,10,6),Vec3i32(10,8,11),Vec3i32(10,2,6),Vec3i32(2,10,0),Vec3i32(3,10,11),Vec3i32(10,3,0),Vec3i32(4,3,12),Vec3i32(12,8,9),Vec3i32(11,12,3),Vec3i32(12,11,8), + Vec3i32(12,7,13),Vec3i32(7,12,9),Vec3i32(1,7,5),Vec3i32(7,1,13),Vec3i32(1,12,13),Vec3i32(12,1,4), + }; + break; + case TestMesh::di_20mm_notch: + vertices = std::vector{ + Vec3d(-15,15,-5),Vec3d(-15,5,0),Vec3d(-15,15,5),Vec3d(-15,-15,-5),Vec3d(-15,-15,0),Vec3d(-15,5,5),Vec3d(15,15,5),Vec3d(5,5,5),Vec3d(15,-15,5),Vec3d(5,-15,5),Vec3d(15,15,-5),Vec3d(15,-15,-5),Vec3d(5,-15,0),Vec3d(5,5,0), + }; + facets = std::vector{ + Vec3i32(0,1,2),Vec3i32(3,1,0),Vec3i32(1,3,4),Vec3i32(2,1,5),Vec3i32(6,7,8),Vec3i32(2,7,6),Vec3i32(7,2,5),Vec3i32(8,7,9),Vec3i32(8,10,6),Vec3i32(10,8,11),Vec3i32(3,10,11),Vec3i32(10,3,0),Vec3i32(4,3,12),Vec3i32(12,8,9),Vec3i32(12,11,8),Vec3i32(11,12,3),Vec3i32(10,2,6),Vec3i32(2,10,0), + Vec3i32(12,7,13),Vec3i32(7,12,9),Vec3i32(1,12,13),Vec3i32(12,1,4),Vec3i32(1,7,5),Vec3i32(7,1,13), + }; + break; + case TestMesh::di_25mm_notch: + vertices = std::vector{ + Vec3d(-15,15,-5),Vec3d(-15,10,0),Vec3d(-15,15,5),Vec3d(-15,-15,-5),Vec3d(-15,-15,0),Vec3d(-15,10,5),Vec3d(15,15,5),Vec3d(10,10,5),Vec3d(15,-15,5),Vec3d(10,-15,5),Vec3d(15,15,-5),Vec3d(15,-15,-5),Vec3d(10,-15,0),Vec3d(10,10,0), + }; + facets = std::vector{ + Vec3i32(0,1,2),Vec3i32(3,1,0),Vec3i32(1,3,4),Vec3i32(2,1,5),Vec3i32(6,7,8),Vec3i32(2,7,6),Vec3i32(7,2,5),Vec3i32(8,7,9),Vec3i32(8,10,6),Vec3i32(10,8,11),Vec3i32(3,10,11),Vec3i32(10,3,0),Vec3i32(4,3,12),Vec3i32(12,8,9),Vec3i32(12,11,8),Vec3i32(11,12,3),Vec3i32(10,2,6),Vec3i32(2,10,0), + Vec3i32(12,7,13),Vec3i32(7,12,9),Vec3i32(1,7,5),Vec3i32(7,1,13),Vec3i32(1,12,13),Vec3i32(12,1,4), + }; + break; default: break; } @@ -214,7 +274,7 @@ void init_print(Print& print, std::initializer_list meshes, Slic3r::Mo //if (tests_gcode != ""s) // config->set_key_value("gcode_comments", new ConfigOptionBool(true)); - print.apply_config(*config); + print.apply_config_perl_tests_only(*config); for (const TestMesh& t : meshes) { ModelObject* object {model.add_object()}; object->name += std::string(mesh_names.at(t)) + ".stl"s; @@ -247,7 +307,7 @@ void init_print(Print& print, std::initializer_list meshes, Slic3r if (tests_gcode != ""s) config->set_key_value("gcode_comments", new ConfigOptionBool(true)); - print.apply_config(*config); + print.apply_config_perl_tests_only(*config); for (const TriangleMesh& t : meshes) { ModelObject* object {model.add_object()}; object->name += "object.stl"s; diff --git a/src/test/test_data.hpp b/src/test/test_data.hpp index 192ecc76d..ea1854f13 100644 --- a/src/test/test_data.hpp +++ b/src/test/test_data.hpp @@ -32,7 +32,11 @@ enum class TestMesh { slopy_cube, small_dorito, step, - two_hollow_squares + two_hollow_squares, + di_5mm_center_notch, + di_10mm_notch, + di_20mm_notch, + di_25mm_notch }; // Neccessary for