Browse Source

Fix arrange in fff tests

tamasmeszaros 1 year ago
parent
commit
b2d43c8719

+ 2 - 2
src/libslic3r/Arrange/Scene.cpp

@@ -54,11 +54,11 @@ std::set<ObjectID> 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

+ 19 - 3
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<class Builder, class Ctl = DummyCtl>
+bool arrange(SceneBuilderBase<Builder> &&builder, Ctl &&ctl = {})
+{
+    return arrange(Scene{std::move(builder)}, ctl);
 }
 
 } // namespace arr2

+ 6 - 13
src/libslic3r/ModelArrange.cpp

@@ -1,14 +1,11 @@
 #include "ModelArrange.hpp"
 
-
 #include <libslic3r/Arrange/SceneBuilder.hpp>
+#include <libslic3r/Arrange/Items/ArrangeItem.hpp>
+#include <libslic3r/Arrange/Tasks/MultiplySelectionTask.hpp>
 
 #include <libslic3r/Model.hpp>
 #include <libslic3r/Geometry/ConvexHull.hpp>
-#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,

+ 1 - 1
tests/fff_print/test_data.cpp

@@ -228,7 +228,7 @@ void init_print(std::vector<TriangleMesh> &&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();

+ 6 - 2
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();