From e9ce83898f87fc522923ade3c692ffeb89b7865d Mon Sep 17 00:00:00 2001 From: Kunlong Ma Date: Mon, 15 Jan 2024 17:29:48 +0800 Subject: [PATCH] ENH: Support global part selection relationships JIRA: STUDIO-5972 Signed-off-by: Kunlong Ma Change-Id: I9357ac79f42d4a3e89268cacb47b642560bd9837 --- src/slic3r/GUI/Plater.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 9195b5bc3..64d1a3357 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5951,9 +5951,18 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) if (current_panel == view3D) { if (old_panel == preview) preview->get_canvas3d()->unbind_event_handlers(); - else if (old_panel == assemble_view) + else if (old_panel == assemble_view) { assemble_view->get_canvas3d()->unbind_event_handlers(); + GLCanvas3D* assemble_canvas = assemble_view->get_canvas3d(); + Selection::IndicesList select_idxs = assemble_canvas->get_selection().get_volume_idxs(); + Selection& view3d_selection = view3D->get_canvas3d()->get_selection(); + view3d_selection.clear(); + for (unsigned int idx : select_idxs) { + view3d_selection.add(idx, false); + } + } + view3D->get_canvas3d()->bind_event_handlers(); if (view3D->is_reload_delayed()) { @@ -6032,6 +6041,16 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) assemble_view->get_canvas3d()->bind_event_handlers(); assemble_view->reload_scene(true); + if (old_panel == view3D) { + GLCanvas3D* view3D_canvas = view3D->get_canvas3d(); + Selection::IndicesList select_idxs = view3D_canvas->get_selection().get_volume_idxs(); + Selection& assemble_selection = assemble_view->get_canvas3d()->get_selection(); + assemble_selection.clear(); + for (unsigned int idx : select_idxs) { + assemble_selection.add(idx, false); + } + } + // BBS set default view and zoom if (first_enter_assemble) { wxGetApp().plater()->get_camera().requires_zoom_to_volumes = true;