Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'uv_magic_uv/muv_cpuv_ops.py')
-rw-r--r--uv_magic_uv/muv_cpuv_ops.py49
1 files changed, 44 insertions, 5 deletions
diff --git a/uv_magic_uv/muv_cpuv_ops.py b/uv_magic_uv/muv_cpuv_ops.py
index 3ef1a9de..257d686e 100644
--- a/uv_magic_uv/muv_cpuv_ops.py
+++ b/uv_magic_uv/muv_cpuv_ops.py
@@ -20,8 +20,8 @@
__author__ = "Nutti <nutti.metro@gmail.com>, Jace Priester"
__status__ = "production"
-__version__ = "4.3.1"
-__date__ = "1 Apr 2017"
+__version__ = "4.4"
+__date__ = "2 Aug 2017"
import bpy
import bmesh
@@ -80,12 +80,15 @@ class MUV_CPUVCopyUV(bpy.types.Operator):
# get selected face
props.src_uvs = []
props.src_pin_uvs = []
+ props.src_seams = []
for face in bm.faces:
if face.select:
uvs = [l[uv_layer].uv.copy() for l in face.loops]
pin_uvs = [l[uv_layer].pin_uv for l in face.loops]
+ seams = [l.edge.seam for l in face.loops]
props.src_uvs.append(uvs)
props.src_pin_uvs.append(pin_uvs)
+ props.src_seams.append(seams)
if len(props.src_uvs) == 0 or len(props.src_pin_uvs) == 0:
self.report({'WARNING'}, "No faces are selected")
return {'CANCELLED'}
@@ -153,6 +156,11 @@ class MUV_CPUVPasteUV(bpy.types.Operator):
min=0,
max=30
)
+ copy_seams = BoolProperty(
+ name="Copy Seams",
+ description="Copy Seams",
+ default=True
+ )
def execute(self, context):
props = context.scene.muv_props.cpuv
@@ -182,14 +190,17 @@ class MUV_CPUVPasteUV(bpy.types.Operator):
# get selected face
dest_uvs = []
dest_pin_uvs = []
+ dest_seams = []
dest_face_indices = []
for face in bm.faces:
if face.select:
dest_face_indices.append(face.index)
uvs = [l[uv_layer].uv.copy() for l in face.loops]
pin_uvs = [l[uv_layer].pin_uv for l in face.loops]
+ seams = [l.edge.seam for l in face.loops]
dest_uvs.append(uvs)
dest_pin_uvs.append(pin_uvs)
+ dest_seams.append(seams)
if len(dest_uvs) == 0 or len(dest_pin_uvs) == 0:
self.report({'WARNING'}, "No faces are selected")
return {'CANCELLED'}
@@ -205,37 +216,48 @@ class MUV_CPUVPasteUV(bpy.types.Operator):
for i, idx in enumerate(dest_face_indices):
suv = None
spuv = None
+ ss = None
duv = None
if self.strategy == 'N_N':
suv = props.src_uvs[i]
spuv = props.src_pin_uvs[i]
+ ss = props.src_seams[i]
duv = dest_uvs[i]
elif self.strategy == 'N_M':
suv = props.src_uvs[i % len(props.src_uvs)]
spuv = props.src_pin_uvs[i % len(props.src_pin_uvs)]
+ ss = props.src_seams[i % len(props.src_seams)]
duv = dest_uvs[i]
if len(suv) != len(duv):
self.report({'WARNING'}, "Some faces are different size")
return {'CANCELLED'}
suvs_fr = [uv for uv in suv]
spuvs_fr = [pin_uv for pin_uv in spuv]
+ ss_fr = [s for s in ss]
# flip UVs
if self.flip_copied_uv is True:
suvs_fr.reverse()
spuvs_fr.reverse()
+ ss_fr.reverse()
# rotate UVs
for _ in range(self.rotate_copied_uv):
uv = suvs_fr.pop()
pin_uv = spuvs_fr.pop()
+ s = ss_fr.pop()
suvs_fr.insert(0, uv)
spuvs_fr.insert(0, pin_uv)
+ ss_fr.insert(0, s)
# paste UVs
- for l, suv, spuv in zip(bm.faces[idx].loops, suvs_fr, spuvs_fr):
+ for l, suv, spuv, ss in zip(bm.faces[idx].loops, suvs_fr, spuvs_fr, ss_fr):
l[uv_layer].uv = suv
l[uv_layer].pin_uv = spuv
+ if self.copy_seams is True:
+ l.edge.seam = ss
self.report({'INFO'}, "%d face(s) are copied" % len(dest_uvs))
bmesh.update_edit_mesh(obj.data)
+ if self.copy_seams is True:
+ obj.data.show_edge_seams = True
return {'FINISHED'}
@@ -305,11 +327,14 @@ class MUV_CPUVObjCopyUV(bpy.types.Operator):
# get selected face
props.src_uvs = []
props.src_pin_uvs = []
+ props.src_seams = []
for face in bm.faces:
uvs = [l[uv_layer].uv.copy() for l in face.loops]
pin_uvs = [l[uv_layer].pin_uv for l in face.loops]
+ seams = [l.edge.seam for l in face.loops]
props.src_uvs.append(uvs)
props.src_pin_uvs.append(pin_uvs)
+ props.src_seams.append(seams)
self.report({'INFO'}, "%s's UV coordinates are copied" % (obj.name))
@@ -349,6 +374,11 @@ class MUV_CPUVObjPasteUV(bpy.types.Operator):
bl_options = {'REGISTER', 'UNDO'}
uv_map = StringProperty(options={'HIDDEN'})
+ copy_seams = BoolProperty(
+ name="Copy Seams",
+ description="Copy Seams",
+ default=True
+ )
@memorize_view_3d_mode
def execute(self, context):
@@ -393,13 +423,16 @@ class MUV_CPUVObjPasteUV(bpy.types.Operator):
# get selected face
dest_uvs = []
dest_pin_uvs = []
+ dest_seams = []
dest_face_indices = []
for face in bm.faces:
dest_face_indices.append(face.index)
uvs = [l[uv_layer].uv.copy() for l in face.loops]
pin_uvs = [l[uv_layer].pin_uv for l in face.loops]
+ seams = [l.edge.seam for l in face.loops]
dest_uvs.append(uvs)
dest_pin_uvs.append(pin_uvs)
+ dest_seams.append(seams)
if len(props.src_uvs) != len(dest_uvs):
self.report(
{'WARNING'},
@@ -413,19 +446,25 @@ class MUV_CPUVObjPasteUV(bpy.types.Operator):
for i, idx in enumerate(dest_face_indices):
suv = props.src_uvs[i]
spuv = props.src_pin_uvs[i]
+ ss = props.src_seams[i]
duv = dest_uvs[i]
if len(suv) != len(duv):
self.report({'WARNING'}, "Some faces are different size")
return {'CANCELLED'}
suvs_fr = [uv for uv in suv]
spuvs_fr = [pin_uv for pin_uv in spuv]
+ ss_fr = [s for s in ss]
# paste UVs
- for l, suv, spuv in zip(
- bm.faces[idx].loops, suvs_fr, spuvs_fr):
+ for l, suv, spuv, ss in zip(
+ bm.faces[idx].loops, suvs_fr, spuvs_fr, ss_fr):
l[uv_layer].uv = suv
l[uv_layer].pin_uv = spuv
+ if self.copy_seams is True:
+ l.edge.seam = ss
bmesh.update_edit_mesh(obj.data)
+ if self.copy_seams is True:
+ obj.data.show_edge_seams = True
self.report(
{'INFO'}, "%s's UV coordinates are pasted" % (obj.name))