diff --git a/io_mesh_stl/blender_utils.py b/io_mesh_stl/blender_utils.py index 8d19e30ce369104fbfdba3ea0b8e1916afa9d076..2e8c8d6d010a2f6c06000a0470cb1218f6041ee0 100644 --- a/io_mesh_stl/blender_utils.py +++ b/io_mesh_stl/blender_utils.py @@ -59,7 +59,9 @@ def faces_from_mesh(ob, apply_modifier=False, triangulate=True): try: mesh = ob.to_mesh(bpy.context.scene, apply_modifier, "PREVIEW") except RuntimeError: - return () + raise StopIteration + + mesh.transform(ob.matrix_world) if triangulate: # From a list of faces, return the face triangulated if needed. @@ -76,5 +78,9 @@ def faces_from_mesh(ob, apply_modifier=False, triangulate=True): for face in mesh.faces: yield face.vertices[:] - return ([(mesh.vertices[index].co * ob.matrix_world)[:] - for index in indexes] for indexes in iter_face_index()) + vertices = mesh.vertices + + for indexes in iter_face_index(): + yield [vertices[index].co.copy() for index in indexes] + + bpy.data.meshes.remove(mesh)