import bpy import bmesh def main(context): obj = context.active_object me = obj.data bm = bmesh.from_edit_mesh(me) uv_layer = bm.loops.layers.uv.verify() # adjust uv coordinates for face in bm.faces: for loop in face.loops: loop_uv = loop[uv_layer] # use xy position of the vertex as a uv coordinate loop_uv.uv = loop.vert.co.xy bmesh.update_edit_mesh(me) class UvOperator(bpy.types.Operator): """UV Operator description""" bl_idname = "uv.simple_operator" bl_label = "Simple UV Operator" @classmethod def poll(cls, context): obj = context.active_object return obj and obj.type == 'MESH' and obj.mode == 'EDIT' def execute(self, context): main(context) return {'FINISHED'} def register(): bpy.utils.register_class(UvOperator) def unregister(): bpy.utils.unregister_class(UvOperator) if __name__ == "__main__": register() # test call bpy.ops.uv.simple_operator()