[Bf-extensions-cvs] [3049742f] master: Fix T73326: Blender 2.81 - AutoMirror issue

Spivak Vladimir cwolf3d noreply at git.blender.org
Thu Jan 23 02:17:23 CET 2020


Commit: 3049742f7ff91beaa0a0c7b05d62bf2e418fd264
Author: Spivak Vladimir (cwolf3d)
Date:   Thu Jan 23 03:16:39 2020 +0200
Branches: master
https://developer.blender.org/rBA3049742f7ff91beaa0a0c7b05d62bf2e418fd264

Fix T73326: Blender 2.81 - AutoMirror issue

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

M	mesh_auto_mirror.py

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

diff --git a/mesh_auto_mirror.py b/mesh_auto_mirror.py
index 384fb37b..9585ee96 100644
--- a/mesh_auto_mirror.py
+++ b/mesh_auto_mirror.py
@@ -33,6 +33,7 @@ from bpy.types import (
         Menu,
         Panel,
         AddonPreferences,
+        PropertyGroup,
         )
 from bpy.props import (
         BoolProperty,
@@ -46,7 +47,7 @@ from bpy.props import (
 
 # Operator
 
-class AlignVertices(bpy.types.Operator):
+class AlignVertices(Operator):
 
     """ Automatically cut an object along an axis """
 
@@ -59,6 +60,8 @@ class AlignVertices(bpy.types.Operator):
         return obj and obj.type == "MESH"
 
     def execute(self, context):
+        automirror = context.scene.automirror
+        
         bpy.ops.object.mode_set(mode = 'OBJECT')
 
         x1,y1,z1 = bpy.context.scene.cursor.location
@@ -73,14 +76,14 @@ class AlignVertices(bpy.types.Operator):
         #Vertices coordinate to 0 (local coordinate, so on the origin)
         for vert in bpy.context.object.data.vertices:
             if vert.select:
-                if bpy.context.scene.AutoMirror_axis == 'x':
+                if automirror.axis == 'x':
                     axis = 0
-                elif bpy.context.scene.AutoMirror_axis == 'y':
+                elif automirror.axis == 'y':
                     axis = 1
-                elif bpy.context.scene.AutoMirror_axis == 'z':
+                elif automirror.axis == 'z':
                     axis = 2
                 vert.co[axis] = 0
-        #
+
         bpy.context.scene.cursor.location = x2,y2,z2
 
         bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
@@ -103,88 +106,98 @@ class AutoMirror(bpy.types.Operator):
         return obj and obj.type == "MESH"
 
     def draw(self, context):
+        automirror = context.scene.automirror
+
         layout = self.layout
         if bpy.context.object and bpy.context.object.type == 'MESH':
-            layout.prop(context.scene, "AutoMirror_axis", text="Mirror axis")
-            layout.prop(context.scene, "AutoMirror_orientation", text="Orientation")
-            layout.prop(context.scene, "AutoMirror_threshold", text="Threshold")
-            layout.prop(context.scene, "AutoMirror_toggle_edit", text="Toggle edit")
-            layout.prop(context.scene, "AutoMirror_cut", text="Cut and mirror")
-            if bpy.context.scene.AutoMirror_cut:
-                layout.prop(context.scene, "AutoMirror_clipping", text="Clipping")
-                layout.prop(context.scene, "AutoMirror_apply_mirror", text="Apply mirror")
+            layout.prop(automirror, "axis", text = "Mirror axis")
+            layout.prop(automirror, "orientation", text = "Orientation")
+            layout.prop(automirror, "threshold", text = "Threshold")
+            layout.prop(automirror, "toggle_edit", text = "Toggle edit")
+            layout.prop(automirror, "cut", text = "Cut and mirror")
+            if automirror.cut:
+                layout.prop(automirror, "clipping", text = "Clipping")
+                layout.prop(automirror, "mirror", text = "Apply mirror")
 
         else:
-            layout.label(icon="ERROR", text="No mesh selected")
+            layout.label(icon = "ERROR", text = "No mesh selected")
 
     def get_local_axis_vector(self, context, X, Y, Z, orientation):
         loc = context.object.location
-        bpy.ops.object.mode_set(mode="OBJECT") # Needed to avoid to translate vertices
+        bpy.ops.object.mode_set(mode = "OBJECT") # Needed to avoid to translate vertices
 
         v1 = Vector((loc[0],loc[1],loc[2]))
-        bpy.ops.transform.translate(value=(X*orientation, Y*orientation, Z*orientation),
-                                        constraint_axis=((X==1), (Y==1), (Z==1)),
-                                        orient_type='LOCAL')
+        bpy.ops.transform.translate(value = (X*orientation, Y*orientation, Z*orientation),
+                                        constraint_axis = ((X==1), (Y==1), (Z==1)),
+                                        orient_type = 'LOCAL')
         v2 = Vector((loc[0],loc[1],loc[2]))
-        bpy.ops.transform.translate(value=(-X*orientation, -Y*orientation, -Z*orientation),
-                                        constraint_axis=((X==1), (Y==1), (Z==1)),
-                                        orient_type='LOCAL')
+        bpy.ops.transform.translate(value = (-X*orientation, -Y*orientation, -Z*orientation),
+                                        constraint_axis = ((X==1), (Y==1), (Z==1)),
+                                        orient_type = 'LOCAL')
 
         bpy.ops.object.mode_set(mode="EDIT")
         return v2-v1
 
     def execute(self, context):
+        automirror = context.scene.automirror
+
         X,Y,Z = 0,0,0
-        if bpy.context.scene.AutoMirror_axis == 'x':
+        
+        if automirror.axis == 'x':
             X = 1
-        elif bpy.context.scene.AutoMirror_axis == 'y':
+        elif automirror.axis == 'y':
             Y = 1
-        elif bpy.context.scene.AutoMirror_axis == 'z':
+        elif automirror.axis == 'z':
             Z = 1
 
         current_mode = bpy.context.object.mode # Save the current mode
 
         if bpy.context.object.mode != "EDIT":
-            bpy.ops.object.mode_set(mode="EDIT") # Go to edit mode
-        bpy.ops.mesh.select_all(action='SELECT') # Select all the vertices
-        if bpy.context.scene.AutoMirror_orientation == 'positive':
+            bpy.ops.object.mode_set(mode = "EDIT") # Go to edit mode
+        
+        bpy.ops.mesh.select_all(action = 'SELECT') # Select all the vertices
+        
+        if automirror.orientation == 'positive':
             orientation = 1
         else:
             orientation = -1
+        
         cut_normal = self.get_local_axis_vector(context, X, Y, Z, orientation)
 
         # Cut the mesh
         bpy.ops.mesh.bisect(
-                plane_co=(
+                plane_co = (
                 bpy.context.object.location[0],
                 bpy.context.object.location[1],
                 bpy.context.object.location[2]
                 ),
-                plane_no=cut_normal,
-                use_fill= False,
-                clear_inner= bpy.context.scene.AutoMirror_cut,
-                clear_outer= 0,
-                threshold= bpy.context.scene.AutoMirror_threshold) 
+                plane_no = cut_normal,
+                use_fill = False,
+                clear_inner = automirror.cut,
+                clear_outer = 0,
+                threshold = automirror.threshold
+                )
 
         bpy.ops.object.align_vertices() # Use to align the vertices on the origin, needed by the "threshold"
 
-        if not bpy.context.scene.AutoMirror_toggle_edit:
-            bpy.ops.object.mode_set(mode=current_mode) # Reload previous mode
+        if not automirror.toggle_edit:
+            bpy.ops.object.mode_set(mode = current_mode) # Reload previous mode
 
-        if bpy.context.scene.AutoMirror_cut:
-            bpy.ops.object.modifier_add(type='MIRROR') # Add a mirror modifier
+        if automirror.cut:
+            bpy.ops.object.modifier_add(type = 'MIRROR') # Add a mirror modifier
             bpy.context.object.modifiers[-1].use_axis[0] = X # Choose the axis to use, based on the cut's axis
             bpy.context.object.modifiers[-1].use_axis[1] = Y
             bpy.context.object.modifiers[-1].use_axis[2] = Z
-            bpy.context.object.modifiers[-1].use_clip = context.scene.Use_Matcap
-            bpy.context.object.modifiers[-1].show_on_cage = context.scene.AutoMirror_show_on_cage
-            if bpy.context.scene.AutoMirror_apply_mirror:
-                bpy.ops.object.mode_set(mode='OBJECT')
-                bpy.ops.object.modifier_apply(apply_as= 'DATA', modifier= bpy.context.object.modifiers[-1].name)
-                if bpy.context.scene.AutoMirror_toggle_edit:
-                    bpy.ops.object.mode_set(mode='EDIT')
+            bpy.context.object.modifiers[-1].use_clip = automirror.Use_Matcap
+            bpy.context.object.modifiers[-1].show_on_cage = automirror.show_on_cage
+            if automirror.apply_mirror:
+                bpy.ops.object.mode_set(mode = 'OBJECT')
+                bpy.ops.object.modifier_apply(apply_as = 'DATA',
+                                              modifier = bpy.context.object.modifiers[-1].name)
+                if automirror.toggle_edit:
+                    bpy.ops.object.mode_set(mode = 'EDIT')
                 else:
-                    bpy.ops.object.mode_set(mode=current_mode)
+                    bpy.ops.object.mode_set(mode = current_mode)
 
         return {'FINISHED'}
 
@@ -198,62 +211,75 @@ class VIEW3D_PT_BisectMirror(Panel):
     bl_category = 'Edit'
     bl_options = {'DEFAULT_CLOSED'}
 
-
     def draw(self, context):
+        automirror = context.scene.automirror
+        
         layout = self.layout
         col = layout.column(align=True)
 
         layout = self.layout
-        if bpy.context.object and bpy.context.object.type == 'MESH':
 
+        if bpy.context.object and bpy.context.object.type == 'MESH':
             layout.operator("object.automirror")
-            layout.prop(context.scene, "AutoMirror_axis", text="Mirror Axis", expand=True)
-            layout.prop(context.scene, "AutoMirror_orientation", text="Orientation")
-            layout.prop(context.scene, "AutoMirror_threshold", text="Threshold")
-            layout.prop(context.scene, "AutoMirror_toggle_edit", text="Toggle Edit")
-            layout.prop(context.scene, "AutoMirror_cut", text="Cut and Mirror")
-            if bpy.context.scene.AutoMirror_cut:
-                layout.prop(context.scene, "Use_Matcap", text="Use Clip")
-                layout.prop(context.scene, "AutoMirror_show_on_cage", text="Editable")
-                layout.prop(context.scene, "AutoMirror_apply_mirror", text="Apply Mirror")
+            layout.prop(automirror, "axis", text = "Mirror Axis", expand=True)
+            layout.prop(automirror, "orientation", text = "Orientation")
+            layout.prop(automirror, "threshold", text = "Threshold")
+            layout.prop(automirror, "toggle_edit", text = "Toggle Edit")
+            layout.prop(automirror, "cut", text = "Cut and Mirror")
+      

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list