From 46d3d3afe14c26ade134e2133eacedb486d3feab Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 25 Jun 2024 15:14:15 +0500 Subject: [PATCH] calculate materials checksum in a common method --- src/blenderbim/blenderbim/bim/export_ifc.py | 2 +- src/blenderbim/blenderbim/tool/geometry.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/export_ifc.py b/src/blenderbim/blenderbim/bim/export_ifc.py index ef3bc7b6c0..c3a091857b 100644 --- a/src/blenderbim/blenderbim/bim/export_ifc.py +++ b/src/blenderbim/blenderbim/bim/export_ifc.py @@ -139,7 +139,7 @@ class IfcExporter: def has_changed_materials(self, obj: bpy.types.Object) -> bool: checksum = obj.data.BIMMeshProperties.material_checksum - return checksum != str([s.id() for s in tool.Geometry.get_styles(obj) if s]) + return checksum != tool.Geometry.get_material_checksum(obj) def sync_object_placement(self, obj: bpy.types.Object) -> Union[ifcopenshell.entity_instance, None]: element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) diff --git a/src/blenderbim/blenderbim/tool/geometry.py b/src/blenderbim/blenderbim/tool/geometry.py index e74cf9598c..95fcd142e4 100644 --- a/src/blenderbim/blenderbim/tool/geometry.py +++ b/src/blenderbim/blenderbim/tool/geometry.py @@ -405,6 +405,10 @@ class Geometry(blenderbim.core.tool.Geometry): return "IfcExtrudedAreaSolid/IfcCircleProfileDef" return "IfcExtrudedAreaSolid/IfcArbitraryProfileDefWithVoids" + @classmethod + def get_material_checksum(cls, obj: bpy.types.Object) -> str: + return str([s.id() for s in cls.get_styles(obj) if s]) + @classmethod def get_mesh_checksum(cls, mesh: Union[bpy.types.Mesh, bpy.types.Curve]) -> str: data_bytes = b"" @@ -659,7 +663,7 @@ class Geometry(blenderbim.core.tool.Geometry): @classmethod def record_object_materials(cls, obj: bpy.types.Object) -> None: - obj.data.BIMMeshProperties.material_checksum = str([s.id() for s in cls.get_styles(obj) if s]) + obj.data.BIMMeshProperties.material_checksum = cls.get_material_checksum(obj) @classmethod def record_object_position(cls, obj: bpy.types.Object) -> None: