From f9db68575320ec0501d5a6dd88a26a6818bd88d8 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 1 Sep 2022 18:25:00 +1000 Subject: [PATCH] Fix #2343. Pset template applicability is refreshed when you save your templates. --- src/blenderbim/blenderbim/bim/schema.py | 15 ++++++++++----- .../api/pset_template/add_pset_template.py | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/schema.py b/src/blenderbim/blenderbim/bim/schema.py index 7daa9d8c26..3d8aa0773f 100644 --- a/src/blenderbim/blenderbim/bim/schema.py +++ b/src/blenderbim/blenderbim/bim/schema.py @@ -44,18 +44,23 @@ class IfcSchema: "IfcAnnotation", ] self.elements = {} + self.classification_files = {} + self.classifications = {} + self.load_pset_templates() + self.load() - self.property_files = [] + def load_pset_templates(self): property_paths = self.data_dir.joinpath("pset").glob("*.ifc") # TODO: add IFC2X3 PsetQto template support self.psetqto = ifcopenshell.util.pset.get_template("IFC4") + # Keep only the first template, which is the official buildingSMART one + self.psetqto.templates = self.psetqto.templates[0:1] + self.psetqto.get_applicable.cache_clear() + self.psetqto.get_applicable_names.cache_clear() + self.psetqto.get_by_name.cache_clear() for path in property_paths: self.psetqto.templates.append(ifcopenshell.open(path)) - self.classification_files = {} - self.classifications = {} - self.load() - def load(self): for product in self.products: with open(os.path.join(self.schema_dir, f"{product}_IFC4.json")) as f: diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py index 9688cda790..e54a9b8771 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py @@ -27,7 +27,7 @@ class Usecase: self.settings[key] = value def execute(self): - self.file.create_entity( + return self.file.create_entity( "IfcPropertySetTemplate", **{ "GlobalId": ifcopenshell.guid.new(),