#ifndef SLIC3R_TEST_DATA_HPP #define SLIC3R_TEST_DATA_HPP #include "libslic3r/Config.hpp" #include "libslic3r/Geometry.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/Point.hpp" #include "libslic3r/Print.hpp" #include "libslic3r/TriangleMesh.hpp" #include namespace Slic3r { namespace Test { constexpr double MM_PER_MIN = 60.0; /// Enumeration of test meshes enum class TestMesh { A, L, V, _40x10, cube_20x20x20, cube_2x20x10, sphere_50mm, bridge, bridge_with_hole, cube_with_concave_hole, cube_with_hole, gt2_teeth, ipadstand, overhang, pyramid, sloping_hole, slopy_cube, small_dorito, step, two_hollow_squares }; // Neccessary for (tm); } }; /// Mesh enumeration to name mapping extern const std::unordered_map mesh_names; /// Port of Slic3r::Test::mesh /// Basic cubes/boxes should call TriangleMesh::make_cube() directly and rescale/translate it TriangleMesh mesh(TestMesh m); TriangleMesh mesh(TestMesh m, Vec3d translate, Vec3d scale = Vec3d(1.0, 1.0, 1.0)); TriangleMesh mesh(TestMesh m, Vec3d translate, double scale = 1.0); /// Templated function to see if two values are equivalent (+/- epsilon) template bool _equiv(const T& a, const T& b) { return std::abs(a - b) < EPSILON; } template bool _equiv(const T& a, const T& b, double epsilon) { return abs(a - b) < epsilon; } Slic3r::Model model(const std::string& model_name, TriangleMesh&& _mesh); void init_print(std::vector &&meshes, Slic3r::Print &print, Slic3r::Model& model, const DynamicPrintConfig &config_in, bool comments = false); void init_print(std::initializer_list meshes, Slic3r::Print &print, Slic3r::Model& model, const Slic3r::DynamicPrintConfig &config_in = Slic3r::DynamicPrintConfig::full_print_config(), bool comments = false); void init_print(std::initializer_list meshes, Slic3r::Print &print, Slic3r::Model& model, const Slic3r::DynamicPrintConfig &config_in = Slic3r::DynamicPrintConfig::full_print_config(), bool comments = false); void init_print(std::initializer_list meshes, Slic3r::Print &print, Slic3r::Model& model, std::initializer_list config_items, bool comments = false); void init_print(std::initializer_list meshes, Slic3r::Print &print, Slic3r::Model& model, std::initializer_list config_items, bool comments = false); void init_and_process_print(std::initializer_list meshes, Slic3r::Print &print, const DynamicPrintConfig& config, bool comments = false); void init_and_process_print(std::initializer_list meshes, Slic3r::Print &print, const DynamicPrintConfig& config, bool comments = false); void init_and_process_print(std::initializer_list meshes, Slic3r::Print &print, std::initializer_list config_items, bool comments = false); void init_and_process_print(std::initializer_list meshes, Slic3r::Print &print, std::initializer_list config_items, bool comments = false); std::string gcode(Print& print); std::string slice(std::initializer_list meshes, const DynamicPrintConfig &config, bool comments = false); std::string slice(std::initializer_list meshes, const DynamicPrintConfig &config, bool comments = false); std::string slice(std::initializer_list meshes, std::initializer_list config_items, bool comments = false); std::string slice(std::initializer_list meshes, std::initializer_list config_items, bool comments = false); bool contains(const std::string &data, const std::string &pattern); bool contains_regex(const std::string &data, const std::string &pattern); } } // namespace Slic3r::Test #endif // SLIC3R_TEST_DATA_HPP