# Removing all material slots in one go

I need some help in removing all material slots in one go using a python script. I am able to use this, would prefer to ave all removed.

bpy.context.object.active_material_index = 0
bpy.ops.object.material_slot_remove()
bpy.context.object.active_material_index = 1
bpy.ops.object.material_slot_remove()
bpy.context.object.active_material_index = 2
bpy.ops.object.material_slot_remove()

• You'll find some good answers here Jul 29 '19 at 17:07

import bpy #import the blender python library
for x in bpy.context.object.material_slots: #For all of the materials in the selected object:
bpy.context.object.active_material_index = 0 #select the top material
bpy.ops.object.material_slot_remove() #delete it


You can set the index of the list to 0, iterate through all slots and override the context of material_slot_remove():

for obj in bpy.context.selected_editable_objects:
obj.active_material_index = 0
for i in range(len(obj.material_slots)):
bpy.ops.object.material_slot_remove({'object': obj})

• Can you elaborate the part of overwriting the context? Apr 19 '20 at 17:09
• Further reading: poll() failed, context incorrect? @MikeW Apr 19 '20 at 18:40