Skip to content
Snippets Groups Projects
Commit 998b9241 authored by Campbell Barton's avatar Campbell Barton
Browse files

correct bmesh api crossref and update uv-operator template.

parent 36c4dc2d
No related branches found
No related tags found
No related merge requests found
import bpy import bpy
import bmesh
def main(context): def main(context):
obj = context.active_object obj = context.active_object
mesh = obj.data me = obj.data
bm = bmesh.from_edit_mesh(me)
is_editmode = (obj.mode == 'EDIT') uv_layer = bm.loops.layers.uv.verify()
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
# adjust UVs # adjust UVs
for i, uv in enumerate(uvtex.data): for f in bm.faces:
uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 for l in f.loops:
for j, v_idx in enumerate(mesh.faces[i].vertices): luv = l[uv_layer]
if uv.select_uv[j]: if luv.select:
# apply the location of the vertex as a UV # 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: bmesh.update_edit_mesh(me)
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
class UvOperator(bpy.types.Operator): class UvOperator(bpy.types.Operator):
...@@ -33,8 +27,7 @@ class UvOperator(bpy.types.Operator): ...@@ -33,8 +27,7 @@ class UvOperator(bpy.types.Operator):
@classmethod @classmethod
def poll(cls, context): def poll(cls, context):
obj = context.active_object return (context.mode == 'EDIT_MESH')
return (obj and obj.type == 'MESH')
def execute(self, context): def execute(self, context):
main(context) main(context)
......
...@@ -592,8 +592,17 @@ static PyObject *bpy_bmloop_is_convex_get(BPy_BMLoop *self) ...@@ -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 */ /* note: use for bmvert/edge/face/loop seq's use these, not bmelemseq directly */
PyDoc_STRVAR(bpy_bmelemseq_layers_doc, PyDoc_STRVAR(bpy_bmelemseq_layers_vert_doc,
"custom-data layers (read-only).\n\n:type: :class:`BMLayerAccess`" "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) static PyObject *bpy_bmelemseq_layers_get(BPy_BMElemSeq *self, void *htype)
{ {
...@@ -759,21 +768,21 @@ static PyGetSetDef bpy_bmloop_getseters[] = { ...@@ -759,21 +768,21 @@ static PyGetSetDef bpy_bmloop_getseters[] = {
}; };
static PyGetSetDef bpy_bmvertseq_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 */ {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
static PyGetSetDef bpy_bmedgeseq_getseters[] = { 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 */ {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
static PyGetSetDef bpy_bmfaceseq_getseters[] = { 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 */ /* face only */
{(char *)"active", (getter)bpy_bmfaceseq_active_get, (setter)bpy_bmfaceseq_active_set, (char *)bpy_bmfaceseq_active_doc, NULL}, {(char *)"active", (getter)bpy_bmfaceseq_active_get, (setter)bpy_bmfaceseq_active_set, (char *)bpy_bmfaceseq_active_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */ {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
static PyGetSetDef bpy_bmloopseq_getseters[] = { 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 */ {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment