Skip to content

Instantly share code, notes, and snippets.

@juliomarcos
Last active February 5, 2020 13:20
Show Gist options
  • Save juliomarcos/a09a3edaee230270b2853df5d64992cd to your computer and use it in GitHub Desktop.
Save juliomarcos/a09a3edaee230270b2853df5d64992cd to your computer and use it in GitHub Desktop.
import bpy
bl_info = {
"name": "FastMaterialAssign",
"author": "Júlio Rodrigues",
"version": (1, 0, 0),
"blender": (2, 80, 0),
"description": "Creates a Pie Menu for fast material assignment",
"category": "Face",
}
# Creates a Pie Menu for fast material assignment
class AssignFaceMaterial(bpy.types.Operator):
bl_idname = "assign.material_pie_menu"
bl_label = "Label Assign Material"
bl_options = {'REGISTER', 'UNDO'}
active_index: bpy.props.IntProperty(name="Material Active Index in object's list")
def execute(self, context):
context.object.active_material_index = self.active_index
bpy.ops.object.material_slot_assign()
return {'FINISHED'}
class VIEW3D_MT_Assign_Material(bpy.types.Menu):
bl_label = "Assign Material"
bl_id = "VIEW3D_MT_Assign_Material"
def draw(self, context):
layout = self.layout
active_object = context.view_layer.objects.active
if active_object:
mode = active_object.mode
if mode == "EDIT":
pie = layout.menu_pie()
for i, m in enumerate(context.object.data.materials):
props = pie.operator("assign.material_pie_menu", text=m.name, icon_value=m.preview.icon_id)
props.active_index = i
def register():
bpy.utils.register_class(AssignFaceMaterial)
bpy.utils.register_class(VIEW3D_MT_Assign_Material)
def unregister():
bpy.utils.unregister_class(AssignFaceMaterial)
bpy.utils.unregister_class(VIEW3D_MT_Assign_Material)
if __name__ == "__main__":
register()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment