diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index dcf63827b9..af1db13bd6 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -256,7 +256,8 @@ class PurgeUnusedRepresentations(bpy.types.Operator, Operator): bl_options = {"REGISTER", "UNDO"} def _execute(self, context): - core.purge_unused_representations(tool.Ifc, tool.Geometry) + purged_representations = core.purge_unused_representations(tool.Ifc, tool.Geometry) + self.report({"INFO"}, f"{purged_representations} representations were purged.") class UpdateRepresentation(bpy.types.Operator, Operator): diff --git a/src/blenderbim/blenderbim/bim/module/profile/operator.py b/src/blenderbim/blenderbim/bim/module/profile/operator.py index c8cc8c3925..e507a058bb 100644 --- a/src/blenderbim/blenderbim/bim/module/profile/operator.py +++ b/src/blenderbim/blenderbim/bim/module/profile/operator.py @@ -223,7 +223,9 @@ class PurgeUnusedProfiles(bpy.types.Operator, tool.Ifc.Operator): def _execute(self, context): props = context.scene.BIMProfileProperties - core.purge_unused_profiles(tool.Ifc, tool.Profile) + purged_profiles = core.purge_unused_profiles(tool.Ifc, tool.Profile) + self.report({"INFO"}, f"{purged_profiles} profiles were purged.") + if props.is_editing: refresh() bpy.ops.bim.load_profiles() diff --git a/src/blenderbim/blenderbim/bim/module/type/operator.py b/src/blenderbim/blenderbim/bim/module/type/operator.py index ebb624829d..223ca0ce04 100644 --- a/src/blenderbim/blenderbim/bim/module/type/operator.py +++ b/src/blenderbim/blenderbim/bim/module/type/operator.py @@ -530,4 +530,5 @@ class PurgeUnusedTypes(bpy.types.Operator, tool.Ifc.Operator): bl_options = {"REGISTER", "UNDO"} def _execute(self, context): - core.purge_unused_types(tool.Ifc, tool.Type) + purged_types = core.purge_unused_types(tool.Ifc, tool.Type) + self.report({"INFO"}, f"{purged_types} types were purged.") diff --git a/src/blenderbim/blenderbim/core/geometry.py b/src/blenderbim/blenderbim/core/geometry.py index c26c54d822..b055a65d6c 100644 --- a/src/blenderbim/blenderbim/core/geometry.py +++ b/src/blenderbim/blenderbim/core/geometry.py @@ -158,9 +158,12 @@ def remove_representation(ifc, geometry, obj=None, representation=None): def purge_unused_representations(ifc, geometry): + purged_representations = 0 for representation in geometry.get_model_representations(): if ifc.get().get_total_inverses(representation) == 0: ifc.run("geometry.remove_representation", representation=representation) + purged_representations += 1 + return purged_representations def select_connection(geometry, connection=None): diff --git a/src/blenderbim/blenderbim/core/profile.py b/src/blenderbim/blenderbim/core/profile.py index 7f2e53b061..58029f1dc4 100644 --- a/src/blenderbim/blenderbim/core/profile.py +++ b/src/blenderbim/blenderbim/core/profile.py @@ -18,7 +18,10 @@ def purge_unused_profiles(ifc, profile): + purged_profiles = 0 for element_profile in profile.get_model_profiles(): if ifc.get().get_total_inverses(element_profile) > 0: continue ifc.run("profile.remove_profile", profile=element_profile) + purged_profiles += 1 + return purged_profiles diff --git a/src/blenderbim/blenderbim/core/type.py b/src/blenderbim/blenderbim/core/type.py index f4660895f6..ec36ad5ffe 100644 --- a/src/blenderbim/blenderbim/core/type.py +++ b/src/blenderbim/blenderbim/core/type.py @@ -32,10 +32,13 @@ def assign_type(ifc, type_tool, element=None, type=None): def purge_unused_types(ifc, type): + purged_types = 0 for element_type in type.get_model_types(): if not type.get_type_occurrences(element_type): obj = ifc.get_object(element_type) ifc.run("root.remove_product", product=element_type) + purged_types += 1 if obj: ifc.unlink(obj=obj) type.remove_object(obj) + return purged_types