[Bf-extensions-cvs] [0023a36b] master: Magic UV: Fix bugs, add copy/paste seams option to Copy/Paste UV, Transfer UV

Nutti noreply at git.blender.org
Wed Aug 2 14:34:42 CEST 2017


Commit: 0023a36b40d2df9b05c45a4634f76ba4a179f349
Author: Nutti
Date:   Wed Aug 2 21:33:43 2017 +0900
Branches: master
https://developer.blender.org/rBA0023a36b40d2df9b05c45a4634f76ba4a179f349

Magic UV: Fix bugs, add copy/paste seams option to Copy/Paste UV, Transfer
UV

===================================================================

M	uv_magic_uv/__init__.py
M	uv_magic_uv/muv_common.py
M	uv_magic_uv/muv_cpuv_ops.py
M	uv_magic_uv/muv_cpuv_selseq_ops.py
M	uv_magic_uv/muv_fliprot_ops.py
M	uv_magic_uv/muv_menu.py
M	uv_magic_uv/muv_mirroruv_ops.py
M	uv_magic_uv/muv_mvuv_ops.py
M	uv_magic_uv/muv_packuv_ops.py
M	uv_magic_uv/muv_preferences.py
M	uv_magic_uv/muv_preserve_uv_aspect.py
M	uv_magic_uv/muv_props.py
M	uv_magic_uv/muv_texlock_ops.py
M	uv_magic_uv/muv_texproj_ops.py
M	uv_magic_uv/muv_transuv_ops.py
M	uv_magic_uv/muv_unwrapconst_ops.py
M	uv_magic_uv/muv_uvbb_ops.py
M	uv_magic_uv/muv_wsuv_ops.py

===================================================================

diff --git a/uv_magic_uv/__init__.py b/uv_magic_uv/__init__.py
index 01d3582a..6b9b6d2b 100644
--- a/uv_magic_uv/__init__.py
+++ b/uv_magic_uv/__init__.py
@@ -20,16 +20,16 @@
 
 __author__ = "Nutti <nutti.metro at gmail.com>"
 __status__ = "production"
-__version__ = "4.3.1"
-__date__ = "6 June 2017"
+__version__ = "4.4"
+__date__ = "2 Aug 2017"
 
 
 bl_info = {
     "name": "Magic UV",
     "author": "Nutti, Mifth, Jace Priester, kgeogeo, mem, "
               "Keith (Wahooney) Boshoff, McBuff, MaxRobinot",
-    "version": (4, 3, 1),
-    "blender": (2, 77, 0),
+    "version": (4, 4, 0),
+    "blender": (2, 79, 0),
     "location": "See Add-ons Preferences",
     "description": "UV Manipulator Tools. See Add-ons Preferences for details",
     "warning": "",
diff --git a/uv_magic_uv/muv_common.py b/uv_magic_uv/muv_common.py
index 121915e8..ff2fe3f0 100644
--- a/uv_magic_uv/muv_common.py
+++ b/uv_magic_uv/muv_common.py
@@ -20,8 +20,8 @@
 
 __author__ = "Nutti <nutti.metro at gmail.com>"
 __status__ = "production"
-__version__ = "4.3.1"
-__date__ = "6 June 2017"
+__version__ = "4.4"
+__date__ = "2 Aug 2017"
 
 import bpy
 from . import muv_props
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 at 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))
diff --git a/uv_magic_uv/muv_cpuv_selseq_ops.py b/uv_magic_uv/muv_cpuv_selseq_ops.py
index bbb9de5a..5a1154a9 100644
--- a/uv_magic_uv/muv_cpuv_selseq_ops.py
+++ b/uv_magic_uv/muv_cpuv_selseq_ops.py
@@ -20,8 +20,8 @@
 
 __author__ = "Nutti <nutti.metro at gmail.com>"
 __status__ = "production"
-__version__ = "4.3.1"
-__date__ = "6 June 2017"
+__version__ = "4.4"
+__date__ = "2 Aug 2017"
 
 import bpy
 import bmesh
@@ -73,12 +73,15 @@ class MUV_CPUVSelSeqCopyUV(bpy.types.Operator):
         # get selected face
         props.src_uvs = []
         props.src_pin_uvs = []
+        props.src_seams = []
         for hist in bm.select_history:
             if isinstance(hist, bmesh.types.BMFace) and hist.select:
                 uvs = [l[uv_layer].uv.copy() for l in hist.loops]
                 pin_uvs = [l[uv_layer].pin_uv for l in hist.loops]
+                seams = [l.edge.seam  for l in hist.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'}
@@ -128,16 +131,24 @@ class MUV_CPUVSelSeqPasteUV(bpy.types.Operator):
             ('N_N', 'N:N', 'Number of faces must be equal to source'),
             ('N_M', 'N:M', 'Number of faces must not be equal to source')
         ],
-        default="N_M")
+        default="N_M"
+    )
     flip_copied_uv = BoolProperty(
         name="Flip Copied UV",
         description="Flip Copied UV...",
-        default=False)
+        default=False
+    )
     rotate_copied_uv = IntProperty(
         default=0,
         name="Rotate Copied UV",
         min=0,
-        max=30)
+        max=30
+    )
+    copy_seams = BoolProperty(
+ 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list