From 20550049a839a0df72db7634e7a8710274251ace Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 16 Jan 2025 15:23:11 +0100 Subject: [PATCH] Sequential printability test applied to active bed only --- src/slic3r/GUI/ArrangeHelper.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/ArrangeHelper.cpp b/src/slic3r/GUI/ArrangeHelper.cpp index 1a1a1af0e3..530a0d0d25 100644 --- a/src/slic3r/GUI/ArrangeHelper.cpp +++ b/src/slic3r/GUI/ArrangeHelper.cpp @@ -209,9 +209,18 @@ bool check_seq_printability(const Model& model) // FIXME: This does not consider plates, non-printable objects and instances. Sequential::ScheduledPlate plate; - for (ModelObject* mo : model.objects) { - ModelInstance* mi = mo->instances.front(); - plate.scheduled_objects.emplace_back(mo->id().id, scaled(mi->get_offset().x()), scaled(mi->get_offset().y())); + for (const ModelObject* mo : model.objects) { + int inst_id = -1; + for (const ModelInstance* mi : mo->instances) { + ++inst_id; + + auto it = s_multiple_beds.get_inst_map().find(mi->id()); + if (it == s_multiple_beds.get_inst_map().end() || it->second != s_multiple_beds.get_active_bed()) + continue; + + Vec3d offset = s_multiple_beds.get_bed_translation(s_multiple_beds.get_active_bed()); + plate.scheduled_objects.emplace_back(inst_id == 0 ? mo->id().id : mi->id().id, scaled(mi->get_offset().x() - offset.x()), scaled(mi->get_offset().y() - offset.y())); + } } return Sequential::check_ScheduledObjectsForSequentialPrintability(solver_config, printer_geometry, objects, std::vector(1, plate));