[Bf-extensions-cvs] [14abe13d] master: Add Curve: Extra Objects: now fillet and divide function doing for all selected points

Spivak Vladimir cwolf3d noreply at git.blender.org
Mon Sep 9 00:01:08 CEST 2019


Commit: 14abe13dc890ba8fc7f78723ad67533ec2146aff
Author: Spivak Vladimir (cwolf3d)
Date:   Mon Sep 9 01:00:32 2019 +0300
Branches: master
https://developer.blender.org/rBA14abe13dc890ba8fc7f78723ad67533ec2146aff

Add Curve: Extra Objects: now fillet and divide function doing for all selected points

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

M	add_curve_extra_objects/add_curve_simple.py

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

diff --git a/add_curve_extra_objects/add_curve_simple.py b/add_curve_extra_objects/add_curve_simple.py
index af0bb406..9873e5a5 100644
--- a/add_curve_extra_objects/add_curve_simple.py
+++ b/add_curve_extra_objects/add_curve_simple.py
@@ -19,7 +19,7 @@
 bl_info = {
     "name": "Simple Curve",
     "author": "Spivak Vladimir (http://cwolf3d.korostyshev.net)",
-    "version": (1, 5, 5),
+    "version": (1, 6, 0),
     "blender": (2, 80, 0),
     "location": "View3D > Add > Curve",
     "description": "Adds Simple Curve",
@@ -1349,84 +1349,91 @@ class BezierPointsFillet(Operator):
         if bpy.ops.object.mode_set.poll():
             bpy.ops.object.mode_set(mode='EDIT')
         
-        spline = bpy.context.object.data.splines.active
+        splines = bpy.context.object.data.splines
         bpy.ops.curve.spline_type_set(type='BEZIER')
-        
+            
         bpy.ops.curve.handle_type_set(type='VECTOR')
-        
-        n = 0
-        ii = []
-        for p in spline.bezier_points:
-            if p.select_control_point:
-                ii.append(n)
-                n += 1
-            else:
-                n += 1
-
-        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
-                    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]]
-                    jn += 1
+        s = []
+        for spline in splines:
+            n = 0
+            ii = []
+            for p in spline.bezier_points:
+                if p.select_control_point:
+                    ii.append(n)
                     n += 1
-
-                elif j == 0:
-                    selected_all[j].select_control_point = True
-                    selected_all[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]]
-                    jn += 1
+                else:
                     n += 1
-
-                elif j == n - 1:
-                    selected_all[j].select_control_point = True
-                    selected_all[j - 1].select_control_point = True
-                    bpy.ops.curve.subdivide()
+            s.append(ii)
+
+        sn = 0
+        for spline in splines:
+            ii = s[sn]
+            n = len(spline.bezier_points)
+            if n > 2:
+                jn = 0
+                for j in ii:
+    
+                    j += jn
+    
                     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[2].co = selected4[1].co
-                s1 = Vector(selected4[0].co) - Vector(selected4[1].co)
-                s2 = Vector(selected4[3].co) - Vector(selected4[2].co)
-                s1.normalize()
-                s11 = Vector(selected4[1].co) + s1 * self.Fillet_radius
-                selected4[1].co = s11
-                s2.normalize()
-                s22 = Vector(selected4[2].co) + s2 * self.Fillet_radius
-                selected4[2].co = s22
-
-                if self.Fillet_Type == 'Round':
-                    if j != n - 1:
+    
+                    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
+                        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]]
+                        jn += 1
+                        n += 1
+    
+                    elif j == 0:
+                        selected_all[j].select_control_point = True
+                        selected_all[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]]
+                        jn += 1
+                        n += 1
+    
+                    elif j == n - 1:
+                        selected_all[j].select_control_point = True
+                        selected_all[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[2].co = selected4[1].co
+                    s1 = Vector(selected4[0].co) - Vector(selected4[1].co)
+                    s2 = Vector(selected4[3].co) - Vector(selected4[2].co)
+                    s1.normalize()
+                    s11 = Vector(selected4[1].co) + s1 * self.Fillet_radius
+                    selected4[1].co = s11
+                    s2.normalize()
+                    s22 = Vector(selected4[2].co) + s2 * self.Fillet_radius
+                    selected4[2].co = s22
+    
+                    if self.Fillet_Type == 'Round':
+                        if j != n - 1:
+                            selected4[2].handle_right_type = 'VECTOR'
+                            selected4[1].handle_left_type = 'VECTOR'
+                            selected4[1].handle_right_type = 'ALIGNED'
+                            selected4[2].handle_left_type = 'ALIGNED'
+                        else:
+                            selected4[1].handle_right_type = 'VECTOR'
+                            selected4[2].handle_left_type = 'VECTOR'
+                            selected4[2].handle_right_type = 'ALIGNED'
+                            selected4[1].handle_left_type = 'ALIGNED'
+                    if self.Fillet_Type == 'Chamfer':
                         selected4[2].handle_right_type = 'VECTOR'
                         selected4[1].handle_left_type = 'VECTOR'
-                        selected4[1].handle_right_type = 'ALIGNED'
-                        selected4[2].handle_left_type = 'ALIGNED'
-                    else:
                         selected4[1].handle_right_type = 'VECTOR'
                         selected4[2].handle_left_type = 'VECTOR'
-                        selected4[2].handle_right_type = 'ALIGNED'
-                        selected4[1].handle_left_type = 'ALIGNED'
-                if self.Fillet_Type == 'Chamfer':
-                    selected4[2].handle_right_type = 'VECTOR'
-                    selected4[1].handle_left_type = 'VECTOR'
-                    selected4[1].handle_right_type = 'VECTOR'
-                    selected4[2].handle_left_type = 'VECTOR'
+            sn += 1
 
         return {'FINISHED'}
 
@@ -1469,64 +1476,73 @@ class BezierDivide(Operator):
         if bpy.ops.object.mode_set.poll():
             bpy.ops.object.mode_set(mode='EDIT')
 
-        spline = bpy.context.object.data.splines.active
-        bpy.ops.curve.spline_type_set(type='BEZIER')
-        
-        n = 0
-        ii = []
-        for p in spline.bezier_points:
-            if p.select_control_point:
-                ii.append(n)
-                n += 1
-            else:
-                n += 1
-
-        if n > 2:
-            jn = 0
-            for j in ii:
+        splines = bpy.context.object.data.splines
+        s = []
+        for spline in splines:
+            bpy.ops.curve.spline_type_set(type='BEZIER')
 
-                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
-                    h = 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
-                        )
-                    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]
-                    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
-                    h = 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
-                        )
-                    bpy.ops.curve.subdivide(1)
+            n = 0
+         

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list