mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Fix #5265. Accommodate invalid material sets.
This commit is contained in:
@@ -1712,7 +1712,7 @@ class LoadLinkedProject(bpy.types.Operator):
|
|||||||
mesh.polygons.foreach_set("loop_total", loop_total)
|
mesh.polygons.foreach_set("loop_total", loop_total)
|
||||||
mesh.polygons.foreach_set("use_smooth", [0] * total_faces)
|
mesh.polygons.foreach_set("use_smooth", [0] * total_faces)
|
||||||
|
|
||||||
if material_ids.size > 0:
|
if material_ids.size > 0 and len(mesh.polygons) == len(material_ids):
|
||||||
mesh.polygons.foreach_set("material_index", material_ids)
|
mesh.polygons.foreach_set("material_index", material_ids)
|
||||||
|
|
||||||
mesh.update()
|
mesh.update()
|
||||||
|
|||||||
@@ -136,21 +136,21 @@ class Patcher:
|
|||||||
if material.is_a("IfcMaterial"):
|
if material.is_a("IfcMaterial"):
|
||||||
materials = []
|
materials = []
|
||||||
elif material.is_a("IfcMaterialLayerSet"):
|
elif material.is_a("IfcMaterialLayerSet"):
|
||||||
for idx, item in enumerate(material.MaterialLayers):
|
for idx, item in enumerate(material.MaterialLayers or []):
|
||||||
material = item.Material
|
material = item.Material
|
||||||
properties.append([i, "IFC Material", f"Layer {idx + 1} Name", getattr(item, "Name", None)])
|
properties.append([i, "IFC Material", f"Layer {idx + 1} Name", getattr(item, "Name", None)])
|
||||||
properties.append([i, "IFC Material", f"Layer {idx + 1} Material", material.Name])
|
properties.append([i, "IFC Material", f"Layer {idx + 1} Material", material.Name])
|
||||||
if category := getattr(material, "Category", None):
|
if category := getattr(material, "Category", None):
|
||||||
properties.append([i, "IFC Material", f"Layer {idx + 1} Category", category])
|
properties.append([i, "IFC Material", f"Layer {idx + 1} Category", category])
|
||||||
elif material.is_a("IfcMaterialProfileSet"):
|
elif material.is_a("IfcMaterialProfileSet"):
|
||||||
for idx, item in enumerate(material.MaterialProfiles):
|
for idx, item in enumerate(material.MaterialProfiles or []):
|
||||||
material = item.Material
|
material = item.Material
|
||||||
properties.append([i, "IFC Material", f"Profile {idx + 1} Name", item.Name])
|
properties.append([i, "IFC Material", f"Profile {idx + 1} Name", item.Name])
|
||||||
properties.append([i, "IFC Material", f"Profile {idx + 1} Material", material.Name])
|
properties.append([i, "IFC Material", f"Profile {idx + 1} Material", material.Name])
|
||||||
if category := getattr(material, "Category", None):
|
if category := getattr(material, "Category", None):
|
||||||
properties.append([i, "IFC Material", f"Profile {idx + 1} Category", category])
|
properties.append([i, "IFC Material", f"Profile {idx + 1} Category", category])
|
||||||
elif material.is_a("IfcMaterialConstituentSet"):
|
elif material.is_a("IfcMaterialConstituentSet"):
|
||||||
for idx, item in enumerate(material.MaterialConstituents):
|
for idx, item in enumerate(material.MaterialConstituents or []):
|
||||||
material = item.Material
|
material = item.Material
|
||||||
properties.append([i, "IFC Material", f"Constituent {idx + 1} Name", item.Name])
|
properties.append([i, "IFC Material", f"Constituent {idx + 1} Name", item.Name])
|
||||||
properties.append([i, "IFC Material", f"Constituent {idx + 1} Material", material.Name])
|
properties.append([i, "IFC Material", f"Constituent {idx + 1} Material", material.Name])
|
||||||
|
|||||||
Reference in New Issue
Block a user