[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25394] trunk/blender/source/blender/ editors/mesh: solidify would only work as expecyed if all faces were selected, added an override to extrude that means it runs without removing selected faces first , even on a partial selection
Campbell Barton
ideasman42 at gmail.com
Tue Dec 15 01:53:34 CET 2009
Revision: 25394
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25394
Author: campbellbarton
Date: 2009-12-15 01:53:34 +0100 (Tue, 15 Dec 2009)
Log Message:
-----------
solidify would only work as expecyed if all faces were selected, added an override to extrude that means it runs without removing selected faces first, even on a partial selection
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/editmesh_add.c
trunk/blender/source/blender/editors/mesh/editmesh_lib.c
trunk/blender/source/blender/editors/mesh/editmesh_mods.c
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
trunk/blender/source/blender/editors/mesh/mesh_intern.h
Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c 2009-12-15 00:24:30 UTC (rev 25393)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c 2009-12-15 00:53:34 UTC (rev 25394)
@@ -192,7 +192,7 @@
}
}
- extrudeflag(vc.obedit, vc.em, SELECT, nor);
+ extrudeflag(vc.obedit, vc.em, SELECT, nor, 0);
rotateflag(vc.em, SELECT, cent, mat);
translateflag(vc.em, SELECT, min);
@@ -1025,7 +1025,7 @@
mul_mat3_m4_v3(mat, vec);
for(a=0;a<seg-1;a++) {
- extrudeflag_vert(obedit, em, 2, nor); // nor unused
+ extrudeflag_vert(obedit, em, 2, nor, 0); // nor unused
translateflag(em, 2, vec);
}
break;
@@ -1060,7 +1060,7 @@
quat_to_mat3( cmat,q);
for(a=0; a<seg; a++) {
- extrudeflag_vert(obedit, em, 2, nor); // nor unused
+ extrudeflag_vert(obedit, em, 2, nor, 0); // nor unused
rotateflag(em, 2, v1->co, cmat);
}
Modified: trunk/blender/source/blender/editors/mesh/editmesh_lib.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_lib.c 2009-12-15 00:24:30 UTC (rev 25393)
+++ trunk/blender/source/blender/editors/mesh/editmesh_lib.c 2009-12-15 00:53:34 UTC (rev 25394)
@@ -1143,7 +1143,7 @@
/* this is actually a recode of extrudeflag(), using proper edge/face select */
/* hurms, doesnt use 'flag' yet, but its not called by primitive making stuff anyway */
-static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *nor)
+static short extrudeflag_edge(Object *obedit, EditMesh *em, short flag, float *nor, int all)
{
/* all select edges/faces: extrude */
/* old select is cleared, in new ones it is set */
@@ -1256,11 +1256,13 @@
set_edge_directions_f2(em, 2);
/* step 1.5: if *one* selected face has edge with unselected face; remove old selected faces */
- for(efa= em->faces.last; efa; efa= efa->prev) {
- if(efa->f & SELECT) {
- if(efa->e1->f1 || efa->e2->f1 || efa->e3->f1 || (efa->e4 && efa->e4->f1)) {
- del_old= 1;
- break;
+ if(all == 0) {
+ for(efa= em->faces.last; efa; efa= efa->prev) {
+ if(efa->f & SELECT) {
+ if(efa->e1->f1 || efa->e2->f1 || efa->e3->f1 || (efa->e4 && efa->e4->f1)) {
+ del_old= 1;
+ break;
+ }
}
}
}
@@ -1398,7 +1400,7 @@
return 'n'; // normal constraint
}
-short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor)
+short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor, int all)
{
/* all verts/edges/faces with (f & 'flag'): extrude */
/* from old verts, 'flag' is cleared, in new ones it is set */
@@ -1569,7 +1571,7 @@
*/
/* find if we delete old faces */
- if(is_face_sel) {
+ if(is_face_sel && all==0) {
for(eed= em->edges.first; eed; eed= eed->next) {
if( (eed->f2==1 || eed->f2==2) ) {
if(eed->f1==2) {
@@ -1685,12 +1687,12 @@
}
/* generic extrude */
-short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor)
+short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor, int all)
{
if(em->selectmode & SCE_SELECT_VERTEX)
- return extrudeflag_vert(obedit, em, flag, nor);
+ return extrudeflag_vert(obedit, em, flag, nor, all);
else
- return extrudeflag_edge(obedit, em, flag, nor);
+ return extrudeflag_edge(obedit, em, flag, nor, all);
}
Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c 2009-12-15 00:24:30 UTC (rev 25393)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c 2009-12-15 00:53:34 UTC (rev 25394)
@@ -4545,14 +4545,13 @@
static int solidify_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
float nor[3] = {0,0,1};
float thickness= RNA_float_get(op->ptr, "thickness");
- extrudeflag(obedit, em, SELECT, nor);
+ extrudeflag(obedit, em, SELECT, nor, 1);
EM_make_hq_normals(em);
EM_solidify(em, thickness);
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2009-12-15 00:24:30 UTC (rev 25393)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2009-12-15 00:53:34 UTC (rev 25394)
@@ -660,7 +660,7 @@
if(nr<1) return;
- if(nr==1) transmode= extrudeflag(obedit, em, SELECT, nor);
+ if(nr==1) transmode= extrudeflag(obedit, em, SELECT, nor, 0);
else if(nr==4) transmode= extrudeflag_verts_indiv(em, SELECT, nor);
else if(nr==3) transmode= extrudeflag_edges_indiv(em, SELECT, nor);
else transmode= extrudeflag_face_indiv(em, SELECT, nor);
@@ -816,7 +816,7 @@
mul_m3_v3(tmat, dvec);
for(a=0; a<steps; a++) {
- extrudeflag(obedit, em, SELECT, nor);
+ extrudeflag(obedit, em, SELECT, nor, 0);
translateflag(em, SELECT, dvec);
}
@@ -898,7 +898,7 @@
adduplicateflag(em, 1);
for(a=0; a<steps; a++) {
- if(dupli==0) ok= extrudeflag(obedit, em, SELECT, nor);
+ if(dupli==0) ok= extrudeflag(obedit, em, SELECT, nor, 0);
else adduplicateflag(em, SELECT);
if(ok==0)
Modified: trunk/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_intern.h 2009-12-15 00:24:30 UTC (rev 25393)
+++ trunk/blender/source/blender/editors/mesh/mesh_intern.h 2009-12-15 00:53:34 UTC (rev 25394)
@@ -116,8 +116,8 @@
extern short extrudeflag_face_indiv(EditMesh *em, short flag, float *nor);
extern short extrudeflag_verts_indiv(EditMesh *em, short flag, float *nor);
extern short extrudeflag_edges_indiv(EditMesh *em, short flag, float *nor);
-extern short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor);
-extern short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor);
+extern short extrudeflag_vert(Object *obedit, EditMesh *em, short flag, float *nor, int all);
+extern short extrudeflag(Object *obedit, EditMesh *em, short flag, float *nor, int all);
extern void adduplicateflag(EditMesh *em, int flag);
extern void delfaceflag(EditMesh *em, int flag);
More information about the Bf-blender-cvs
mailing list