[Bf-extensions-cvs] [3ae4be5] master: urgent fixes for 2.73 release, T42853, by kopias & meta-androcto

Brendon Murphy noreply at git.blender.org
Wed Dec 24 13:23:59 CET 2014


Commit: 3ae4be51d0271a1934c2e148f0099a1991def45e
Author: Brendon Murphy
Date:   Wed Dec 24 23:23:35 2014 +1100
Branches: master
https://developer.blender.org/rBA3ae4be51d0271a1934c2e148f0099a1991def45e

urgent fixes for 2.73 release, T42853, by kopias & meta-androcto

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

M	mesh_looptools.py

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

diff --git a/mesh_looptools.py b/mesh_looptools.py
index 660d088..8c9a62d 100644
--- a/mesh_looptools.py
+++ b/mesh_looptools.py
@@ -19,7 +19,7 @@
 bl_info = {
     "name": "LoopTools",
     "author": "Bart Crouch",
-    "version": (4, 6, 2),
+    "version": (4, 6, 3),
     "blender": (2, 71, 3),
     "location": "View3D > Toolbar and View3D > Specials (W-key)",
     "warning": "",
@@ -206,6 +206,7 @@ def calculate_linear_splines(bm_mod, tknots, knots):
 
 # calculate a best-fit plane to the given vertices
 def calculate_plane(bm_mod, loop, method="best_fit", object=False):
+    bm_mod.verts.ensure_lookup_table() # to work in 2.73 
     # getting the vertex locations
     locs = [bm_mod.verts[v].co.copy() for v in loop[0]]
 
@@ -300,6 +301,7 @@ def calculate_splines(interpolation, bm_mod, tknots, knots):
 # check loops and only return valid ones
 def check_loops(loops, mapping, bm_mod):
     valid_loops = []
+    bm_mod.verts.ensure_lookup_table() # to work in 2.73 
     for loop, circular in loops:
         # loop needs to have at least 3 vertices
         if len(loop) < 3:
@@ -603,6 +605,7 @@ def get_parallel_loops(bm_mod, loops):
     connected_faces = dict_face_faces(bm_mod, edge_faces)
     # turn vertex loops into edge loops
     edgeloops = []
+    bm_mod.faces.ensure_lookup_table() # to work in 2.73 
     for loop in loops:
         edgeloop = [[sorted([loop[0][i], loop[0][i+1]]) for i in \
             range(len(loop[0])-1)], loop[1]]
@@ -673,7 +676,7 @@ def get_parallel_loops(bm_mod, loops):
                 sides.append(side_a)
             if side_b:
                 sides.append(side_b)
-
+      
             for side in sides:
                 extraloop = []
                 for fi in side:
@@ -968,6 +971,7 @@ def bridge_calculate_lines(bm, loops, mode, twist, reverse):
 
     # calculate loop centers
     centers = []
+    bm.verts.ensure_lookup_table() # to work in 2.73 
     for loop in [loop1, loop2]:
         center = mathutils.Vector()
         for vertex in loop:
@@ -1418,7 +1422,10 @@ def bridge_create_faces(object, bm, faces, twist):
 
     new_faces = []
     for i in range(len(faces)):
+        bm.faces.ensure_lookup_table()
+        bm.verts.ensure_lookup_table()
         new_faces.append(bm.faces.new([bm.verts[v] for v in faces[i]]))
+
     bm.normal_update()
     object.data.update(calc_edges=True) # calc_edges prevents memory-corruption
 
@@ -1503,6 +1510,7 @@ def bridge_match_loops(bm, loops):
         normal = mathutils.Vector()
         center = mathutils.Vector()
         for vertex in vertices:
+            bm.verts.ensure_lookup_table()
             normal += bm.verts[vertex].normal
             center += bm.verts[vertex].co
         normals.append(normal / len(vertices) / 10)
@@ -1558,6 +1566,7 @@ def bridge_match_loops(bm, loops):
 # remove old_selected_faces
 def bridge_remove_internal_faces(bm, old_selected_faces):
     # collect bmesh faces and internal bmesh edges
+    bm.faces.ensure_lookup_table()
     remove_faces = [bm.faces[face] for face in old_selected_faces]
     edges = collections.Counter([edge.index for face in remove_faces for \
         edge in face.edges])
@@ -1573,6 +1582,8 @@ def bridge_remove_internal_faces(bm, old_selected_faces):
 # update list of internal faces that are flagged for removal
 def bridge_save_unused_faces(bm, old_selected_faces, loops):
     # key: vertex index, value: lists of selected faces using it
+    bm.faces.ensure_lookup_table()
+
     vertex_to_face = dict([[i, []] for i in range(len(bm.verts))])
     [[vertex_to_face[vertex.index].append(face) for vertex in \
         bm.faces[face].verts] for face in old_selected_faces]
@@ -1776,6 +1787,7 @@ def circle_calculate_verts(flatten, bm_mod, locs_2d, com, p, q, normal):
         vert_edges = dict_vert_edges(bm_mod)
         vert_faces = dict_vert_faces(bm_mod)
         faces = [f for f in bm_mod.faces if not f.hide]
+        bm_mod.faces.ensure_lookup_table() # to work in 2.73 
         rays = [normal, -normal]
         new_locs = []
         for loc in locs_3d:
@@ -2251,7 +2263,7 @@ def curve_get_input(object, bm, boundaries, scene):
     vert_edges = dict_vert_edges(bm_mod)
     edge_faces = dict_edge_faces(bm_mod)
     correct_loops = []
-
+    bm_mod.verts.ensure_lookup_table() # to work in 2.73
     # find loops through each selected vertex
     while len(verts_unsorted) > 0:
         loops = curve_vertex_loops(bm_mod, verts_unsorted[0], vert_edges,
@@ -2366,6 +2378,7 @@ def curve_project_knots(bm_mod, verts_selected, knots, points, circular):
         start = 1
         end = -1
         pknots = [mathutils.Vector(bm_mod.verts[knots[0]].co[:])]
+    bm_mod.verts.ensure_lookup_table() # to work in 2.73 
     for knot in knots[start:end]:
         if knot in verts_selected:
             knot_left = knot_right = False
@@ -2972,6 +2985,7 @@ def relax_calculate_knots(loops):
 def relax_calculate_t(bm_mod, knots, points, regular):
     all_tknots = []
     all_tpoints = []
+    bm_mod.verts.ensure_lookup_table() # to work in 2.73 
     for i in range(len(knots)):
         amount = len(knots[i]) + len(points[i])
         mix  = []
@@ -3054,6 +3068,7 @@ def space_calculate_t(bm_mod, knots):
     tknots = []
     loc_prev = False
     len_total = 0
+    bm_mod.verts.ensure_lookup_table() # to work in 2.73
     for k in knots:
         loc = mathutils.Vector(bm_mod.verts[k].co[:])
         if not loc_prev:



More information about the Bf-extensions-cvs mailing list