I want to get the last selected vertex. I tried with
bm.select_history.active but this don't work.
You can walk the select history in reverse and find the first BMVert:
import bpy import bmesh ob = bpy.context.object me = ob.data bm = bmesh.from_edit_mesh(me) for elem in reversed(bm.select_history): if isinstance(elem, bmesh.types.BMVert): print("Active vertex:", elem) break
select_history does not support selection operators like box and lasso select. They don't make a geometry element active, nor do they add to the history at all.
This function returns the active vertex,
Note that if the last selected element isn't a vertex, Blender considers there to be no active vertex.
import bpy import bmesh def bmesh_vert_active(bm): if bm.select_history: elem = bm.select_history[-1] if isinstance(elem, bmesh.types.BMVert): return elem return None ob = bpy.context.object me = ob.data bm = bmesh.from_edit_mesh(me) print(bmesh_vert_active(bm))