From 88331d16a2df8b94c8a877d5ff6e0aa44033e267 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 13 Jul 2020 16:12:34 +1000 Subject: [PATCH] Fix bug where imported materials that duplicated a name could be incorrectly assigned --- src/ifcblenderexport/blenderbim/bim/import_ifc.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ifcblenderexport/blenderbim/bim/import_ifc.py b/src/ifcblenderexport/blenderbim/bim/import_ifc.py index 8e16be9dc6..96ab37cedb 100644 --- a/src/ifcblenderexport/blenderbim/bim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/import_ifc.py @@ -5,6 +5,7 @@ import ifcopenshell.util.selector import bpy import bmesh import os +import re import shutil import threading import json @@ -105,7 +106,7 @@ class MaterialCreator(): return if len(obj.material_slots) == 1: return - slots = [s.name for s in obj.material_slots] + slots = [self.canonicalise_material_name(s.name) for s in obj.material_slots] material_to_slot = {} for i, material in enumerate(mesh['ios_materials']): if material == 'NULLMAT': @@ -119,6 +120,9 @@ class MaterialCreator(): else 0) for mat_id in mesh['ios_material_ids']] mesh.polygons.foreach_set('material_index', material_index) + def canonicalise_material_name(self, name): + return re.sub(r'\.[0-9]{3}', '', name) + def parse_material(self, element): for association in element.HasAssociations: if association.is_a('IfcRelAssociatesMaterial'):