forked from bartvdbraak/blender
correct bmesh api crossref and update uv-operator template.
This commit is contained in:
parent
36c4dc2d5b
commit
998b9241be
@ -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 */
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user