mesh_wire, fixed error with zero area edges

Holding Ctrl flips the align view in editmode. (patch from BeBraw)
This commit is contained in:
Campbell Barton 2007-04-11 14:00:11 +00:00
parent 2d0b69f3c3
commit 384f7a7875
3 changed files with 14 additions and 7 deletions

@ -167,9 +167,12 @@ def solid_wire(ob_orig, me_orig, sce, PREF_THICKNESS, PREF_SOLID, PREF_SHARP, PR
if PREF_SHARP == 0:
def add_tri_flipped(i1,i2,i3):
if AngleBetweenVecs(me.verts[i1].no, TriangleNormal(me.verts[i1].co, me.verts[i2].co, me.verts[i3].co)) < 90:
return i3,i2,i1
else:
try:
if AngleBetweenVecs(me.verts[i1].no, TriangleNormal(me.verts[i1].co, me.verts[i2].co, me.verts[i3].co)) < 90:
return i3,i2,i1
else:
return i1,i2,i3
except:
return i1,i2,i3
# This stores new verts that use this vert

@ -636,11 +636,13 @@ static void changeview3dspace(ScrArea *sa, void *spacedata)
*/
static void align_view_to_selected(View3D *v3d)
{
int nr= pupmenu("Align View%t|To Selected (top)%x2|To Selected (front)%x1|To Selected (side)%x0");
int nr= pupmenu("Align View (Ctrl flips)%t|To Selected (top)%x3|To Selected (front)%x2|To Selected (side)%x1");
if (nr!=-1) {
int axis= nr;
/* opposite axis in case ctrl is pressed */
if(G.qual==LR_CTRLKEY) axis= -axis;
if ((G.obedit) && (G.obedit->type == OB_MESH)) {
editmesh_align_view_to_selected(v3d, axis);
addqueue(v3d->area->win, REDRAW, 1);

@ -1505,7 +1505,9 @@ void view3d_align_axis_to_vector(View3D *v3d, int axisidx, float vec[3])
float norm[3], axis[3], angle, new_quat[4];
alignaxis[0]= alignaxis[1]= alignaxis[2]= 0.0;
alignaxis[axisidx]= 1.0;
if(axisidx > 0) alignaxis[axisidx-1]= 1.0;
else alignaxis[-axisidx-1]= -1.0;
norm[0]= vec[0], norm[1]= vec[1], norm[2]= vec[2];
Normalize(norm);