Page MenuHome

vgroup.txt

vgroup.txt

? user-config.py
? tools/Blender.pyc
? tools/__init__.pyc
? tools/bcolors.pyc
? tools/btools.pyc
Index: source/blender/include/BIF_editdeform.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/BIF_editdeform.h,v
retrieving revision 1.11
diff -u -r1.11 BIF_editdeform.h
--- source/blender/include/BIF_editdeform.h 3 Sep 2006 12:16:13 -0000 1.11
+++ source/blender/include/BIF_editdeform.h 27 Feb 2007 00:15:30 -0000
@@ -46,7 +46,9 @@
void unique_vertexgroup_name (struct bDeformGroup *dg, struct Object *ob);
struct bDeformGroup *add_defgroup_name (struct Object *ob, char *name);
void add_defgroup (struct Object *ob);
+void del_defgroup_in_object_mode ( Object *ob );
void del_defgroup (struct Object *ob);
+void duplicate_defgroup ( struct Object *ob );
void assign_verts_defgroup (void);
void remove_verts_defgroup (int allverts);
void sel_verts_defgroup (int select);
Index: source/blender/include/butspace.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/butspace.h,v
retrieving revision 1.101
diff -u -r1.101 butspace.h
--- source/blender/include/butspace.h 1 Jan 2007 08:32:11 -0000 1.101
+++ source/blender/include/butspace.h 27 Feb 2007 00:15:31 -0000
@@ -417,6 +417,7 @@
#define B_DESELVGROUP 2096
#define B_AUTOVGROUP 2097
#define B_LINKEDVGROUP 2098
+#define B_COPYVGROUP 2099
Index: source/blender/src/buttons_editing.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/buttons_editing.c,v
retrieving revision 1.360
diff -u -r1.360 buttons_editing.c
--- source/blender/src/buttons_editing.c 23 Feb 2007 20:06:17 -0000 1.360
+++ source/blender/src/buttons_editing.c 27 Feb 2007 00:16:01 -0000
@@ -3834,7 +3834,10 @@
allqueue(REDRAWOOPS, 0);
break;
case B_DELVGROUP:
- del_defgroup (ob);
+ if ((G.obedit) && (G.obedit == ob))
+ del_defgroup (ob);
+ else
+ del_defgroup_in_object_mode (ob);
allqueue (REDRAWVIEW3D, 1);
allqueue(REDRAWOOPS, 0);
BIF_undo_push("Delete vertex group");
@@ -3865,6 +3868,11 @@
case B_LINKEDVGROUP:
copy_linked_vgroup_channels(ob);
break;
+ case B_COPYVGROUP:
+ duplicate_defgroup (ob);
+ scrarea_queue_winredraw (curarea);
+ allqueue (REDRAWOOPS, 0);
+ break;
}
}
@@ -4377,9 +4385,15 @@
uiBlockEndAlign(block);
}
else {
+ uiBlockBeginAlign (block);
+ uiDefBut (block, BUT, B_NEWVGROUP, "New", 143, 90, 70, 21, 0, 0, 0, 0, 0, "Creates a new vertex group");+ uiDefBut (block, BUT, B_NEWVGROUP, "New", 143, 90, 70, 21, 0, 0, 0, 0, 0, "Creates a new vertex group");+ uiDefBut (block, BUT, B_NEWVGROUP, "New", 143, 90, 70, 21, 0, 0, 0, 0, 0, "Creates a new vertex group");+ uiDefBut (block, BUT, B_NEWVGROUP, "New", 143, 90, 70, 21, 0, 0, 0, 0, 0, "Creates a new vertex group");
+ uiDefBut (block, BUT, B_DELVGROUP, "Delete", 213, 90, 70, 21, 0, 0, 0, 0, 0, "Removes the current vertex group");
+ uiDefBut (block, BUT, B_COPYVGROUP, "Copy Group", 143, 70, 140, 19, 0, 0, 0, 0, 0, "Copy Group of Vertex");
+ uiBlockEndAlign (block);
+
ID *id= ob->data;
if(id->us>1)
- uiDefBut(block, BUT,B_LINKEDVGROUP, "Copy To Linked", 143,69,140,20, 0, 0, 0, 0, 0, "Creates identical vertex group names in other Objects using this Object-data");
+ uiDefBut(block, BUT,B_LINKEDVGROUP, "Copy To Linked", 143,50,140,20, 0, 0, 0, 0, 0, "Creates identical vertex group names in other Objects using this Object-data");
}
}
Index: source/blender/src/editdeform.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editdeform.c,v
retrieving revision 1.38
diff -u -r1.38 editdeform.c
--- source/blender/src/editdeform.c 23 Feb 2007 20:34:27 -0000 1.38
+++ source/blender/src/editdeform.c 27 Feb 2007 00:16:02 -0000
@@ -201,6 +201,97 @@
return defgroup;
}
+void duplicate_defgroup ( Object *ob )
+{
+ bDeformGroup *dg, *cdg;
+ char name[32], s[32];
+ MDeformWeight *org, *cpy;
+ MDeformVert *dvert;
+ Mesh *me;
+ int i, idg, icdg;
+
+ if (ob->type != OB_MESH)
+ return;
+
+ dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
+ if (!dg)
+ return;
+
+ snprintf (name, 32, "%s_copy", dg->name);
+ while (get_named_vertexgroup (ob, name)) {
+ if ((strlen (name) + 6) > 32) {
+ error ("Error: the name for the new group is > 32 characters");
+ return;
+ }
+ strcpy (s, name);
+ snprintf (name, 32, "%s_copy", s);
+ }
+
+ cdg = copy_defgroup (dg);
+ strcpy (cdg->name, name);
+ BLI_addtail (&ob->defbase, cdg);
+
+ idg = (ob->actdef-1);
+ ob->actdef = BLI_countlist (&ob->defbase);
+ icdg = (ob->actdef-1);
+
+ me = get_mesh (ob);
+ if (!me->dvert)
+ return;
+
+ for (i = 0; i < me->totvert; i++) {
+ dvert = me->dvert+i;
+ org = get_defweight (dvert, idg);
+ if (org) {
+ cpy = verify_defweight (dvert, icdg);
+ cpy->weight = org->weight;
+ }
+ }
+}
+
+void del_defgroup_in_object_mode ( Object *ob )
+{
+ bDeformGroup *dg;
+ MDeformVert *dvert;
+ Mesh *me;
+ int i, e;
+
+ if ((!ob) || (ob->type != OB_MESH))
+ return;
+
+ dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
+ if (!dg)
+ return;
+
+ me = get_mesh (ob);
+ if (me->dvert) {
+ for (i = 0; i < me->totvert; i++) {
+ dvert = me->dvert + i;
+ if (dvert) {
+ if (get_defweight (dvert, (ob->actdef-1)))
+ remove_vert_defgroup (ob, dg, i);
+ }
+ }
+
+ for (i = 0; i < me->totvert; i++) {
+ dvert = me->dvert+i;
+ if (dvert) {
+ for (e = 0; e < dvert->totweight; e++) {
+ if (dvert->dw[e].def_nr > (ob->actdef-1))
+ dvert->dw[e].def_nr--;
+ }
+ }
+ }
+ }
+
+ /* Update the active deform index if necessary */
+ if (ob->actdef == BLI_countlist(&ob->defbase))
+ ob->actdef--;
+
+ /* Remove the group */
+ BLI_freelinkN (&ob->defbase, dg);
+}
+
void del_defgroup (Object *ob)
{
bDeformGroup *defgroup;

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
63/78/09381c18bd959493755513663cb4

Event Timeline