forked from bartvdbraak/blender
Added 'delete unlocked vertex groups' option.
This commit is contained in:
parent
aad46dd175
commit
cf8f6d1dbc
@ -38,6 +38,7 @@ class MESH_MT_vertex_group_specials(Menu):
|
||||
layout.operator("object.vertex_group_mirror", text="Mirror Vertex Group (Topology)", icon='ARROW_LEFTRIGHT').use_topology = True
|
||||
layout.operator("object.vertex_group_remove_from", icon='X', text="Remove from All Groups").use_all_groups = True
|
||||
layout.operator("object.vertex_group_remove_from", icon='X', text="Clear Active Group").use_all_verts = True
|
||||
layout.operator("object.vertex_group_remove", icon='X', text="Delete All Unlocked Groups").all_unlocked = True
|
||||
layout.operator("object.vertex_group_remove", icon='X', text="Delete All Groups").all = True
|
||||
layout.separator()
|
||||
layout.operator("object.vertex_group_lock", icon='LOCKED', text="Lock All").action = 'LOCK'
|
||||
|
@ -51,9 +51,11 @@ bool BKE_object_defgroup_clear(struct Object *ob, struct bDeformGroup *dg, const
|
||||
bool BKE_object_defgroup_clear_all(struct Object *ob, const bool use_selection);
|
||||
|
||||
void BKE_object_defgroup_remove(struct Object *ob, struct bDeformGroup *defgroup);
|
||||
void BKE_object_defgroup_remove_all_ex(struct Object *ob, bool only_unlocked);
|
||||
void BKE_object_defgroup_remove_all(struct Object *ob);
|
||||
|
||||
|
||||
|
||||
/* Select helpers */
|
||||
enum eVGroupSelect;
|
||||
bool *BKE_object_defgroup_subset_from_select_type(
|
||||
|
@ -408,8 +408,9 @@ void BKE_object_defgroup_remove(Object *ob, bDeformGroup *defgroup)
|
||||
|
||||
/**
|
||||
* Remove all vgroups from object. Work in Object and Edit modes.
|
||||
* When only_unlocked=true, locked vertex groups are not removed.
|
||||
*/
|
||||
void BKE_object_defgroup_remove_all(Object *ob)
|
||||
void BKE_object_defgroup_remove_all_ex(struct Object *ob, bool only_unlocked)
|
||||
{
|
||||
bDeformGroup *dg = (bDeformGroup *)ob->defbase.first;
|
||||
const bool edit_mode = BKE_object_is_in_editmode_vgroup(ob);
|
||||
@ -418,10 +419,12 @@ void BKE_object_defgroup_remove_all(Object *ob)
|
||||
while (dg) {
|
||||
bDeformGroup *next_dg = dg->next;
|
||||
|
||||
if (edit_mode)
|
||||
object_defgroup_remove_edit_mode(ob, dg);
|
||||
else
|
||||
object_defgroup_remove_object_mode(ob, dg);
|
||||
if (!only_unlocked || (dg->flag & DG_LOCK_WEIGHT) == 0) {
|
||||
if (edit_mode)
|
||||
object_defgroup_remove_edit_mode(ob, dg);
|
||||
else
|
||||
object_defgroup_remove_object_mode(ob, dg);
|
||||
}
|
||||
|
||||
dg = next_dg;
|
||||
}
|
||||
@ -445,6 +448,15 @@ void BKE_object_defgroup_remove_all(Object *ob)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all vgroups from object. Work in Object and Edit modes.
|
||||
*/
|
||||
void BKE_object_defgroup_remove_all(struct Object *ob)
|
||||
{
|
||||
BKE_object_defgroup_remove_all_ex(ob, false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get MDeformVert vgroup data from given object. Should only be used in Object mode.
|
||||
*
|
||||
|
@ -2604,6 +2604,8 @@ static int vertex_group_remove_exec(bContext *C, wmOperator *op)
|
||||
|
||||
if (RNA_boolean_get(op->ptr, "all"))
|
||||
BKE_object_defgroup_remove_all(ob);
|
||||
else if (RNA_boolean_get(op->ptr, "all_unlocked"))
|
||||
BKE_object_defgroup_remove_all_ex(ob, true);
|
||||
else
|
||||
vgroup_delete_active(ob);
|
||||
|
||||
@ -2633,6 +2635,7 @@ void OBJECT_OT_vertex_group_remove(wmOperatorType *ot)
|
||||
|
||||
/* properties */
|
||||
RNA_def_boolean(ot->srna, "all", 0, "All", "Remove all vertex groups");
|
||||
RNA_def_boolean(ot->srna, "all_unlocked", 0, "All Unlocked", "Remove all unlocked vertex groups");
|
||||
}
|
||||
|
||||
static int vertex_group_assign_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
|
Loading…
Reference in New Issue
Block a user