diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py index 5f462f8a5e..7d7d5b6bfc 100644 --- a/src/blenderbim/blenderbim/bim/handler.py +++ b/src/blenderbim/blenderbim/bim/handler.py @@ -52,12 +52,17 @@ def subscribe_to(object, data_path, callback): def purge_module_data(): from blenderbim.bim import modules - for name in modules.keys(): + for name, value in modules.items(): try: getattr(getattr(getattr(ifcopenshell.api, name), "data"), "Data").purge() except AttributeError: pass + try: + getattr(value, "prop").purge() + except AttributeError: + pass + @persistent def loadIfcStore(scene): diff --git a/src/blenderbim/blenderbim/bim/module/bcf/prop.py b/src/blenderbim/blenderbim/bim/module/bcf/prop.py index 82426afc42..5c7baa1bd1 100644 --- a/src/blenderbim/blenderbim/bim/module/bcf/prop.py +++ b/src/blenderbim/blenderbim/bim/module/bcf/prop.py @@ -17,6 +17,11 @@ from bpy.props import ( bcfviewpoints_enum = None +def purge(): + global bcfviewpoints_enum + bcfviewpoints_enum = None + + def updateBcfReferenceLink(self, context): if bpy.context.scene.BCFProperties.is_loaded: bpy.ops.bim.edit_bcf_reference_links() diff --git a/src/blenderbim/blenderbim/bim/module/bimtester/prop.py b/src/blenderbim/blenderbim/bim/module/bimtester/prop.py index cd49e9edc1..db245767c7 100644 --- a/src/blenderbim/blenderbim/bim/module/bimtester/prop.py +++ b/src/blenderbim/blenderbim/bim/module/bimtester/prop.py @@ -18,6 +18,13 @@ scenarios_enum = [] classes_enum = [] +def purge(): + global scenarios_enum + global classes_enum + scenarios_enum = [] + classes_enum = [] + + def getScenarios(self, context): global scenarios_enum if len(scenarios_enum) < 1: diff --git a/src/blenderbim/blenderbim/bim/module/classification/prop.py b/src/blenderbim/blenderbim/bim/module/classification/prop.py index 85ffb7ce8b..932335a3a3 100644 --- a/src/blenderbim/blenderbim/bim/module/classification/prop.py +++ b/src/blenderbim/blenderbim/bim/module/classification/prop.py @@ -16,6 +16,11 @@ from bpy.props import ( classification_enum = [] +def purge(): + global classification_enum + classification_enum = [] + + def getClassifications(self, context): global classification_enum if len(classification_enum) < 1: diff --git a/src/blenderbim/blenderbim/bim/module/material/prop.py b/src/blenderbim/blenderbim/bim/module/material/prop.py index ffa7c5d87a..6b39d95691 100644 --- a/src/blenderbim/blenderbim/bim/module/material/prop.py +++ b/src/blenderbim/blenderbim/bim/module/material/prop.py @@ -21,6 +21,17 @@ profileclasses_enum = [] parameterizedprofileclasses_enum = [] +def purge(): + global materials_enum + global materialtypes_enum + global profileclasses_enum + global parameterizedprofileclasses_enum + materials_enum = [] + materialtypes_enum = [] + profileclasses_enum = [] + parameterizedprofileclasses_enum = [] + + def getProfileClasses(self, context): global profileclasses_enum if len(profileclasses_enum) == 0 and IfcStore.get_schema(): diff --git a/src/blenderbim/blenderbim/bim/module/patch/prop.py b/src/blenderbim/blenderbim/bim/module/patch/prop.py index b2d4315878..bfee66f4b0 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/prop.py +++ b/src/blenderbim/blenderbim/bim/module/patch/prop.py @@ -18,6 +18,11 @@ from bpy.props import ( ifcpatchrecipes_enum = [] +def purge(): + global ifcpatchrecipes_enum + ifcpatchrecipes_enum = [] + + def getIfcPatchRecipes(self, context): global ifcpatchrecipes_enum if len(ifcpatchrecipes_enum) < 1: diff --git a/src/blenderbim/blenderbim/bim/module/pset/prop.py b/src/blenderbim/blenderbim/bim/module/pset/prop.py index 42c2904e8a..d4dcbb75c9 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/prop.py +++ b/src/blenderbim/blenderbim/bim/module/pset/prop.py @@ -19,6 +19,13 @@ psetnames = {} qtonames = {} +def purge(): + global psetnames + global qtonames + psetnames = {} + qtonames = {} + + def getPsetNames(self, context): global psetnames obj = context.active_object diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/prop.py b/src/blenderbim/blenderbim/bim/module/pset_template/prop.py index 9a570bf5a0..36b8bc8c05 100644 --- a/src/blenderbim/blenderbim/bim/module/pset_template/prop.py +++ b/src/blenderbim/blenderbim/bim/module/pset_template/prop.py @@ -21,6 +21,13 @@ psettemplatefiles_enum = [] psettemplates_enum = [] +def purge(): + global psettemplatefiles_enum + global psettemplates_enum + psettemplatefiles_enum = [] + psettemplates_enum = [] + + def updatePsetTemplateFiles(self, context): global psettemplates_enum IfcStore.pset_template_path = os.path.join( diff --git a/src/blenderbim/blenderbim/bim/module/root/prop.py b/src/blenderbim/blenderbim/bim/module/root/prop.py index 20a4b63fec..80ba2a20e4 100644 --- a/src/blenderbim/blenderbim/bim/module/root/prop.py +++ b/src/blenderbim/blenderbim/bim/module/root/prop.py @@ -17,6 +17,15 @@ classes_enum = [] types_enum = [] +def purge(): + global products_enum + global classes_enum + global types_enum + products_enum = [] + classes_enum = [] + types_enum = [] + + def getIfcPredefinedTypes(self, context): global types_enum file = IfcStore.get_file() diff --git a/src/blenderbim/blenderbim/bim/module/type/prop.py b/src/blenderbim/blenderbim/bim/module/type/prop.py index 9fdce92635..bb895a7a36 100644 --- a/src/blenderbim/blenderbim/bim/module/type/prop.py +++ b/src/blenderbim/blenderbim/bim/module/type/prop.py @@ -20,6 +20,17 @@ type_classes_enum = [] available_types_enum = [] +def purge(): + global applicable_types_enum + global relating_types_enum + global type_classes_enum + global available_types_enum + applicable_types_enum = [] + relating_types_enum = [] + type_classes_enum = [] + available_types_enum = [] + + def getIfcTypes(self, context): global type_classes_enum file = IfcStore.get_file()