From b2d43c8719c5d141e20f11dba21736e25179bca9 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Fri, 18 Aug 2023 16:50:35 +0200 Subject: [PATCH] Fix arrange in fff tests --- src/libslic3r/Arrange/Scene.cpp | 4 ++-- src/libslic3r/Arrange/Scene.hpp | 22 +++++++++++++++++++--- src/libslic3r/ModelArrange.cpp | 19 ++++++------------- tests/fff_print/test_data.cpp | 2 +- tests/fff_print/test_model.cpp | 8 ++++++-- 5 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/libslic3r/Arrange/Scene.cpp b/src/libslic3r/Arrange/Scene.cpp index a59b3f9aec..ddcc5ead67 100644 --- a/src/libslic3r/Arrange/Scene.cpp +++ b/src/libslic3r/Arrange/Scene.cpp @@ -54,11 +54,11 @@ std::set selected_geometry_ids(const Scene &sc) return result; } -void arrange(Scene &scene, ArrangeTaskCtl &ctl) +bool arrange(Scene &scene, ArrangeTaskCtl &ctl) { auto task = ArrangeTaskBase::create(Tasks::Arrange, scene); auto result = task->process(ctl); - result->apply_on(scene.model()); + return result->apply_on(scene.model()); } }} // namespace Slic3r::arr2 diff --git a/src/libslic3r/Arrange/Scene.hpp b/src/libslic3r/Arrange/Scene.hpp index e7f6c2a7c0..16622e464a 100644 --- a/src/libslic3r/Arrange/Scene.hpp +++ b/src/libslic3r/Arrange/Scene.hpp @@ -373,10 +373,26 @@ public: } }; -void arrange(Scene &scene, ArrangeTaskCtl &ctl); -inline void arrange(Scene &scene, ArrangeTaskCtl &&ctl = DummyCtl{}) +bool arrange(Scene &scene, ArrangeTaskCtl &ctl); +inline bool arrange(Scene &scene, ArrangeTaskCtl &&ctl = DummyCtl{}) { - arrange(scene, ctl); + return arrange(scene, ctl); +} + +inline bool arrange(Scene &&scene, ArrangeTaskCtl &ctl) +{ + return arrange(scene, ctl); +} + +inline bool arrange(Scene &&scene, ArrangeTaskCtl &&ctl = DummyCtl{}) +{ + return arrange(scene, ctl); +} + +template +bool arrange(SceneBuilderBase &&builder, Ctl &&ctl = {}) +{ + return arrange(Scene{std::move(builder)}, ctl); } } // namespace arr2 diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index f0294e8a05..b5f53dfed5 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -1,14 +1,11 @@ #include "ModelArrange.hpp" - #include +#include +#include #include #include -#include "Arrange/Core/ArrangeItemTraits.hpp" -#include "Arrange/Items/ArrangeItem.hpp" - -#include "MTUtils.hpp" namespace Slic3r { @@ -27,14 +24,10 @@ bool arrange_objects(Model &model, const arr2::ArrangeBed &bed, const arr2::ArrangeSettingsView &settings) { - arr2::Scene scene{arr2::SceneBuilder{} - .set_bed(bed) - .set_arrange_settings(settings) - .set_model(model)}; - - auto task = arr2::ArrangeTaskBase::create(arr2::Tasks::Arrange, scene); - auto result = task->process(); - return result->apply_on(scene.model()); + return arrange(arr2::SceneBuilder{} + .set_bed(bed) + .set_arrange_settings(settings) + .set_model(model)); } void duplicate_objects(Model &model, diff --git a/tests/fff_print/test_data.cpp b/tests/fff_print/test_data.cpp index 8f9367ce51..fa41f88e2f 100644 --- a/tests/fff_print/test_data.cpp +++ b/tests/fff_print/test_data.cpp @@ -228,7 +228,7 @@ void init_print(std::vector &&meshes, Slic3r::Print &print, Slic3r object->add_volume(std::move(t)); object->add_instance(); } - arrange_objects(model, arr2::InfiniteBed{}, arr2::ArrangeSettings{}.set_distance_from_objects(min_object_distance(config))); + arrange_objects(model, arr2::to_arrange_bed(get_bed_shape(config)), arr2::ArrangeSettings{}.set_distance_from_objects(min_object_distance(config))); model.center_instances_around_point({100, 100}); for (ModelObject *mo : model.objects) { mo->ensure_on_bed(); diff --git a/tests/fff_print/test_model.cpp b/tests/fff_print/test_model.cpp index d59a655663..243cb10d1d 100644 --- a/tests/fff_print/test_model.cpp +++ b/tests/fff_print/test_model.cpp @@ -42,8 +42,12 @@ SCENARIO("Model construction", "[Model]") { } } model_object->add_instance(); - arrange_objects(model, arr2::InfiniteBed{scaled(Vec2d(100, 100))}, arr2::ArrangeSettings{}.set_distance_from_objects(min_object_distance(config))); - model_object->ensure_on_bed(); + arrange_objects(model, + arr2::to_arrange_bed(get_bed_shape(config)), + arr2::ArrangeSettings{}.set_distance_from_objects( + min_object_distance(config))); + + model_object->ensure_on_bed(); print.auto_assign_extruders(model_object); THEN("Print works?") { print.set_status_silent();