ENH: Support global part selection relationships

JIRA: STUDIO-5972

Signed-off-by: Kunlong Ma <kunlong.ma@bambulab.com>
Change-Id: I9357ac79f42d4a3e89268cacb47b642560bd9837
This commit is contained in:
Kunlong Ma 2024-01-15 17:29:48 +08:00 committed by Lane.Wei
parent 33c1d5a0cf
commit e9ce83898f
1 changed files with 20 additions and 1 deletions

View File

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