[Bf-committers] Convert Menu Patch
Johnny Matthews
johnny.matthews at gmail.com
Tue Mar 1 18:26:52 CET 2005
Here is a patch that adds an option to converting Subsurfs and Metas.
Instead of just Convert to "Mesh (Keep Original)" it adds "Mesh (Delete
Original)" to the pupmenu. Can someone who knows better check my code to
see if I am deleteing the objects in the proper manner. It did not crash
my system and seemed to work correctly, but I have been known to break
stuff before :)
Please give me some feedback and thoughts on this feature in general. It
is handy when you have a large amount of meshs that you are going to
join and some are subsurf and some not, then you can select them all,
convert the subsurf ones to mesh (deleting orig) and then join.
Also, Ton, who would this fall under, You I would guess.
Johnny Matthews
guitarGeek
-------------- next part --------------
Index: source/blender/src/editobject.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editobject.c,v
retrieving revision 1.163
diff -u -r1.163 editobject.c
--- source/blender/src/editobject.c 25 Feb 2005 17:40:03 -0000 1.163
+++ source/blender/src/editobject.c 1 Mar 2005 17:09:23 -0000
@@ -2081,7 +2081,7 @@
void convertmenu(void)
{
- Base *base, *basen, *basact;
+ Base *base, *basen, *basact, *basedel=NULL;
Object *ob, *ob1;
Curve *cu;
MetaBall *mb;
@@ -2102,7 +2102,7 @@
if(nr>0) ok= 1;
}
else if(ob->type==OB_MBALL) {
- nr= pupmenu("Convert Metaball to%t|Mesh (keep original)");
+ nr= pupmenu("Convert Metaball to%t|Mesh (keep original)%x1|Mesh (Delete Original)%x2");
if(nr>0) ok= 1;
}
else if(ob->type==OB_CURVE) {
@@ -2114,7 +2114,7 @@
if(nr>0) ok= 1;
}
else if(ob->type==OB_MESH && mesh_uses_displist((Mesh*) ob->data)) {
- nr= pupmenu("Convert SubSurf to%t|Mesh (Keep Original)");
+ nr= pupmenu("Convert SubSurf to%t|Mesh (Keep Original)%x1|Mesh (Delete Original)%x2");
if(nr>0) ok= 1;
}
if(ok==0) return;
@@ -2143,6 +2143,8 @@
if (mesh_uses_displist(oldme)) {
DispListMesh *dlm;
+ basedel = base;
+
ob->flag |= OB_DONE;
ob1= copy_object(ob);
@@ -2176,6 +2178,7 @@
enter_editmode();
exit_editmode(1); // freedata, but no undo
BASACT= basact;
+
}
}
else if(ob->type==OB_FONT) {
@@ -2220,10 +2223,11 @@
}
else if(ob->type==OB_MBALL) {
- if(nr==1) {
+ if(nr==1 || nr == 2) {
ob= find_basis_mball(ob);
if(ob->disp.first && !(ob->flag&OB_DONE)) {
+ basedel = base;
ob->flag |= OB_DONE;
@@ -2256,8 +2260,11 @@
}
}
base= base->next;
+ if(basedel != NULL && nr == 2)
+ free_and_unlink_base(basedel);
+ basedel = NULL;
}
-
+ countall();
allqueue(REDRAWVIEW3D, 0);
allqueue(REDRAWOOPS, 0);
allqueue(REDRAWBUTSEDIT, 0);
More information about the Bf-committers
mailing list