Blender Python Bmesh module, added in 2.63, provides an alternative method of manipulating meshes "giving Python access to the functions used by Blender’s own mesh editing tools.". Use this tag for question about using the Bmesh module in Python scripts and add-ons.
This API gives access the Blender’s internal mesh editing API, featuring geometry connectivity data and access to editing operations such as split, separate, collapse and dissolve. The features exposed closely follow the C API, giving Python access to the functions used by Blender’s own mesh editing tools.
bmesh manipulation of meshes tends to be faster than using
bpy.ops operations on the mesh because there are fewer screen redraws.
Use this tag for questions about using the
bmesh module from python.
The usual workflow is to
- create a new
- copy the mesh data from an object to it,
- use bmesh module tools to modify the mesh in bmesh format, an
- replace the original mesh data with the modified bmesh
as shown in this trivial example from the manual:
# This example assumes we have a mesh object selected import bpy import bmesh # Get the active mesh me = bpy.context.object.data # Get a BMesh representation bm = bmesh.new() # create an empty BMesh bm.from_mesh(me) # fill it in from a Mesh # Modify the BMesh, can do anything here... for v in bm.verts: v.co.x += 1.0 # Finish up, write the bmesh back to the mesh bm.to_mesh(me) bm.free() # free and prevent further access