From fd6a541689bbb9d941dd79b6bac299ee2d8d2193 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 28 Oct 2024 20:07:04 +0500 Subject: [PATCH] bonsai bcf v3 - fix issue activating camera in some cases --- src/bonsai/bonsai/bim/module/bcf/operator.py | 15 +++++--------- src/bonsai/bonsai/tool/bcf.py | 21 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/bcf/operator.py b/src/bonsai/bonsai/bim/module/bcf/operator.py index 97503e7019..0ff5b80d4e 100644 --- a/src/bonsai/bonsai/bim/module/bcf/operator.py +++ b/src/bonsai/bonsai/bim/module/bcf/operator.py @@ -1378,16 +1378,14 @@ class ActivateBcfViewpoint(bpy.types.Operator): def set_view_setup_hints( self, viewpoint: bcf.agnostic.visinfo.VisualizationInfoHandler, context: bpy.types.Context ) -> None: - if viewpoint.visualization_info.components.view_setup_hints: - if not viewpoint.visualization_info.components.view_setup_hints.spaces_visible: + # TODO: handle view_setup_hints.openings_visible + # should we reload elements with/without opening applied here or ...? + if view_setup_hints := tool.Bcf.get_viewpoint_view_setup_hints(viewpoint): + pass + if not view_setup_hints.spaces_visible: self.hide_spaces(context) - if viewpoint.visualization_info.components.view_setup_hints.openings_visible is not None: - self.set_openings_visibility( - viewpoint.visualization_info.components.view_setup_hints.openings_visible, context - ) else: self.hide_spaces(context) - self.set_openings_visibility(False, context) def hide_spaces(self, context: bpy.types.Context) -> None: old = context.area.type @@ -1397,9 +1395,6 @@ class ActivateBcfViewpoint(bpy.types.Operator): bpy.ops.object.hide_view_set() context.area.type = old - def set_openings_visibility(self, is_visible, context): - pass # We no longer have an openings collection - def set_selection(self, viewpoint: bcf.agnostic.visinfo.VisualizationInfoHandler) -> None: selected_global_ids = viewpoint.get_selected_guids() if selected_global_ids is None: diff --git a/src/bonsai/bonsai/tool/bcf.py b/src/bonsai/bonsai/tool/bcf.py index 55419bf2ae..4a4068034a 100644 --- a/src/bonsai/bonsai/tool/bcf.py +++ b/src/bonsai/bonsai/tool/bcf.py @@ -21,12 +21,17 @@ import bonsai.core.tool import bonsai.tool as tool import bpy import bcf.v2.model +import bcf.v2.model.visinfo import bcf.v2.topic + import bcf.v3.model +import bcf.v3.model.visinfo import bcf.v3.topic + import bcf.agnostic.model import bcf.agnostic.topic import bcf.agnostic.visinfo + from typing import Any, Union, TypeVar, TypeGuard, Optional @@ -260,3 +265,19 @@ class Bcf(bonsai.core.tool.Bcf): bitmaps = viewpoint.visualization_info.bitmaps bitmaps = bitmaps.bitmap if bitmaps else [] return bitmaps + + @classmethod + def get_viewpoint_view_setup_hints( + cls, viewpoint: bcf.agnostic.visinfo.VisualizationInfoHandler + ) -> Union[bcf.v2.model.visinfo.ViewSetupHints, bcf.v3.model.visinfo.ViewSetupHints, None]: + components = viewpoint.visualization_info.components + if not components: + return None + + if isinstance(components, bcf.v2.model.visinfo.Components): + return components.view_setup_hints + + visibility = components.visibility + if not visibility: + return None + return visibility.view_setup_hints