From d1e2ac4c5a47cd6b743b64f4de79e450b55daa13 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sat, 23 Jan 2021 12:20:06 +1100 Subject: [PATCH] WIP port BCF to new refactored approach. See #1222. --- src/ifcblenderexport/blenderbim/bim/import_ifc.py | 5 +++-- .../blenderbim/bim/module/bcf/operator.py | 11 ++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/bim/import_ifc.py b/src/ifcblenderexport/blenderbim/bim/import_ifc.py index dc51a948b3..732f1396ae 100644 --- a/src/ifcblenderexport/blenderbim/bim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/import_ifc.py @@ -1161,9 +1161,10 @@ class IfcImporter: self.openings[element.GlobalId] = obj def load_existing_rooted_elements(self): + # TODO: consider how this impacts file reloading, for now we assume you only ever load the same file again for obj in bpy.data.objects: - if hasattr(obj, "BIMObjectProperties") and obj.BIMObjectProperties.attributes.get("GlobalId"): - self.existing_elements[obj.BIMObjectProperties.attributes.get("GlobalId").string_value] = obj + if hasattr(obj, "BIMObjectProperties") and obj.BIMObjectProperties.ifc_definition_id: + self.existing_elements[self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId] = obj def load_diff(self): if not self.ifc_import_settings.diff_file: diff --git a/src/ifcblenderexport/blenderbim/bim/module/bcf/operator.py b/src/ifcblenderexport/blenderbim/bim/module/bcf/operator.py index 26af41b9f6..0f29905bfb 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/bcf/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/module/bcf/operator.py @@ -2,6 +2,7 @@ import os import bpy import bcf from . import bcfstore +from blenderbim.bim.ifc import IfcStore from math import radians, degrees, atan, tan, cos, sin from mathutils import Vector, Matrix, Euler, geometry @@ -624,6 +625,7 @@ class ActivateBcfViewpoint(bpy.types.Operator): bl_label = "Activate BCF Viewpoint" def execute(self, context): + self.file = IfcStore.get_file() bcfxml = bcfstore.BcfStore.get_bcfxml() props = bpy.context.scene.BCFProperties blender_topic = props.topics[props.active_topic_index] @@ -713,10 +715,9 @@ class ActivateBcfViewpoint(bpy.types.Operator): global_id_colours.setdefault(component.ifc_guid, coloring.color) for obj in bpy.data.objects: - global_id = obj.BIMObjectProperties.attributes.get("GlobalId") - if not global_id: + if not obj.BIMObjectProperties.ifc_definition_id: continue - global_id = global_id.string_value + global_id = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId is_visible = viewpoint.components.visibility.default_visibility if global_id in exception_global_ids: is_visible = not is_visible @@ -724,9 +725,9 @@ class ActivateBcfViewpoint(bpy.types.Operator): obj.hide_set(True) continue if "IfcSpace" in obj.name: - is_visible = viewpoint.components.viewSetuphints.spacesVisible + is_visible = viewpoint.components.view_setup_hints.spaces_visible elif "IfcOpeningElement" in obj.name: - is_visible = viewpoint.components.viewSetuphints.openingsVisible + is_visible = viewpoint.components.view_setup_hints.openings_visible obj.hide_set(not is_visible) if not is_visible: continue