Fix arrange in fff tests

This commit is contained in:
tamasmeszaros 2023-08-18 16:50:35 +02:00
parent 01d5f04295
commit b2d43c8719
5 changed files with 34 additions and 21 deletions

View File

@ -54,11 +54,11 @@ std::set<ObjectID> selected_geometry_ids(const Scene &sc)
return result; return result;
} }
void arrange(Scene &scene, ArrangeTaskCtl &ctl) bool arrange(Scene &scene, ArrangeTaskCtl &ctl)
{ {
auto task = ArrangeTaskBase::create(Tasks::Arrange, scene); auto task = ArrangeTaskBase::create(Tasks::Arrange, scene);
auto result = task->process(ctl); auto result = task->process(ctl);
result->apply_on(scene.model()); return result->apply_on(scene.model());
} }
}} // namespace Slic3r::arr2 }} // namespace Slic3r::arr2

View File

@ -373,10 +373,26 @@ public:
} }
}; };
void arrange(Scene &scene, ArrangeTaskCtl &ctl); bool arrange(Scene &scene, ArrangeTaskCtl &ctl);
inline void arrange(Scene &scene, ArrangeTaskCtl &&ctl = DummyCtl{}) 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 } // namespace arr2

View File

@ -1,14 +1,11 @@
#include "ModelArrange.hpp" #include "ModelArrange.hpp"
#include <libslic3r/Arrange/SceneBuilder.hpp> #include <libslic3r/Arrange/SceneBuilder.hpp>
#include <libslic3r/Arrange/Items/ArrangeItem.hpp>
#include <libslic3r/Arrange/Tasks/MultiplySelectionTask.hpp>
#include <libslic3r/Model.hpp> #include <libslic3r/Model.hpp>
#include <libslic3r/Geometry/ConvexHull.hpp> #include <libslic3r/Geometry/ConvexHull.hpp>
#include "Arrange/Core/ArrangeItemTraits.hpp"
#include "Arrange/Items/ArrangeItem.hpp"
#include "MTUtils.hpp"
namespace Slic3r { namespace Slic3r {
@ -27,14 +24,10 @@ bool arrange_objects(Model &model,
const arr2::ArrangeBed &bed, const arr2::ArrangeBed &bed,
const arr2::ArrangeSettingsView &settings) const arr2::ArrangeSettingsView &settings)
{ {
arr2::Scene scene{arr2::SceneBuilder{} return arrange(arr2::SceneBuilder{}
.set_bed(bed) .set_bed(bed)
.set_arrange_settings(settings) .set_arrange_settings(settings)
.set_model(model)}; .set_model(model));
auto task = arr2::ArrangeTaskBase::create(arr2::Tasks::Arrange, scene);
auto result = task->process();
return result->apply_on(scene.model());
} }
void duplicate_objects(Model &model, void duplicate_objects(Model &model,

View File

@ -228,7 +228,7 @@ void init_print(std::vector<TriangleMesh> &&meshes, Slic3r::Print &print, Slic3r
object->add_volume(std::move(t)); object->add_volume(std::move(t));
object->add_instance(); 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}); model.center_instances_around_point({100, 100});
for (ModelObject *mo : model.objects) { for (ModelObject *mo : model.objects) {
mo->ensure_on_bed(); mo->ensure_on_bed();

View File

@ -42,8 +42,12 @@ SCENARIO("Model construction", "[Model]") {
} }
} }
model_object->add_instance(); model_object->add_instance();
arrange_objects(model, arr2::InfiniteBed{scaled(Vec2d(100, 100))}, arr2::ArrangeSettings{}.set_distance_from_objects(min_object_distance(config))); arrange_objects(model,
model_object->ensure_on_bed(); 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); print.auto_assign_extruders(model_object);
THEN("Print works?") { THEN("Print works?") {
print.set_status_silent(); print.set_status_silent();