[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12701] trunk/blender/release/scripts/ wizard_curve2tree.py: fixed bug that only happened when a curve had 2 points in the same place
Campbell Barton
ideasman42 at gmail.com
Tue Nov 27 23:09:42 CET 2007
Revision: 12701
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12701
Author: campbellbarton
Date: 2007-11-27 23:09:42 +0100 (Tue, 27 Nov 2007)
Log Message:
-----------
fixed bug that only happened when a curve had 2 points in the same place
Modified Paths:
--------------
trunk/blender/release/scripts/wizard_curve2tree.py
Modified: trunk/blender/release/scripts/wizard_curve2tree.py
===================================================================
--- trunk/blender/release/scripts/wizard_curve2tree.py 2007-11-27 21:50:06 UTC (rev 12700)
+++ trunk/blender/release/scripts/wizard_curve2tree.py 2007-11-27 22:09:42 UTC (rev 12701)
@@ -212,8 +212,7 @@
# nice we can reuse these for every curve segment :)
pointlist = [[None, None, None] for i in xrange(self.steps+1)]
radlist = [ None for i in xrange(self.steps+1) ]
-
-
+
for spline in curve:
if len(spline) < 2: # Ignore single point splines
@@ -227,25 +226,32 @@
brch = branch()
brch.type = BRANCH_TYPE_CURVE
- self.branches_all.append(brch)
+
bez_list = list(spline)
for i in xrange(1, len(bez_list)):
bez1 = bez_list[i-1]
bez2 = bez_list[i]
- points_from_bezier_seg(self.steps, pointlist, radlist, bez1.vec, bez2.vec, bez1.radius, bez2.radius)
+ vec1 = bez1.vec
+ vec2 = bez2.vec
+ if abs(vec1[1][0]-vec2[1][0]) > 0.000001 or\
+ abs(vec1[1][1]-vec2[1][1]) > 0.000001 or\
+ abs(vec1[1][2]-vec2[1][2]) > 0.000001:
+
+ points_from_bezier_seg(self.steps, pointlist, radlist, vec1, vec2, bez1.radius, bez2.radius)
-
-
- # remove endpoint for all but the last
- len_pointlist = len(pointlist)
- if i != len(bez_list)-1:
- len_pointlist -= 1
-
- brch.bpoints.extend([ bpoint(brch, Vector(pointlist[ii]), Vector(), radlist[ii] * self.limbScale) for ii in xrange(len_pointlist) ])
+ # remove endpoint for all but the last
+ len_pointlist = len(pointlist)
+ if i != len(bez_list)-1:
+ len_pointlist -= 1
+
+ brch.bpoints.extend([ bpoint(brch, Vector(pointlist[ii]), Vector(), radlist[ii] * self.limbScale) for ii in xrange(len_pointlist) ])
# Finalize once point data is there
- brch.calcData()
+ if brch.bpoints:
+ # if all points are in the same location, this is possible
+ self.branches_all.append(brch)
+ brch.calcData()
# Sort from big to small, so big branches get priority
self.branches_all.sort( key = lambda brch: -brch.bpoints[0].radius )
More information about the Bf-blender-cvs
mailing list