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;
}
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

View File

@ -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

View File

@ -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,

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_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();

View File

@ -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();