Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bl_info = {
- "name": "Remove unused Vertex Groups",
- "author": "CoDEmanX",
- "version": (1, 0),
- "blender": (2, 70, 0),
- "location": "Properties Editor > Object data > Vertex Groups > Specials menu",
- "description": "Delete Vertex Groups with no assigned weight of active object",
- "warning": "",
- "wiki_url": "",
- "category": "Mesh"}
- import bpy
- import re
- from bpy.types import Operator
- class OBJECT_OT_vertex_group_remove_unused(Operator):
- bl_idname = "object.vertex_group_remove_unused"
- bl_label = "Remove unused Vertex Groups"
- bl_options = {'REGISTER', 'UNDO'}
- @classmethod
- def poll(cls, context):
- return (context.object is not None and
- context.object.type == 'MESH')
- def execute(self, context):
- ob = context.object
- ob.update_from_editmode()
- vgroup_used = {i: False for i, k in enumerate(ob.vertex_groups)}
- vgroup_names = {i: k.name for i, k in enumerate(ob.vertex_groups)}
- for v in ob.data.vertices:
- for g in v.groups:
- if g.weight > 0.0:
- vgroup_used[g.group] = True
- vgroup_name = vgroup_names[g.group]
- armatch = re.search('((.R|.L)(.(\d){1,}){0,1})(?!.)', vgroup_name)
- if armatch != None:
- tag = armatch.group()
- mirror_tag = tag.replace(".R", ".L") if armatch.group(2) == ".R" else tag.replace(".L", ".R")
- mirror_vgname = vgroup_name.replace(tag, mirror_tag)
- for i, name in sorted(vgroup_names.items(), reverse=True):
- if mirror_vgname == name:
- vgroup_used[i] = True
- break
- for i, used in sorted(vgroup_used.items(), reverse=True):
- if not used:
- ob.vertex_groups.remove(ob.vertex_groups[i])
- return {'FINISHED'}
- def draw_func(self, context):
- self.layout.operator(
- OBJECT_OT_vertex_group_remove_unused.bl_idname,
- icon='X'
- )
- def register():
- bpy.utils.register_module(__name__)
- bpy.types.MESH_MT_vertex_group_specials.prepend(draw_func)
- def unregister():
- bpy.utils.unregister_module(__name__)
- bpy.types.MESH_MT_vertex_group_specials.remove(draw_func)
- if __name__ == "__main__":
- register()
Advertisement
Add Comment
Please, Sign In to add comment