[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [720] trunk/py/scripts/addons/ curve_simplify.py: -better poll

Florian Meyer florianfelix at web.de
Wed Jun 9 00:22:14 CEST 2010


Revision: 720
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=720
Author:   testscreenings
Date:     2010-06-09 00:22:13 +0200 (Wed, 09 Jun 2010)

Log Message:
-----------
-better poll
-cleanup and generalizations

Modified Paths:
--------------
    trunk/py/scripts/addons/curve_simplify.py

Modified: trunk/py/scripts/addons/curve_simplify.py
===================================================================
--- trunk/py/scripts/addons/curve_simplify.py	2010-06-08 19:12:50 UTC (rev 719)
+++ trunk/py/scripts/addons/curve_simplify.py	2010-06-08 22:22:13 UTC (rev 720)
@@ -101,17 +101,27 @@
 def getDerivative(verts, t, nth):
     order = len(verts) - 1 - nth
     QVerts = []
-    for i in range(nth):
-        if QVerts:
-            verts = QVerts
-        derivVerts = []
-        for i in range(len(verts)-1):
-            derivVerts.append(verts[i+1] - verts[i])
-        QVerts = derivVerts
-    point = mathutils.Vector((0, 0, 0))
+
+    if nth:
+        for i in range(nth):
+            if QVerts:
+                verts = QVerts
+            derivVerts = []
+            for i in range(len(verts)-1):
+                derivVerts.append(verts[i+1] - verts[i])
+            QVerts = derivVerts
+    else:
+        QVerts = verts
+
+    if len(verts[0]) == 3:
+        point = mathutils.Vector((0, 0, 0))
+    if len(verts[0]) == 2:
+        point = mathutils.Vector((0, 0))
+
     for i, vert in enumerate(QVerts):
         point += binom(order, i) * math.pow(t, i) * math.pow(1-t, order-i) * vert
     deriv = point
+
     return deriv
 
 # get curvature from first, second derivative
@@ -232,7 +242,6 @@
             
             # get vec3 list to simplify
             if spline.type == 'BEZIER': # get bezierverts
-                splineVerts = spline.bezier_points.values()
                 splineVerts = [splineVert.co.copy()
                                 for splineVert in spline.bezier_points.values()]
 
@@ -400,14 +409,21 @@
             box.prop(props, 'dis_error', expand=True)
         col = layout.column()
 
-    ## Check for curve
+    ## Check for animdata
     def poll(self, context):
-        objs = context.selected_objects
-        return (objs)
+        obj = context.active_object
+        fcurves = False
+        if obj:
+            animdata = obj.animation_data
+            if animdata:
+                act = animdata.action
+                if act:
+                    fcurves = act.fcurves
+        return (obj and fcurves)
 
     ## execute
     def execute(self, context):
-        print("------START------")
+        #print("------START------")
 
         options = [
                 self.properties.mode,       #0
@@ -425,7 +441,7 @@
         
         fcurves_simplify(context, obj, options, self.fcurves)
 
-        print("-------END-------")
+        #print("-------END-------")
         return {'FINISHED'}
 
 ###########################




More information about the Bf-extensions-cvs mailing list