diff --git a/source/blender/include/BIF_editmesh.h b/source/blender/include/BIF_editmesh.h index cd57f9eb4fe..bbf51433374 100644 --- a/source/blender/include/BIF_editmesh.h +++ b/source/blender/include/BIF_editmesh.h @@ -173,6 +173,7 @@ extern void fill_mesh(void); extern void bevel_menu(); void edge_rotate_selected(int dir); int EdgeSlide(short immediate, float imperc); +void EdgeLoopDelete(void); #endif diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c index dcc43167369..ee3d6a476df 100644 --- a/source/blender/src/editmesh_mods.c +++ b/source/blender/src/editmesh_mods.c @@ -1783,7 +1783,7 @@ void editmesh_mark_seam(int clear) void Edge_Menu() { short ret; - ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge CW%x3|Rotate Edge CCW%x4|Loopcut%x6|Edge Slide%x5"); + ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge CW%x3|Rotate Edge CCW%x4|Loopcut%x6|Edge Slide%x5|EdgeLoop Delete%x7"); switch(ret) { @@ -1807,6 +1807,10 @@ void Edge_Menu() { CutEdgeloop(1); BIF_undo_push("Loopcut New"); break; + case 7: + EdgeLoopDelete(); + BIF_undo_push("Edgeloop Remove"); + break; } } diff --git a/source/blender/src/editmesh_tools.c b/source/blender/src/editmesh_tools.c index 4d77982b562..64f2e1345cf 100644 --- a/source/blender/src/editmesh_tools.c +++ b/source/blender/src/editmesh_tools.c @@ -4264,6 +4264,14 @@ static float Dist2s(short* d1,short* d2){ return sqrt(pow(d1[0]-d2[0],2)+pow(d1[1]-d2[1],2)); } +void EdgeLoopDelete(){ + EdgeSlide(1, 1); + select_more(); + removedoublesflag(1,0.001); + EM_select_flush(); + DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA); +} + int EdgeSlide(short immediate, float imperc) { EditMesh *em = G.editMesh;