From 0af8902dde5890c45b09869e6dc9540cc1dc39fa Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 6 May 2020 21:10:39 +1000 Subject: [PATCH] Allow text annotation formatting functions --- src/ifcblenderexport/blenderbim/bim/cut_ifc.py | 8 +++++++- .../blenderbim/bim/import_ifc.py | 1 - src/ifccsv/ifccsv.py | 17 +++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/bim/cut_ifc.py b/src/ifcblenderexport/blenderbim/bim/cut_ifc.py index 1541d807ba..fa7052d4dc 100644 --- a/src/ifcblenderexport/blenderbim/bim/cut_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/cut_ifc.py @@ -219,7 +219,13 @@ class IfcCutter: for variable in text_obj.data.BIMTextProperties.variables: element = self.get_ifc_element(variable.global_id) if element: - text_obj_data[variable.name] = self.ifc_attribute_extractor.get_element_key(element, variable.prop_key) + if '{{' in variable.prop_key: + prop_key = variable.prop_key.split('{{')[1].split('}}')[0] + prop_value = self.ifc_attribute_extractor.get_element_key(element, prop_key) + variable_value = eval(variable.prop_key.replace('{{' + prop_key + '}}', str(prop_value))) + else: + variable_value = self.ifc_attribute_extractor.get_element_key(element, variable.prop_key) + text_obj_data[variable.name] = variable_value if text_obj_data: data[text_obj.name] = text_obj_data diff --git a/src/ifcblenderexport/blenderbim/bim/import_ifc.py b/src/ifcblenderexport/blenderbim/bim/import_ifc.py index a65ff4eac5..64ff6275bf 100644 --- a/src/ifcblenderexport/blenderbim/bim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/import_ifc.py @@ -939,7 +939,6 @@ class IfcImporter(): and getattr(association.RelatingDocument, value): setattr(reference, key, getattr(association.RelatingDocument, value)) - def place_objects_in_spatial_tree(self): for global_id, obj in self.added_data.items(): self.place_object_in_spatial_tree(self.file.by_guid(global_id), obj) diff --git a/src/ifccsv/ifccsv.py b/src/ifccsv/ifccsv.py index 058def38f3..6ac9042696 100644 --- a/src/ifccsv/ifccsv.py +++ b/src/ifccsv/ifccsv.py @@ -176,16 +176,13 @@ class IfcAttributeExtractor(): return getattr(element, key) elif '.' not in key: return None - elif key[0:3] == 'Qto': - qto_name, prop = key.split('.') - qto = IfcAttributeExtractor.get_element_qto(element, qto_name) - if qto: - return IfcAttributeExtractor.get_qto_property(qto, prop) - else: - pset_name, prop = key.split('.') - pset = IfcAttributeExtractor.get_element_pset(element, pset_name) - if pset: - return IfcAttributeExtractor.get_pset_property(pset, prop) + pset_name, prop = key.split('.') + pset = IfcAttributeExtractor.get_element_pset(element, pset_name) + if pset: + return IfcAttributeExtractor.get_pset_property(pset, prop) + qto = IfcAttributeExtractor.get_element_qto(element, pset_name) + if qto: + return IfcAttributeExtractor.get_qto_property(qto, prop) return None @staticmethod