From 998b9241bedea82f4501b4c4e5453d7becb07d3e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 5 May 2013 05:54:29 +0000 Subject: correct bmesh api crossref and update uv-operator template. --- release/scripts/templates_py/operator_uv.py | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'release/scripts/templates_py') diff --git a/release/scripts/templates_py/operator_uv.py b/release/scripts/templates_py/operator_uv.py index fdd0b993f8b..4d25b7af37e 100644 --- a/release/scripts/templates_py/operator_uv.py +++ b/release/scripts/templates_py/operator_uv.py @@ -1,29 +1,23 @@ import bpy +import bmesh def main(context): obj = context.active_object - mesh = obj.data + me = obj.data + bm = bmesh.from_edit_mesh(me) - is_editmode = (obj.mode == 'EDIT') - if is_editmode: - bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - - if not mesh.uv_textures: - uvtex = bpy.ops.mesh.uv_texture_add() - else: - uvtex = mesh.uv_textures.active + uv_layer = bm.loops.layers.uv.verify() # adjust UVs - for i, uv in enumerate(uvtex.data): - uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 - for j, v_idx in enumerate(mesh.faces[i].vertices): - if uv.select_uv[j]: + for f in bm.faces: + for l in f.loops: + luv = l[uv_layer] + if luv.select: # apply the location of the vertex as a UV - uvs[j][:] = mesh.vertices[v_idx].co.xy + luv.uv = l.vert.co.xy - if is_editmode: - bpy.ops.object.mode_set(mode='EDIT', toggle=False) + bmesh.update_edit_mesh(me) class UvOperator(bpy.types.Operator): @@ -33,8 +27,7 @@ class UvOperator(bpy.types.Operator): @classmethod def poll(cls, context): - obj = context.active_object - return (obj and obj.type == 'MESH') + return (context.mode == 'EDIT_MESH') def execute(self, context): main(context) -- cgit v1.2.3