Added better error handling when material slots are empty

This commit is contained in:
Colin Basnett
2024-09-20 11:37:38 -07:00
parent 37c255f270
commit 638042202b

View File

@@ -57,7 +57,7 @@ def get_unique_materials(mesh_objects: Iterable[Object]) -> List[Material]:
for i, material_slot in enumerate(mesh_object.material_slots): for i, material_slot in enumerate(mesh_object.material_slots):
material = material_slot.material material = material_slot.material
if material is None: if material is None:
raise RuntimeError('Material slot cannot be empty (index ' + str(i) + ')') raise RuntimeError(f'Material slots cannot be empty ({mesh_object.name}, material slot index {i})')
materials.add(material) materials.add(material)
return list(materials) return list(materials)
@@ -308,7 +308,12 @@ class ASE_OT_export(Operator, ExportHelper):
mesh_objects = [x[0] for x in get_mesh_objects(context.selected_objects)] mesh_objects = [x[0] for x in get_mesh_objects(context.selected_objects)]
pg = getattr(context.scene, 'ase_export') pg = getattr(context.scene, 'ase_export')
try:
populate_material_list(mesh_objects, pg.material_list) populate_material_list(mesh_objects, pg.material_list)
except RuntimeError as e:
self.report({'ERROR'}, str(e))
return {'CANCELLED'}
self.filepath = f'{context.active_object.name}.ase' self.filepath = f'{context.active_object.name}.ase'