[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3249] contrib/py/scripts/addons/ mesh_looptools.py: Update loopcut tools for changes in mesh API: replace mesh.faces with mesh.tessfaces
Sergey Sharybin
sergey.vfx at gmail.com
Thu Apr 12 10:41:55 CEST 2012
Revision: 3249
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3249
Author: nazgul
Date: 2012-04-12 08:41:55 +0000 (Thu, 12 Apr 2012)
Log Message:
-----------
Update loopcut tools for changes in mesh API: replace mesh.faces with mesh.tessfaces
ideally this addon should be ported into bmesh API, but for now make it usable by Mango team
Modified Paths:
--------------
contrib/py/scripts/addons/mesh_looptools.py
Modified: contrib/py/scripts/addons/mesh_looptools.py
===================================================================
--- contrib/py/scripts/addons/mesh_looptools.py 2012-04-11 23:23:56 UTC (rev 3248)
+++ contrib/py/scripts/addons/mesh_looptools.py 2012-04-12 08:41:55 UTC (rev 3249)
@@ -323,7 +323,7 @@
# input: mesh, output: dict with the edge-key as key and face-index as value
def dict_edge_faces(mesh):
edge_faces = dict([[edge.key, []] for edge in mesh.edges if not edge.hide])
- for face in mesh.faces:
+ for face in mesh.tessfaces:
if face.hide:
continue
for key in face.edge_keys:
@@ -336,9 +336,9 @@
if not edge_faces:
edge_faces = dict_edge_faces(mesh)
- connected_faces = dict([[face.index, []] for face in mesh.faces if \
+ connected_faces = dict([[face.index, []] for face in mesh.tessfaces if \
not face.hide])
- for face in mesh.faces:
+ for face in mesh.tessfaces:
if face.hide:
continue
for edge_key in face.edge_keys:
@@ -365,7 +365,7 @@
# input: mesh, output: dict with the vert index as key and face index as value
def dict_vert_faces(mesh):
vert_faces = dict([[v.index, []] for v in mesh.vertices if not v.hide])
- for face in mesh.faces:
+ for face in mesh.tessfaces:
if not face.hide:
for vert in face.vertices:
vert_faces[vert].append(face.index)
@@ -523,7 +523,7 @@
real_singles = [v_real for v_real in mapping.values() if v_real>-1]
verts_indices = [vert.index for vert in verts]
- for face in [face for face in mesh.faces if not face.select \
+ for face in [face for face in mesh.tessfaces if not face.select \
and not face.hide]:
for vert in face.vertices:
if vert in real_singles:
@@ -630,7 +630,7 @@
for side in sides:
extraloop = []
for fi in side:
- for key in mesh_mod.faces[fi].edge_keys:
+ for key in mesh_mod.tessfaces[fi].edge_keys:
if key[0] not in verts_used and key[1] not in \
verts_used:
extraloop.append(key)
@@ -1334,10 +1334,10 @@
else:
faces[i] = [faces[i][-1]] + faces[i][:-1]
- start_faces = len(mesh.faces)
- mesh.faces.add(len(faces))
+ start_faces = len(mesh.tessfaces)
+ mesh.tessfaces.add(len(faces))
for i in range(len(faces)):
- mesh.faces[start_faces + i].vertices_raw = faces[i]
+ mesh.tessfaces[start_faces + i].vertices_raw = faces[i]
mesh.update(calc_edges = True) # calc_edges prevents memory-corruption
@@ -1345,7 +1345,7 @@
def bridge_get_input(mesh):
# create list of internal edges, which should be skipped
eks_of_selected_faces = [item for sublist in [face.edge_keys for face \
- in mesh.faces if face.select and not face.hide] for item in sublist]
+ in mesh.tessfaces if face.select and not face.hide] for item in sublist]
edge_count = {}
for ek in eks_of_selected_faces:
if ek in edge_count:
@@ -1366,11 +1366,11 @@
def bridge_initialise(mesh, interpolation):
if interpolation == 'cubic':
# dict with edge-key as key and list of connected valid faces as value
- face_blacklist = [face.index for face in mesh.faces if face.select or \
+ face_blacklist = [face.index for face in mesh.tessfaces if face.select or \
face.hide]
edge_faces = dict([[edge.key, []] for edge in mesh.edges if not \
edge.hide])
- for face in mesh.faces:
+ for face in mesh.tessfaces:
if face.index in face_blacklist:
continue
for key in face.edge_keys:
@@ -1383,13 +1383,13 @@
edgekey_to_edge = False
# selected faces input
- old_selected_faces = [face.index for face in mesh.faces if face.select \
+ old_selected_faces = [face.index for face in mesh.tessfaces if face.select \
and not face.hide]
# find out if faces created by bridging should be smoothed
smooth = False
- if mesh.faces:
- if sum([face.use_smooth for face in mesh.faces])/len(mesh.faces) \
+ if mesh.tessfaces:
+ if sum([face.use_smooth for face in mesh.tessfaces])/len(mesh.tessfaces) \
>= 0.5:
smooth = True
@@ -1494,7 +1494,7 @@
bpy.ops.mesh.select_all(action = 'DESELECT')
bpy.ops.object.mode_set(mode = 'OBJECT')
for face in old_selected_faces:
- mesh.faces[face].select = True
+ mesh.tessfaces[face].select = True
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.delete(type = 'FACE')
@@ -1517,7 +1517,7 @@
# key: vertex index, value: lists of selected faces using it
vertex_to_face = dict([[i, []] for i in range(len(mesh.vertices))])
[[vertex_to_face[vertex_index].append(face) for vertex_index in \
- mesh.faces[face].vertices] for face in old_selected_faces]
+ mesh.tessfaces[face].vertices] for face in old_selected_faces]
# group selected faces that are connected
groups = []
@@ -1530,7 +1530,7 @@
new_faces = [face]
while new_faces:
grow_face = new_faces[0]
- for vertex in mesh.faces[grow_face].vertices:
+ for vertex in mesh.tessfaces[grow_face].vertices:
vertex_face_group = [face for face in vertex_to_face[vertex] \
if face not in grouped_faces]
new_faces += vertex_face_group
@@ -1551,7 +1551,7 @@
for face in group:
if used:
break
- for vertex in mesh.faces[face].vertices:
+ for vertex in mesh.tessfaces[face].vertices:
if used_vertices[vertex]:
used = True
break
@@ -1565,8 +1565,8 @@
select_mode = [i for i in bpy.context.tool_settings.mesh_select_mode]
bpy.context.tool_settings.mesh_select_mode = [False, False, True]
for i in range(amount):
- mesh.faces[-(i+1)].select = True
- mesh.faces[-(i+1)].use_smooth = smooth
+ mesh.tessfaces[-(i+1)].select = True
+ mesh.tessfaces[-(i+1)].use_smooth = smooth
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.object.mode_set(mode = 'OBJECT')
bpy.context.tool_settings.mesh_select_mode = select_mode
@@ -1708,7 +1708,7 @@
else: # project the locations on the existing mesh
vert_edges = dict_vert_edges(mesh_mod)
vert_faces = dict_vert_faces(mesh_mod)
- faces = [f for f in mesh_mod.faces if not f.hide]
+ faces = [f for f in mesh_mod.tessfaces if not f.hide]
rays = [normal, -normal]
new_locs = []
for loc in locs_3d:
@@ -1724,7 +1724,7 @@
# quick search through adjacent faces
for face in vert_faces[loc[0]]:
verts = [mesh_mod.vertices[v].co for v in \
- mesh_mod.faces[face].vertices]
+ mesh_mod.tessfaces[face].vertices]
if len(verts) == 3: # triangle
v1, v2, v3 = verts
v4 = False
@@ -1852,14 +1852,14 @@
# create list of edge-keys based on selection state
faces = False
- for face in mesh.faces:
+ for face in mesh.tessfaces:
if face.select and not face.hide:
faces = True
break
if faces:
# get selected, non-hidden , non-internal edge-keys
eks_selected = [key for keys in [face.edge_keys for face in \
- mesh_mod.faces if face.select and not face.hide] for key in keys]
+ mesh_mod.tessfaces if face.select and not face.hide] for key in keys]
edge_count = {}
for ek in eks_selected:
if ek in edge_count:
@@ -1880,10 +1880,10 @@
vert.select and not vert.hide and not \
verts_connected.get(vert.index, False)]
- if single_vertices and len(mesh.faces)>0:
+ if single_vertices and len(mesh.tessfaces)>0:
vert_to_single = dict([[v.index, []] for v in mesh_mod.vertices \
if not v.hide])
- for face in [face for face in mesh_mod.faces if not face.select \
+ for face in [face for face in mesh_mod.tessfaces if not face.select \
and not face.hide]:
for vert in face.vertices:
if vert in single_vertices:
@@ -1901,7 +1901,7 @@
# find out to which loops the single vertices belong
single_loops = dict([[i, []] for i in range(len(loops))])
- if single_vertices and len(mesh.faces)>0:
+ if single_vertices and len(mesh.tessfaces)>0:
for i, [loop, circular] in enumerate(loops):
for vert in loop:
if vert_to_single[vert]:
More information about the Bf-extensions-cvs
mailing list