Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormano-wii <germano.costa@ig.com.br>2019-02-06 08:10:37 +0300
committermano-wii <germano.costa@ig.com.br>2019-02-06 08:10:37 +0300
commitafd211e1089fecb4ce6ff01c3967673e999dc1d7 (patch)
tree8a9a8c82f7f12c41fe50367e3f0dbd48dc5c5dc4 /mesh_snap_utilities_line
parent38a7416a66433fe001b0a6ca2941141e691944d8 (diff)
mesh_snap_utilities_line: Fix error message if object has no face
Diffstat (limited to 'mesh_snap_utilities_line')
-rw-r--r--mesh_snap_utilities_line/snap_context_l/mesh_drawing.py95
1 files changed, 49 insertions, 46 deletions
diff --git a/mesh_snap_utilities_line/snap_context_l/mesh_drawing.py b/mesh_snap_utilities_line/snap_context_l/mesh_drawing.py
index b8e61799..da47fca7 100644
--- a/mesh_snap_utilities_line/snap_context_l/mesh_drawing.py
+++ b/mesh_snap_utilities_line/snap_context_l/mesh_drawing.py
@@ -34,7 +34,7 @@ def get_mesh_vert_co_array(me):
me.vertices.foreach_get("co", verts_co)
verts_co.shape = (-1, 3)
return verts_co
- return None
+ return ()
def get_bmesh_vert_co_array(bm):
@@ -43,7 +43,7 @@ def get_bmesh_vert_co_array(bm):
import numpy as np
return np.array([v.co for v in bm.verts], 'f4')
- return None
+ return ()
def get_mesh_tri_verts_array(me):
@@ -56,32 +56,35 @@ def get_mesh_tri_verts_array(me):
me.loop_triangles.foreach_get("vertices", tris)
tris.shape = (-1, 3)
return tris
- return None
+ return ()
def get_bmesh_tri_verts_array(bm):
- import numpy as np
+ if bm.faces:
+ import numpy as np
- l_tri_layer = bm.faces.layers.int.get("l_tri")
- if l_tri_layer is None:
- l_tri_layer = bm.faces.layers.int.new("l_tri")
-
- ltris = bm.calc_loop_triangles()
- tris = np.empty((len(ltris), 3), 'i4')
- i = 0
- last_face = bm.faces[-1]
- for ltri in ltris:
- face = ltri[0].face
- if not face.hide:
- tris[i] = ltri[0].vert.index, ltri[1].vert.index, ltri[2].vert.index
- if last_face != face:
- last_face = face
- face[l_tri_layer] = i
- i += 1
- if i:
- tris.resize((i, 3), refcheck=False)
- return tris
- return None
+ l_tri_layer = bm.faces.layers.int.get("l_tri")
+ if l_tri_layer is None:
+ l_tri_layer = bm.faces.layers.int.new("l_tri")
+
+ ltris = bm.calc_loop_triangles()
+ tris = np.empty((len(ltris), 3), 'i4')
+ i = 0
+
+ bm.faces.ensure_lookup_table()
+ last_face = bm.faces[-1]
+ for ltri in ltris:
+ face = ltri[0].face
+ if not face.hide:
+ tris[i] = ltri[0].vert.index, ltri[1].vert.index, ltri[2].vert.index
+ if last_face != face:
+ last_face = face
+ face[l_tri_layer] = i
+ i += 1
+ if i:
+ tris.resize((i, 3), refcheck=False)
+ return tris
+ return ()
def get_mesh_edge_verts_array(me):
@@ -93,7 +96,7 @@ def get_mesh_edge_verts_array(me):
me.edges.foreach_get("vertices", edge_verts)
edge_verts.shape = tot_edges, 2
return edge_verts
- return None
+ return ()
def get_bmesh_edge_verts_array(bm):
@@ -102,7 +105,7 @@ def get_bmesh_edge_verts_array(bm):
if edges:
import numpy as np
return np.array(edges, 'i4')
- return None
+ return ()
def get_mesh_loosevert_array(me, edges):
@@ -115,7 +118,7 @@ def get_mesh_loosevert_array(me, edges):
verts = verts[mask]
if len(verts):
return verts
- return None
+ return ()
def get_bmesh_loosevert_array(bm):
@@ -123,7 +126,7 @@ def get_bmesh_loosevert_array(bm):
if looseverts:
import numpy as np
return np.array(looseverts, 'i4')
- return None
+ return ()
class _Mesh_Arrays():
@@ -174,7 +177,7 @@ class _Mesh_Arrays():
class GPU_Indices_Mesh():
__slots__ = (
- "obj",
+ "ob_data",
"draw_tris",
"draw_edges",
"draw_verts",
@@ -231,10 +234,10 @@ class GPU_Indices_Mesh():
def __init__(self, obj, draw_tris, draw_edges, draw_verts):
- self.obj = obj
+ self.ob_data = obj.data
- if obj.data in GPU_Indices_Mesh._Hash:
- src = GPU_Indices_Mesh._Hash[obj.data]
+ if self.ob_data in GPU_Indices_Mesh._Hash:
+ src = GPU_Indices_Mesh._Hash[self.ob_data]
dst = self
dst.draw_tris = src.draw_tris
@@ -250,10 +253,10 @@ class GPU_Indices_Mesh():
dst.users = src.users
dst.users.append(self)
- update = obj.type == 'MESH' and obj.data.is_editmode
+ update = False
else:
- GPU_Indices_Mesh._Hash[obj.data] = self
+ GPU_Indices_Mesh._Hash[self.ob_data] = self
self.users = [self]
update = True;
@@ -273,9 +276,9 @@ class GPU_Indices_Mesh():
self.draw_tris = False
self.draw_edges = False
self.draw_verts = False
- self.tri_verts = None
- self.edge_verts = None
- self.looseverts = None
+ self.tri_verts = ()
+ self.edge_verts = ()
+ self.looseverts = ()
return
## Create VBO for vertices ##
@@ -293,7 +296,7 @@ class GPU_Indices_Mesh():
vbo.attr_fill(0, data = self.verts_co)
## Create Batch for Tris ##
- if self.tri_verts is not None:
+ if len(self.tri_verts) > 0:
ebo = gpu.types.GPUIndexBuf(type = "TRIS", seq = self.tri_verts)
self.batch_tris = gpu.types.GPUBatch(type = "TRIS", buf = vbo, elem = ebo)
self.batch_tris.program_set(self.shader)
@@ -302,7 +305,7 @@ class GPU_Indices_Mesh():
self.batch_tris = None
## Create Batch for Edges ##
- if self.edge_verts is not None:
+ if len(self.edge_verts) > 0:
ebo = gpu.types.GPUIndexBuf(type = "LINES", seq = self.edge_verts)
self.batch_edges = gpu.types.GPUBatch(type = "LINES", buf = vbo, elem = ebo)
self.batch_edges.program_set(self.shader)
@@ -311,7 +314,7 @@ class GPU_Indices_Mesh():
self.batch_edges = None
## Create Batch for Loose Verts ##
- if self.looseverts is not None:
+ if len(self.looseverts) > 0:
ebo = gpu.types.GPUIndexBuf(type = "POINTS", seq = self.looseverts)
self.batch_lverts = gpu.types.GPUBatch(type = "POINTS", buf = vbo, elem = ebo)
self.batch_lverts.program_set(self.shader)
@@ -335,9 +338,9 @@ class GPU_Indices_Mesh():
def set_draw_mode(self, draw_tris, draw_edges, draw_verts):
- self.draw_tris = draw_tris and self.tri_verts is not None
- self.draw_edges = draw_edges and self.edge_verts is not None
- self.draw_verts = draw_verts and self.looseverts is not None
+ self.draw_tris = draw_tris and len(self.tri_verts) > 0
+ self.draw_edges = draw_edges and len(self.edge_verts) > 0
+ self.draw_verts = draw_verts and len(self.looseverts) > 0
def Draw(self, index_offset, depth_offset = -0.00005):
@@ -387,8 +390,8 @@ class GPU_Indices_Mesh():
return self.looseverts[index]
def free(self):
- if len(self.users) == 1:
- GPU_Indices_Mesh._Hash.pop(self.obj.data)
+ self.users.remove(self)
+ if len(self.users) == 0:
del self.batch_tris
del self.batch_edges
del self.batch_lverts
@@ -396,8 +399,8 @@ class GPU_Indices_Mesh():
del self.tri_verts
del self.edge_verts
del self.looseverts
+ GPU_Indices_Mesh._Hash.pop(self.ob_data)
- self.users.remove(self)
#print('mesh_del', self.obj.name)