correct bmesh api crossref and update uv-operator template.

This commit is contained in:
Campbell Barton 2013-05-05 05:54:29 +00:00
parent 36c4dc2d5b
commit 998b9241be
2 changed files with 26 additions and 24 deletions

@ -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)

@ -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 */
};