diff --git a/src/slic3r-arrange-wrapper/src/SceneBuilder.cpp b/src/slic3r-arrange-wrapper/src/SceneBuilder.cpp index c95372361e..4d64253fe3 100644 --- a/src/slic3r-arrange-wrapper/src/SceneBuilder.cpp +++ b/src/slic3r-arrange-wrapper/src/SceneBuilder.cpp @@ -216,7 +216,17 @@ void SceneBuilder::build_arrangeable_slicer_model(ArrangeableSlicerModel &amodel if (m_fff_print && !m_xl_printer) m_xl_printer = is_XL_printer(m_fff_print->config()); - const bool has_wipe_tower = !m_wipetower_handlers.empty(); + const bool has_wipe_tower{std::any_of( + m_wipetower_handlers.begin(), + m_wipetower_handlers.end(), + [](const AnyPtr &handler){ + bool is_on_current_bed{false}; + handler->visit([&](const Arrangeable &arrangeable){ + is_on_current_bed = arrangeable.get_bed_index() == s_multiple_beds.get_active_bed(); + }); + return is_on_current_bed; + } + )}; if (m_xl_printer && !has_wipe_tower) { m_bed = XLBed{bounding_box(m_bed), bed_gap(m_bed)}; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 1e2d01fa0d..ddbdba84cb 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1351,10 +1351,8 @@ bool GLCanvas3D::is_arrange_alignment_enabled() const if (!is_XL_printer(*m_config)) { return false; } - for (const WipeTowerInfo &wti : this->get_wipe_tower_infos()) { - if (bool{wti}) { - return false; - } + if (this->m_wipe_tower_bounding_boxes[s_multiple_beds.get_active_bed()]) { + return false; } return true; } @@ -2553,6 +2551,8 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re } else { delete volume; } + } else { + m_wipe_tower_bounding_boxes[bed_idx] = std::nullopt; } } s_multiple_beds.ensure_wipe_towers_on_beds(wxGetApp().plater()->model(), wxGetApp().plater()->get_fff_prints()); diff --git a/src/slic3r/GUI/PresetArchiveDatabase.cpp b/src/slic3r/GUI/PresetArchiveDatabase.cpp index 2a62a79cfe..26cb49971e 100644 --- a/src/slic3r/GUI/PresetArchiveDatabase.cpp +++ b/src/slic3r/GUI/PresetArchiveDatabase.cpp @@ -920,4 +920,4 @@ bool PresetArchiveDatabase::sync_blocking(PresetUpdaterUIStatus* ui_status) return true; } -} // Slic3r \ No newline at end of file +} // Slic3r