correct bmesh api crossref and update uv-operator template.
authorCampbell Barton <ideasman42@gmail.com>
Sun, 5 May 2013 05:54:29 +0000 (05:54 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 5 May 2013 05:54:29 +0000 (05:54 +0000)
release/scripts/templates_py/operator_uv.py
source/blender/python/bmesh/bmesh_py_types.c

index fdd0b993f8b448222773d7b10332c08adb655d3b..4d25b7af37e98b169374b006921565d003ca8851 100644 (file)
@@ -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)
index 01503d2b1c52cdbbb128a93a87c511e199ba6e9c..55a6f3c41c47ef326b7ce630d9890772505ce1a0 100644 (file)
@@ -592,8 +592,17 @@ static PyObject *bpy_bmloop_is_convex_get(BPy_BMLoop *self)
  * ^^^^^^^ */
 
 /* note: use for bmvert/edge/face/loop seq's use these, not bmelemseq directly */
-PyDoc_STRVAR(bpy_bmelemseq_layers_doc,
-"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccess`"
+PyDoc_STRVAR(bpy_bmelemseq_layers_vert_doc,
+"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessVert`"
+);
+PyDoc_STRVAR(bpy_bmelemseq_layers_edge_doc,
+"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessEdge`"
+);
+PyDoc_STRVAR(bpy_bmelemseq_layers_face_doc,
+"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessFace`"
+);
+PyDoc_STRVAR(bpy_bmelemseq_layers_loop_doc,
+"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccessLoop`"
 );
 static PyObject *bpy_bmelemseq_layers_get(BPy_BMElemSeq *self, void *htype)
 {
@@ -759,21 +768,21 @@ static PyGetSetDef bpy_bmloop_getseters[] = {
 };
 
 static PyGetSetDef bpy_bmvertseq_getseters[] = {
-       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_doc, (void *)BM_VERT},
+       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_vert_doc, (void *)BM_VERT},
        {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
 };
 static PyGetSetDef bpy_bmedgeseq_getseters[] = {
-       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_doc, (void *)BM_EDGE},
+       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_edge_doc, (void *)BM_EDGE},
        {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
 };
 static PyGetSetDef bpy_bmfaceseq_getseters[] = {
-       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_doc, (void *)BM_FACE},
+       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_face_doc, (void *)BM_FACE},
        /* face only */
        {(char *)"active",    (getter)bpy_bmfaceseq_active_get, (setter)bpy_bmfaceseq_active_set, (char *)bpy_bmfaceseq_active_doc, NULL},
        {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
 };
 static PyGetSetDef bpy_bmloopseq_getseters[] = {
-       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_doc, (void *)BM_LOOP},
+       {(char *)"layers",    (getter)bpy_bmelemseq_layers_get, (setter)NULL, (char *)bpy_bmelemseq_layers_loop_doc, (void *)BM_LOOP},
        {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
 };