diff --git a/curve_tools/Operators.py b/curve_tools/Operators.py index c01018402382863297f89505bdf6e1bcaf07d198..89f08f7248d8a01c8eacab5dc404e8d711214bc0 100644 --- a/curve_tools/Operators.py +++ b/curve_tools/Operators.py @@ -714,44 +714,39 @@ class BezierPointsFillet(bpy.types.Operator): sn = 0 for spline in splines: ii = s[sn] - n = len(spline.bezier_points) + bezier_points = spline.bezier_points + n = len(bezier_points) if n > 2: jn = 0 for j in ii: - j += jn - selected_all = [p for p in spline.bezier_points] - bpy.ops.curve.select_all(action='DESELECT') if j != 0 and j != n - 1: - selected_all[j].select_control_point = True - selected_all[j + 1].select_control_point = True + bezier_points[j].select_control_point = True + bezier_points[j + 1].select_control_point = True bpy.ops.curve.subdivide() - selected_all = [p for p in spline.bezier_points] - selected4 = [selected_all[j - 1], selected_all[j], - selected_all[j + 1], selected_all[j + 2]] + selected4 = [bezier_points[j - 1], bezier_points[j], + bezier_points[j + 1], bezier_points[j + 2]] jn += 1 n += 1 elif j == 0: - selected_all[j].select_control_point = True - selected_all[j + 1].select_control_point = True + bezier_points[j].select_control_point = True + bezier_points[j + 1].select_control_point = True bpy.ops.curve.subdivide() - selected_all = [p for p in spline.bezier_points] - selected4 = [selected_all[n], selected_all[0], - selected_all[1], selected_all[2]] + selected4 = [bezier_points[n], bezier_points[0], + bezier_points[1], bezier_points[2]] jn += 1 n += 1 elif j == n - 1: - selected_all[j].select_control_point = True - selected_all[j - 1].select_control_point = True + bezier_points[j].select_control_point = True + bezier_points[j - 1].select_control_point = True bpy.ops.curve.subdivide() - selected_all = [p for p in spline.bezier_points] - selected4 = [selected_all[0], selected_all[n], - selected_all[n - 1], selected_all[n - 2]] + selected4 = [bezier_points[0], bezier_points[n], + bezier_points[n - 1], bezier_points[n - 2]] selected4[2].co = selected4[1].co s1 = Vector(selected4[0].co) - Vector(selected4[1].co) @@ -831,53 +826,50 @@ class BezierDivide(bpy.types.Operator): sn = 0 for spline in splines: ii = s[sn] - n = len(spline.bezier_points) + bezier_points = spline.bezier_points + n = len(bezier_points) if n > 2: jn = 0 for j in ii: - selected_all = [p for p in spline.bezier_points] - bpy.ops.curve.select_all(action='DESELECT') if (j in ii) and (j + 1 in ii): - selected_all[j + jn].select_control_point = True - selected_all[j + 1 + jn].select_control_point = True + bezier_points[j + jn].select_control_point = True + bezier_points[j + 1 + jn].select_control_point = True h = Math.subdivide_cubic_bezier( - selected_all[j + jn].co, selected_all[j + jn].handle_right, - selected_all[j + 1 + jn].handle_left, selected_all[j + 1 + jn].co, self.Bezier_t / 100 + bezier_points[j + jn].co, bezier_points[j + jn].handle_right, + bezier_points[j + 1 + jn].handle_left, bezier_points[j + 1 + jn].co, self.Bezier_t / 100 ) bpy.ops.curve.subdivide(1) - selected_all = [p for p in spline.bezier_points] - selected_all[j + jn].handle_right_type = 'FREE' - selected_all[j + jn].handle_right = h[0] - selected_all[j + 1 + jn].co = h[2] - selected_all[j + 1 + jn].handle_left_type = 'FREE' - selected_all[j + 1 + jn].handle_left = h[1] - selected_all[j + 1 + jn].handle_right_type = 'FREE' - selected_all[j + 1 + jn].handle_right = h[3] - selected_all[j + 2 + jn].handle_left_type = 'FREE' - selected_all[j + 2 + jn].handle_left = h[4] + bezier_points[j + jn].handle_right_type = 'FREE' + bezier_points[j + jn].handle_right = h[0] + bezier_points[j + 1 + jn].co = h[2] + bezier_points[j + 1 + jn].handle_left_type = 'FREE' + bezier_points[j + 1 + jn].handle_left = h[1] + bezier_points[j + 1 + jn].handle_right_type = 'FREE' + bezier_points[j + 1 + jn].handle_right = h[3] + bezier_points[j + 2 + jn].handle_left_type = 'FREE' + bezier_points[j + 2 + jn].handle_left = h[4] jn += 1 if j == n - 1 and (0 in ii) and spline.use_cyclic_u: - selected_all[j + jn].select_control_point = True - selected_all[0].select_control_point = True + bezier_points[j + jn].select_control_point = True + bezier_points[0].select_control_point = True h = Math.subdivide_cubic_bezier( - selected_all[j + jn].co, selected_all[j + jn].handle_right, - selected_all[0].handle_left, selected_all[0].co, self.Bezier_t / 100 + bezier_points[j + jn].co, bezier_points[j + jn].handle_right, + bezier_points[0].handle_left, bezier_points[0].co, self.Bezier_t / 100 ) bpy.ops.curve.subdivide(1) - selected_all = [p for p in spline.bezier_points] - selected_all[j + jn].handle_right_type = 'FREE' - selected_all[j + jn].handle_right = h[0] - selected_all[j + 1 + jn].co = h[2] - selected_all[j + 1 + jn].handle_left_type = 'FREE' - selected_all[j + 1 + jn].handle_left = h[1] - selected_all[j + 1 + jn].handle_right_type = 'FREE' - selected_all[j + 1 + jn].handle_right = h[3] - selected_all[0].handle_left_type = 'FREE' - selected_all[0].handle_left = h[4] + bezier_points[j + jn].handle_right_type = 'FREE' + bezier_points[j + jn].handle_right = h[0] + bezier_points[j + 1 + jn].co = h[2] + bezier_points[j + 1 + jn].handle_left_type = 'FREE' + bezier_points[j + 1 + jn].handle_left = h[1] + bezier_points[j + 1 + jn].handle_right_type = 'FREE' + bezier_points[j + 1 + jn].handle_right = h[3] + bezier_points[0].handle_left_type = 'FREE' + bezier_points[0].handle_left = h[4] sn += 1 diff --git a/curve_tools/PathFinder.py b/curve_tools/PathFinder.py index 4df49c41f81d188ab847ff76374078654ba170a6..ab11a4e7203b8feb46ab09e1e30160338af61778 100644 --- a/curve_tools/PathFinder.py +++ b/curve_tools/PathFinder.py @@ -271,14 +271,14 @@ class PathFinder(bpy.types.Operator): bpy.ops.curve.delete(type='VERT') return {'RUNNING_MODAL'} + elif event.alt and event.shift and event.type == 'LEFTMOUSE': + click(self, context, event) + elif event.alt and not event.shift and event.type == 'LEFTMOUSE': remove_handler(self.handlers) bpy.ops.curve.select_all(action='DESELECT') click(self, context, event) - elif event.alt and event.shift and event.type == 'LEFTMOUSE': - click(self, context, event) - elif event.alt and event.type == 'RIGHTMOUSE': remove_handler(self.handlers) bpy.ops.curve.select_all(action='DESELECT') diff --git a/curve_tools/__init__.py b/curve_tools/__init__.py index 6549d8c65ed1ad84b580f00231b3609cfc031398..ceba9619d32a4c89eae3fbed50a84bd6ff7b9e7a 100644 --- a/curve_tools/__init__.py +++ b/curve_tools/__init__.py @@ -231,14 +231,14 @@ class curvetoolsSettings(PropertyGroup): ) font_thickness: IntProperty( name="Font thickness", - default=1, + default=2, min=1, max=1024, soft_min=2, description="Font thickness (px)" ) font_size: FloatProperty( name="Font size", - default=0.5, + default=0.1, precision=3, description="Font size" ) @@ -449,6 +449,8 @@ class VIEW3D_PT_CurvePanel(Panel): row = col.row(align=True) row.label(text="Alt + mouse click - select spline") row = col.row(align=True) + row.label(text="Alt + Shift + mouse click - add spline to select") + row = col.row(align=True) row.label(text="A - deselect all")