[Bf-blender-cvs] [3cb4d8d] gsoc2016-improved_extrusion: Curves: Chamfer and fillet operators

João Araújo noreply at git.blender.org
Tue Jan 3 22:39:08 CET 2017


Commit: 3cb4d8d03c9fed2e11f0a45781b1fa291aebed19
Author: João Araújo
Date:   Tue Jan 3 21:23:45 2017 +0000
Branches: gsoc2016-improved_extrusion
https://developer.blender.org/rB3cb4d8d03c9fed2e11f0a45781b1fa291aebed19

Curves: Chamfer and fillet operators

Fixed some inconsistency on user interaction:

 - Chamfer and fillet only enter modal when the selected handle is vector type
 - Commented all the tools implemented from the Specials menu. They were not being called on modal.

===================================================================

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/editors/curve/editcurve.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 56b9264..83c4624 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -2766,17 +2766,17 @@ class VIEW3D_MT_edit_curve_specials(Menu):
         layout.operator("curve.smooth_radius")
         layout.operator("curve.smooth_tilt")
 
-        layout.separator()
-
-        layout.operator("curve.extend_curve")
-        layout.operator("curve.batch_extend")
-        layout.operator("curve.trim_curve")
-        layout.operator("curve.offset_curve")
-
-        layout.separator()
-
-        layout.operator("curve.curve_chamfer")
-        layout.operator("curve.curve_fillet")
+#        layout.separator()
+#
+#        layout.operator("curve.extend_curve")
+#        layout.operator("curve.batch_extend")
+#        layout.operator("curve.trim_curve")
+#        layout.operator("curve.offset_curve")
+#
+#        layout.separator()
+#
+#        layout.operator("curve.curve_chamfer")
+#        layout.operator("curve.curve_fillet")
 
 
 class VIEW3D_MT_edit_curve_delete(Menu):
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 48753cd..200810d 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -8323,7 +8323,6 @@ static int curve_chamfer_modal(bContext *C, wmOperator *op, const wmEvent *event
 	EditNurb *editnurb = cu->editnurb;
 	ListBase *nubase = object_editcurve_get(obedit);
 	Nurb *nu;
-	BezTriple *bezt, *bezt1, *bezt2, *helper;
 	CD *cd = op->customdata;
 	OffsetData *opdata = cd->data;
 	float *init_mouse = cd->data->mcenter;
@@ -8431,7 +8430,7 @@ static int curve_chamfer_invoke(bContext *C, wmOperator *op, const wmEvent *UNUS
 	int selected = 0;
 	for (int i = 1; i < nu->pntsu - 1; i++) {
 		bezt = &nu->bezt[i];
-		if (BEZT_ISSEL_ANY(bezt)) {
+		if (BEZT_ISSEL_ANY(bezt) && (bezt->h1 == HD_VECT)) {
 			sub_v3_v3v3(v1, bezt->vec[1], bezt->vec[0]);
 			normalize_v3(v1);
 			sub_v3_v3v3(v2, bezt->vec[1], bezt->vec[2]);
@@ -8465,12 +8464,19 @@ static int curve_chamfer_invoke(bContext *C, wmOperator *op, const wmEvent *UNUS
 		initNumInput(&cd->data->num_input[i]);
 	}
 
-	op->customdata = cd;
+	if (cd->selected_points) {
+		op->customdata = cd;
 
-	/* add modal handler */
-	WM_event_add_modal_handler(C, op);
+		/* add modal handler */
+		WM_event_add_modal_handler(C, op);
 
-	return OPERATOR_RUNNING_MODAL;
+		return OPERATOR_RUNNING_MODAL;
+	}
+
+	MEM_freeN(cd->data);
+	MEM_freeN(cd);
+
+	return OPERATOR_FINISHED;
 }
 
 void CURVE_OT_curve_chamfer(wmOperatorType *ot)
@@ -8496,8 +8502,6 @@ void CURVE_OT_curve_chamfer(wmOperatorType *ot)
 }
 
 /******************** Fillet operator ********************/
-/* In an ideal world, chamfer and fillet would be the same operator, since they share 90% of the code
- * TODO: Make the above true */
 
 static void fillet_handle(BezTriple *bezt, BezTriple *r_new_bezt1, BezTriple *r_new_bezt2, float theta, float r)
 {




More information about the Bf-blender-cvs mailing list