Evil commit! Nothing really changed except;

- EditVlak -> EditFace
- variables called 'evl' -> 'efa'
- functions with 'vlak' in it now have 'face'

Just thought was nice starter for editmesh recode...
This commit is contained in:
Ton Roosendaal 2004-09-18 20:15:37 +00:00
parent a2ea84903e
commit 131e5908a6
15 changed files with 1504 additions and 1602 deletions

@ -113,7 +113,7 @@ DispListMesh *displistmesh_from_editmesh(EditMesh *em)
DispListMesh *dlm= MEM_callocN(sizeof(*dlm),"dlm");
EditVert *eve, *evePrev;
EditEdge *eed;
EditVlak *evl;
EditFace *evl;
MFace *mfNew;
int i;
@ -1457,7 +1457,7 @@ static void curve_to_displist(ListBase *nubase, ListBase *dispbase)
static void filldisplist(ListBase *dispbase, ListBase *to)
{
EditVert *eve, *v1, *vlast;
EditVlak *evl;
EditFace *evl;
DispList *dlnew=0, *dl;
float *f1;
int colnr=0, cont=1, tot, a, *index;
@ -1519,9 +1519,9 @@ static void filldisplist(ListBase *dispbase, ListBase *to)
if(totvert && BLI_edgefill(0)!=0) {
/* count faces (vlak in dutch!) */
/* count faces */
tot= 0;
evl= fillvlakbase.first;
evl= fillfacebase.first;
while(evl) {
tot++;
evl= evl->next;
@ -1553,7 +1553,7 @@ static void filldisplist(ListBase *dispbase, ListBase *to)
}
/* index data */
evl= fillvlakbase.first;
evl= fillfacebase.first;
index= dlnew->index;
while(evl) {
index[0]= (long)evl->v1->vn;

@ -1942,7 +1942,7 @@ static void displist_to_mesh(DispList *dlfirst)
MVert *mvert;
MFace *mface;
float *data, vec[3], min[3], max[3];
int a, b, startve, *idata, totedge=0, tottria=0, totquad=0, totvert=0, totvlak, totcol=0, colnr;
int a, b, startve, *idata, totedge=0, tottria=0, totquad=0, totvert=0, totface, totcol=0, colnr;
int p1, p2, p3, p4;
/* count first */
@ -2096,14 +2096,14 @@ static void displist_to_mesh(DispList *dlfirst)
}
}
totvlak= totquad+tottria+totedge;
totface= totquad+tottria+totedge;
printf("Import: %d vertices %d faces\n", totvert, totvlak);
printf("Import: %d vertices %d faces\n", totvert, totface);
if(totvert) me->mvert= MEM_callocN(totvert*sizeof(MVert), "mvert");
if(totvlak) me->mface= MEM_callocN(totvlak*sizeof(MFace), "mface");
if(totface) me->mface= MEM_callocN(totface*sizeof(MFace), "mface");
me->totvert= totvert;
me->totface= totvlak;
me->totface= totface;
mvert= me->mvert;
mface= me->mface;
@ -2682,7 +2682,7 @@ static void write_videoscape_mesh(Object *ob, char *str)
MFace *mface;
FILE *fp;
EditVert *eve;
EditVlak *evl;
EditFace *evl;
unsigned int kleur[32];
float co[3];
int a;

@ -206,7 +206,7 @@ struct _HyperFace {
/* for getting back tface, matnr, etc */
union {
int ind;
EditVlak *ef;
EditFace *ef;
} orig;
};
@ -423,7 +423,7 @@ static HyperMesh *hypermesh_from_editmesh(EditMesh *em, int subdivLevels) {
HyperMesh *hme= hypermesh_new();
EditVert *ev, *prevev;
EditEdge *ee;
EditVlak *ef;
EditFace *ef;
float creasefac= (float)subdivLevels;
int flag;
@ -1021,7 +1021,7 @@ static DispListMesh *hypermesh_to_displistmesh(HyperMesh *hme, short flag) {
mf->flag= origmf->flag;
mf->puno= 0;
} else {
EditVlak *origef= f->orig.ef;
EditFace *origef= f->orig.ef;
mf->mat_nr= origef->mat_nr;
mf->flag= origef->flag;

@ -65,11 +65,11 @@
#ifndef BLI_BLENLIB_H
#define BLI_BLENLIB_H
#include "DNA_listBase.h" /* braindamage for the masses... needed
because fillvlakbase and fillvertbase are
used outside */
/* braindamage for the masses... needed
because fillfacebase and fillvertbase are used outside */
#include "DNA_listBase.h"
extern ListBase fillvlakbase;
extern ListBase fillfacebase;
extern ListBase fillvertbase;
/**
* @attention Defined in scanfill.c

@ -63,16 +63,16 @@ typedef struct EditEdge
float crease;
} EditEdge;
typedef struct EditVlak
typedef struct EditFace
{
struct EditVlak *next, *prev;
struct EditFace *next, *prev;
struct EditVert *v1, *v2, *v3, *v4;
struct EditEdge *e1, *e2, *e3, *e4;
float n[3];
struct TFace tf; /* a copy of original tface. */
unsigned char mat_nr, flag;
unsigned char f, f1;
} EditVlak;
} EditFace;
typedef struct EditMesh
{

@ -115,7 +115,7 @@ typedef struct ScFillVert {
int vergscdata(const void *a1, const void *a2);
int vergpoly(const void *a1, const void *a2);
void *new_mem_element(int size);
void addfillvlak(EditVert *v1, EditVert *v2, EditVert *v3);
void addfillface(EditVert *v1, EditVert *v2, EditVert *v3);
int boundinside(PolyFill *pf1, PolyFill *pf2);
int boundisect(PolyFill *pf2, PolyFill *pf1);
void mergepolysSimp(PolyFill *pf1, PolyFill *pf2) /* pf2 added to pf1 */;
@ -137,7 +137,7 @@ ScFillVert *scdata;
ListBase fillvertbase = {0,0};
ListBase filledgebase = {0,0};
ListBase fillvlakbase = {0,0};
ListBase fillfacebase = {0,0};
short cox, coy;
@ -227,7 +227,7 @@ void BLI_end_edgefill(void)
fillvertbase.first= fillvertbase.last= 0;
filledgebase.first= filledgebase.last= 0;
fillvlakbase.first= fillvlakbase.last= 0;
fillfacebase.first= fillfacebase.last= 0;
}
/* **** FILL ROUTINES *************************** */
@ -262,13 +262,13 @@ EditEdge *BLI_addfilledge(EditVert *v1, EditVert *v2)
return newed;
}
void addfillvlak(EditVert *v1, EditVert *v2, EditVert *v3)
void addfillface(EditVert *v1, EditVert *v2, EditVert *v3)
{
/* does not make edges */
EditVlak *evl;
EditFace *evl;
evl= new_mem_element(sizeof(EditVlak));
BLI_addtail(&fillvlakbase, evl);
evl= new_mem_element(sizeof(EditFace));
BLI_addtail(&fillfacebase, evl);
evl->v1= v1;
evl->v2= v2;
@ -596,7 +596,7 @@ void scanfill(PolyFill *pf)
EditVert *eve,*v1,*v2,*v3;
EditEdge *eed,*nexted,*ed1,*ed2,*ed3;
float miny = 0.0;
int a,b,verts, maxvlak, totvlak; /* vlak = face in dutch! */
int a,b,verts, maxface, totface;
short nr, test, twoconnected=0;
nr= pf->nr;
@ -695,8 +695,8 @@ void scanfill(PolyFill *pf)
if(pf->f==0) twoconnected= 1;
/* (temporal) security: never much more faces than vertices */
totvlak= 0;
maxvlak= 2*verts; /* 2*verts: based at a filled circle within a triangle */
totface= 0;
maxface= 2*verts; /* 2*verts: based at a filled circle within a triangle */
sc= scdata;
for(a=0;a<verts;a++) {
@ -719,7 +719,7 @@ void scanfill(PolyFill *pf)
ed2= ed1->next;
if(callLocalInterruptCallBack()) break;
if(totvlak>maxvlak) {
if(totface>maxface) {
/* printf("Fill error: endless loop. Escaped at vert %d, tot: %d.\n", a, verts); */
a= verts;
break;
@ -774,8 +774,8 @@ void scanfill(PolyFill *pf)
else {
/* new triangle */
/* printf("add face %x %x %x\n",v1,v2,v3); */
addfillvlak(v1, v2, v3);
totvlak++;
addfillface(v1, v2, v3);
totface++;
BLI_remlink((ListBase *)&(sc->first),ed1);
BLI_addtail(&filledgebase,ed1);
ed1->v2->f= 0;
@ -1128,107 +1128,9 @@ int BLI_edgefill(int mode) /* THE MAIN FILL ROUTINE */
addlisttolist(&fillvertbase,&tempve);
addlisttolist(&filledgebase,&temped);
/* evl= fillvlakbase.first;
while(evl) {
printf("new face %x %x %x\n",evl->v1,evl->v2,evl->v3);
evl= evl->next;
}*/
/* FREE */
MEM_freeN(pflist);
return 1;
}
/*
MOVED TO EDITMESH.C since it's really bad to leave it here
void fill_mesh(void)
{
EditMesh *em = G.editMesh;
EditVert *eve,*v1;
EditEdge *eed,*e1,*nexted;
EditVlak *evl,*nextvl;
short ok;
if(G.obedit==0 || (G.obedit->type!=OB_MESH)) return;
waitcursor(1);
/ * alle selected vertices kopieeren * /
eve= em->verts.first;
while(eve) {
if(eve->f & 1) {
v1= addfillvert(eve->co);
eve->vn= v1;
v1->vn= eve;
v1->h= 0;
}
eve= eve->next;
}
/ * alle selected edges kopieeren * /
eed= em->edges.first;
while(eed) {
if( (eed->v1->f & 1) && (eed->v2->f & 1) ) {
e1= addfilledge(eed->v1->vn, eed->v2->vn);
e1->v1->h++;
e1->v2->h++;
}
eed= eed->next;
}
/ * van alle selected vlakken vertices en edges verwijderen om dubbels te voorkomen * /
/ * alle edges tellen punten op, vlakken trekken af,
edges met vertices ->h<2 verwijderen * /
evl= em->faces.first;
ok= 0;
while(evl) {
nextvl= evl->next;
if( vlakselectedAND(evl, 1) ) {
evl->v1->vn->h--;
evl->v2->vn->h--;
evl->v3->vn->h--;
if(evl->v4) evl->v4->vn->h--;
ok= 1;
}
evl= nextvl;
}
if(ok) { / * er zijn vlakken geselecteerd * /
eed= filledgebase.first;
while(eed) {
nexted= eed->next;
if(eed->v1->h<2 || eed->v2->h<2) {
remlink(&filledgebase,eed);
}
eed= nexted;
}
}
/ * tijd=clock(); * /
ok= edgefill(0);
/ * printf("time: %d\n",(clock()-tijd)/1000); * /
if(ok) {
evl= fillvlakbase.first;
while(evl) {
addvlaklist(evl->v1->vn, evl->v2->vn, evl->v3->vn, 0, evl);
evl= evl->next;
}
}
/ * else printf("fill error\n"); * /
end_edgefill();
waitcursor(0);
countall();
allqueue(REDRAWVIEW3D, 0);
}
MOVED TO editmesh.c !!!!! (you bastards!)
*/

@ -33,7 +33,7 @@
#ifndef BIF_EDITMESH_H
#define BIF_EDITMESH_H
struct EditVlak;
struct EditFace;
struct EditEdge;
struct EditVert;
struct Mesh;
@ -82,12 +82,12 @@ void editmesh_align_view_to_selected(struct View3D *v3d, int axis);
struct EditVert *addvertlist(float *vec);
struct EditEdge *addedgelist(struct EditVert *v1, struct EditVert *v2, struct EditEdge *example);
struct EditVlak *addvlaklist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditVlak *example);
struct EditFace *addfacelist(struct EditVert *v1, struct EditVert *v2, struct EditVert *v3, struct EditVert *v4, struct EditFace *example);
struct EditEdge *findedgelist(struct EditVert *v1, struct EditVert *v2);
void remedge(struct EditEdge *eed);
int vlakselectedAND(struct EditVlak *evl, int flag);
int faceselectedAND(struct EditFace *efa, int flag);
void recalc_editnormals(void);
void flip_editnormals(void);
@ -135,7 +135,7 @@ void spin_mesh(int steps,int degr,float *dvec, int mode);
void screw_mesh(int steps,int turns);
void selectswap_mesh(void);
void addvert_mesh(void);
void addedgevlak_mesh(void);
void addedgeface_mesh(void);
void delete_mesh(void);
void add_primitiveMesh(int type);
void hide_mesh(int swap);

@ -34,7 +34,7 @@
#define BSE_TRANS_TYPES_H
struct Object;
/* struct EditVlak; */
/* struct EditFace; */
/* struct EditEdge; */
/* struct EditVert; */
/* struct ListBase; */

@ -56,7 +56,7 @@ struct BezTriple;
struct Nurb;
struct EditVlak;
struct EditFace;
struct EditVert;
struct EditEdge;
struct EditIpo;

@ -388,7 +388,7 @@ static void decimate_apply(void)
void do_common_editbuts(unsigned short event) // old name, is a mix of object and editing events....
{
EditMesh *em = G.editMesh;
EditVlak *evl;
EditFace *efa;
Base *base;
Object *ob;
Mesh *me;
@ -404,16 +404,16 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
case B_MATWICH:
if(G.obedit && G.obedit->actcol>0) {
if(G.obedit->type == OB_MESH) {
evl= em->faces.first;
while(evl) {
if( vlakselectedAND(evl, 1) ) {
if(index== -1) index= evl->mat_nr;
else if(index!=evl->mat_nr) {
efa= em->faces.first;
while(efa) {
if( faceselectedAND(efa, 1) ) {
if(index== -1) index= efa->mat_nr;
else if(index!=efa->mat_nr) {
error("Mixed colors");
return;
}
}
evl= evl->next;
efa= efa->next;
}
}
else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) {
@ -449,11 +449,11 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
if(G.obedit && G.obedit->actcol>0) {
if(G.obedit->type == OB_MESH) {
undo_push_mesh("Assign material index");
evl= em->faces.first;
while(evl) {
if( vlakselectedAND(evl, 1) )
evl->mat_nr= G.obedit->actcol-1;
evl= evl->next;
efa= em->faces.first;
while(efa) {
if( faceselectedAND(efa, 1) )
efa->mat_nr= G.obedit->actcol-1;
efa= efa->next;
}
allqueue(REDRAWVIEW3D_Z, 0);
makeDispList(G.obedit);
@ -561,15 +561,15 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
case B_SETSOLID:
if(G.obedit) {
if(G.obedit->type == OB_MESH) {
evl= em->faces.first;
efa= em->faces.first;
if (event == B_SETSMOOTH) undo_push_mesh("Set Smooth");
else if (event==B_SETSOLID) undo_push_mesh("Set Solid");
while(evl) {
if( vlakselectedAND(evl, 1) ) {
if(event==B_SETSMOOTH) evl->flag |= ME_SMOOTH;
else evl->flag &= ~ME_SMOOTH;
while(efa) {
if( faceselectedAND(efa, 1) ) {
if(event==B_SETSMOOTH) efa->flag |= ME_SMOOTH;
else efa->flag &= ~ME_SMOOTH;
}
evl= evl->next;
efa= efa->next;
}
makeDispList(G.obedit);

@ -1724,7 +1724,7 @@ static void drawmeshsolid(Object *ob, float *nors)
MVert *mvert;
TFace *tface;
MFace *mface;
EditVlak *evl;
EditFace *efa;
float *extverts=0, *v1, *v2, *v3, *v4;
int glmode, setsmooth=0, a, start, end, matnr= -1, vertexpaint, i;
short no[3], *n1, *n2, *n3, *n4 = NULL;
@ -1758,36 +1758,36 @@ static void drawmeshsolid(Object *ob, float *nors)
if(ob==G.obedit || (G.obedit && ob->data==G.obedit->data)) {
evl= em->faces.first;
while(evl) {
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
efa= em->faces.first;
while(efa) {
if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0) {
if(evl->mat_nr!=matnr) {
matnr= evl->mat_nr;
if(efa->mat_nr!=matnr) {
matnr= efa->mat_nr;
set_gl_material(matnr+1);
}
if(evl->v4 && evl->v4->h==0) {
if(efa->v4 && efa->v4->h==0) {
glBegin(GL_QUADS);
glNormal3fv(evl->n);
glVertex3fv(evl->v1->co);
glVertex3fv(evl->v2->co);
glVertex3fv(evl->v3->co);
glVertex3fv(evl->v4->co);
glNormal3fv(efa->n);
glVertex3fv(efa->v1->co);
glVertex3fv(efa->v2->co);
glVertex3fv(efa->v3->co);
glVertex3fv(efa->v4->co);
glEnd();
}
else {
glBegin(GL_TRIANGLES);
glNormal3fv(evl->n);
glVertex3fv(evl->v1->co);
glVertex3fv(evl->v2->co);
glVertex3fv(evl->v3->co);
glNormal3fv(efa->n);
glVertex3fv(efa->v1->co);
glVertex3fv(efa->v2->co);
glVertex3fv(efa->v3->co);
glEnd();
}
}
evl= evl->next;
efa= efa->next;
}
glDisable(GL_LIGHTING);
@ -2380,7 +2380,7 @@ static void drawmeshwire(Object *ob)
DispList *dl;
Material *ma;
EditEdge *eed;
EditVlak *evl;
EditFace *efa;
float fvec[3], cent[3], *f1, *f2, *f3, *f4, *extverts=NULL;
int a, start, end, test, ok, handles=0;
@ -2400,47 +2400,47 @@ static void drawmeshwire(Object *ob)
glEnable(GL_BLEND);
glDepthMask(0); // disable write in zbuffer, needed for nice transp
evl= em->faces.first;
while(evl) {
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0 && (evl->v4==NULL || evl->v4->h==0)) {
efa= em->faces.first;
while(efa) {
if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0 && (efa->v4==NULL || efa->v4->h==0)) {
if(1) {
if(vlakselectedAND(evl, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
if(faceselectedAND(efa, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
else glColor4ub(col1[0], col1[1], col1[2], col1[3]);
glBegin(evl->v4?GL_QUADS:GL_TRIANGLES);
glVertex3fv(evl->v1->co);
glVertex3fv(evl->v2->co);
glVertex3fv(evl->v3->co);
if(evl->v4) glVertex3fv(evl->v4->co);
glBegin(efa->v4?GL_QUADS:GL_TRIANGLES);
glVertex3fv(efa->v1->co);
glVertex3fv(efa->v2->co);
glVertex3fv(efa->v3->co);
if(efa->v4) glVertex3fv(efa->v4->co);
glEnd();
} else {
if(vlakselectedAND(evl, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
if(faceselectedAND(efa, 1)) glColor4ub(col2[0], col2[1], col2[2], col2[3]);
else glColor4ub(col1[0], col1[1], col1[2], col1[3]);
if(evl->v4 && evl->v4->h==0) {
if(efa->v4 && efa->v4->h==0) {
CalcCent4f(cent, evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co);
CalcCent4f(cent, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
glBegin(GL_QUADS);
VecMidf(fvec, cent, evl->v1->co); glVertex3fv(fvec);
VecMidf(fvec, cent, evl->v2->co); glVertex3fv(fvec);
VecMidf(fvec, cent, evl->v3->co); glVertex3fv(fvec);
VecMidf(fvec, cent, evl->v4->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v1->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v2->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v3->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v4->co); glVertex3fv(fvec);
glEnd();
}
else {
CalcCent3f(cent, evl->v1->co, evl->v2->co, evl->v3->co);
CalcCent3f(cent, efa->v1->co, efa->v2->co, efa->v3->co);
glBegin(GL_TRIANGLES);
VecMidf(fvec, cent, evl->v1->co); glVertex3fv(fvec);
VecMidf(fvec, cent, evl->v2->co); glVertex3fv(fvec);
VecMidf(fvec, cent, evl->v3->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v1->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v2->co); glVertex3fv(fvec);
VecMidf(fvec, cent, efa->v3->co); glVertex3fv(fvec);
glEnd();
}
}
}
evl= evl->next;
efa= efa->next;
}
glDisable(GL_BLEND);
glDepthMask(1); // restore write in zbuffer
@ -2545,20 +2545,20 @@ static void drawmeshwire(Object *ob)
glBegin(GL_LINES);
evl= em->faces.first;
while(evl) {
if(evl->v1->h==0 && evl->v2->h==0 && evl->v3->h==0) {
if(evl->v4) CalcCent4f(fvec, evl->v1->co, evl->v2->co, evl->v3->co, evl->v4->co);
else CalcCent3f(fvec, evl->v1->co, evl->v2->co, evl->v3->co);
efa= em->faces.first;
while(efa) {
if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0) {
if(efa->v4) CalcCent4f(fvec, efa->v1->co, efa->v2->co, efa->v3->co, efa->v4->co);
else CalcCent3f(fvec, efa->v1->co, efa->v2->co, efa->v3->co);
glVertex3fv(fvec);
fvec[0]+= editbutsize*evl->n[0];
fvec[1]+= editbutsize*evl->n[1];
fvec[2]+= editbutsize*evl->n[2];
fvec[0]+= editbutsize*efa->n[0];
fvec[1]+= editbutsize*efa->n[1];
fvec[2]+= editbutsize*efa->n[2];
glVertex3fv(fvec);
}
evl= evl->next;
efa= efa->next;
}
glEnd();

@ -519,7 +519,7 @@ void countall()
MetaElem *ml;
/* struct BodyPoint *bop; */
struct EditVert *eve;
struct EditVlak *evl;
struct EditFace *efa;
#ifdef __NLA
struct EditBone *ebo;
#endif
@ -538,14 +538,14 @@ void countall()
if(eve->f & 1) G.totvertsel++;
eve= eve->next;
}
evl= em->faces.first;
while(evl) {
efa= em->faces.first;
while(efa) {
G.totface++;
if(evl->v1->f & 1) {
if(evl->v2->f & 1) {
if(evl->v3->f & 1) {
if(evl->v4) {
if(evl->v4->f & 1) G.totfacesel++;
if(efa->v1->f & 1) {
if(efa->v2->f & 1) {
if(efa->v3->f & 1) {
if(efa->v4) {
if(efa->v4->f & 1) G.totfacesel++;
}
else {
G.totfacesel++;
@ -553,7 +553,7 @@ void countall()
}
}
}
evl= evl->next;
efa= efa->next;
}
}
#ifdef __NLA

File diff suppressed because it is too large Load Diff

@ -1931,7 +1931,7 @@ void do_view3d_edit_mesh_edgesmenu(void *arg, int event)
loopoperations(LOOP_CUT);
break;
case 5: /* Make Edge/Face */
addedgevlak_mesh();
addedgeface_mesh();
break;
case 6:
bevel_menu();
@ -2016,7 +2016,7 @@ static void do_view3d_edit_mesh_facesmenu(void *arg, int event)
edge_flip();
break;
case 5: /* Make Edge/Face */
addedgevlak_mesh();
addedgeface_mesh();
break;
}
allqueue(REDRAWVIEW3D, 0);

@ -1189,7 +1189,7 @@ void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
else if(G.qual==LR_CTRLKEY)
edge_flip();
else if (G.qual==0)
addedgevlak_mesh();
addedgeface_mesh();
}
else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) addsegment_nurb();
}