[Bf-extensions-cvs] [3f33410a] master: xedit: more fixes and updates for 2.80

NBurn noreply at git.blender.org
Wed May 29 10:37:52 CEST 2019


Commit: 3f33410a73b346f551eb8f2ca4c2ec33a4d0d470
Author: NBurn
Date:   Wed May 29 04:36:45 2019 -0400
Branches: master
https://developer.blender.org/rBAC3f33410a73b346f551eb8f2ca4c2ec33a4d0d470

xedit: more fixes and updates for 2.80

Initial redo of the UI for Free Rotate. The original code created
many overlapping elements. Replaced some matrix math operations in
Free Rotate that still had the old syntax. Removed unused code from
all files and fixed up some unusual syntax.

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

M	exact_edit/__init__.py
M	exact_edit/xedit_free_rotate.py
M	exact_edit/xedit_set_meas.py

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

diff --git a/exact_edit/__init__.py b/exact_edit/__init__.py
index c9df3096..7b08f8c2 100644
--- a/exact_edit/__init__.py
+++ b/exact_edit/__init__.py
@@ -47,13 +47,12 @@ class XEDIT_PT_ui_pan(bpy.types.Panel):
     bl_space_type = 'VIEW_3D'
     bl_region_type = 'UI'
     #bl_context = 'objectmode'
-    bl_category = 'Tools'
+    bl_category = 'Edit'
 
     def draw(self, context):
         row = self.layout.row(align=True)
         col = row.column()
-        #col.operator("view3d.xedit_set_meas_op", text="Set Measure", icon="EDIT")
-        col.operator("view3d.xedit_set_meas_op", text="Set Measure")
+        col.operator("view3d.xedit_set_meas_op", text="Set Measure", icon="EDITMODE_HLT")
         col.operator("view3d.xedit_free_rotate_op", text="Free Rotate", icon="FORCE_MAGNETIC")  # not working yet
 
 
diff --git a/exact_edit/xedit_free_rotate.py b/exact_edit/xedit_free_rotate.py
index 97dbde39..757deb79 100644
--- a/exact_edit/xedit_free_rotate.py
+++ b/exact_edit/xedit_free_rotate.py
@@ -164,7 +164,7 @@ class MenuHandler:
         self.dis_colr = dis_colr  # disabled color
         self.reg = reg  # region
 
-        view_offset = 36, 45  # box left top start
+        self.view_offset = 20, 95  # box left top start
         self.box_y_pad = 8  # vertical space between boxes
 
         fontid = 0
@@ -172,18 +172,19 @@ class MenuHandler:
         lcase_wid, lcase_hgt = blf.dimensions(fontid, "n")
         ucase_wid, ucase_hgt = blf.dimensions(fontid, "N")
         bot_space = blf.dimensions(fontid, "gp")[1] - lcase_hgt
-        self.full_hgt = blf.dimensions(fontid, "NTgp")[1]
+        self.full_txt_hgt = blf.dimensions(fontid, "NTgp")[1]
 
         arr_wid, arr_hgt = 12, 16
         arrow_base = (0, 0), (0, arr_hgt), (arr_wid, arr_hgt/2)
-        aw_adj, ah_adj = arr_wid * 1.5, (arr_hgt - ucase_hgt) / 2
+        aw_adj, ah_adj = arr_wid * 0.50, (arr_hgt - ucase_hgt) / 2
         self.arrow_pts = []
         for a in arrow_base:
             self.arrow_pts.append((a[0] - aw_adj, a[1] - ah_adj))
 
-        self.blef = view_offset[0] + toolwid  # box left start
-        self.titlco = self.blef // 2, self.reg.height - view_offset[1]
-        self.btop = self.titlco[1] - (self.full_hgt // 1.5)
+        self.blef = self.view_offset[0] + toolwid  # box left start
+        #self.titlco = self.blef // 2, self.reg.height - self.view_offset[1]
+        self.titlco = self.blef, self.reg.height - self.view_offset[1]
+        self.btop = self.titlco[1] - (self.full_txt_hgt // 1.5)
         self.txt_y_pad = bot_space * 2
 
     def add_menu(self, strings):
@@ -195,8 +196,8 @@ class MenuHandler:
         for i in range(new.cnt):
             new.txtcolrs.append(self.dis_colr)
             new.texts.append(strings[i])
-            bbot = btop - self.full_hgt
-            new.tcoords.append((tlef, bbot))
+            bbot = btop - self.full_txt_hgt
+            new.tcoords.append((tlef + self.view_offset[0], bbot))
             btop = bbot - self.box_y_pad
             new.arrows.append((
                 (self.arrow_pts[0][0] + tlef, self.arrow_pts[0][1] + bbot),
@@ -853,7 +854,7 @@ def set_arc_pts(ref_pts):
         mid_piv_free = piv.lerp(fre, ratio)
         arc_pts = [mid_piv_free]
         steps = 36
-        ang_step = pi*2 / steps
+        ang_step = pi * 2 / steps
         mid_align = mid_piv_free - piv
         for a in range(1, steps+1):
             rot_val = Quaternion(piv_norm, ang_step * a)
@@ -1040,10 +1041,10 @@ def draw_callback_px(self, context):
                 if RotDat.axis_lock == 'X':
                     test = self.pts[0].co3d + Vector((1, 0, 0))
                     colr = Colr.red
-                if RotDat.axis_lock == 'Y':
+                elif RotDat.axis_lock == 'Y':
                     test = self.pts[0].co3d + Vector((0, 1, 0))
                     colr = Colr.green
-                if RotDat.axis_lock == 'Z':
+                elif RotDat.axis_lock == 'Z':
                     test = self.pts[0].co3d + Vector((0, 0, 1))
                     colr = Colr.blue
 
@@ -1258,13 +1259,13 @@ class XEDIT_OT_free_rotate(bpy.types.Operator):
                             if not self.shift_held:
                                 for sel in bm.select_history:
                                     if type(sel) is bmesh.types.BMVert:
-                                        co3d = m_w * sel.co
+                                        co3d = m_w @ sel.co
                                         break
                                     elif type(sel) is bmesh.types.BMEdge or \
                                             type(sel) is bmesh.types.BMFace:
                                         co3d = Vector()
                                         for v in sel.verts:
-                                            co3d += m_w * v.co
+                                            co3d += m_w @ v.co
                                         co3d = co3d / len(sel.verts)
                                         break
                             else:
diff --git a/exact_edit/xedit_set_meas.py b/exact_edit/xedit_set_meas.py
index cf4cda27..77efa99d 100644
--- a/exact_edit/xedit_set_meas.py
+++ b/exact_edit/xedit_set_meas.py
@@ -93,7 +93,7 @@ def backup_blender_settings():
         deepcopy(bpy.context.tool_settings.snap_target),
         deepcopy(bpy.context.tool_settings.transform_pivot_point),
         deepcopy(bpy.context.scene.transform_orientation_slots[0].type),
-        #deepcopy(bpy.context.space_data.show_manipulator),
+        deepcopy(bpy.context.space_data.show_gizmo),
         deepcopy(bpy.context.scene.cursor.location)]
     return backup
 
@@ -104,7 +104,7 @@ def init_blender_settings():
     bpy.context.tool_settings.snap_target = 'CLOSEST'
     bpy.context.tool_settings.transform_pivot_point = 'ACTIVE_ELEMENT'
     bpy.context.scene.transform_orientation_slots[0].type = 'GLOBAL'
-    #bpy.context.space_data.show_manipulator = False
+    bpy.context.space_data.show_gizmo = False
     return
 
 
@@ -114,8 +114,8 @@ def restore_blender_settings(backup):
     bpy.context.tool_settings.snap_target = deepcopy(backup[2])
     bpy.context.tool_settings.transform_pivot_point = deepcopy(backup[3])
     bpy.context.scene.transform_orientation_slots[0].type = deepcopy(backup[4])
-    #bpy.context.space_data.show_manipulator = deepcopy(backup[5])
-    bpy.context.scene.cursor.location = deepcopy(backup[5])
+    bpy.context.space_data.show_gizmo = deepcopy(backup[5])
+    bpy.context.scene.cursor.location = deepcopy(backup[6])
     return
 
 
@@ -1019,7 +1019,7 @@ def set_arc_pts(ref_pts):
         mid_piv_free = piv.lerp(fre, ratio)
         arc_pts = [mid_piv_free]
         steps = 36
-        ang_step = pi*2 / steps
+        ang_step = pi * 2 / steps
         mid_align = mid_piv_free - piv
         for a in range(1, steps+1):
             rot_val = Quaternion(piv_norm, ang_step * a)
@@ -1264,11 +1264,10 @@ def create_z_orient(rot_vec):
 # Then rotates selected objects or selected vertices around the
 # 3D cursor using RotDat's ang_diff_r radian value.
 def do_rotate(self):
-    #print("def do_rotate(self):")
+    #print("def do_rotate(self):")  # debug
 
     axis_lock = RotDat.axis_lock
     pivot = self.pts[2].co3d.copy()
-    mode = bpy.context.mode
     if axis_lock is None:
         #rot_matr = Matrix.Rotation(RotDat.ang_diff_r, 4, RotDat.piv_norm)
         norml = RotDat.piv_norm
@@ -1284,30 +1283,6 @@ def do_rotate(self):
             center_override=pivot,
             constraint_axis=(False, False, False))
 
-        '''
-        if mode == "EDIT_MESH":
-            bm = bmesh.from_edit_mesh(bpy.context.edit_object.data)
-            if hasattr(bm.verts, "ensure_lookup_table"):
-                bm.verts.ensure_lookup_table()
-            for v in bm.verts:
-                if v.select:
-                    v.co = pivot + (rot_matr @ (v.co - pivot))
-
-            bmesh.update_edit_mesh(bpy.context.edit_object.data)
-
-        elif mode == "OBJECT":
-            for ob in bpy.context.selected_objects:
-                ob_loc, ob_rot, ob_scale = ob.matrix_world.decompose()
-                ob_loc_mult  = pivot + (rot_matr @ (ob_loc - pivot))
-                ob_loc_mat   = Matrix.Translation(ob_loc_mult)
-                ob_rot_mat   = ob_rot.to_matrix().to_4x4()
-                ob_scale_mat = (Matrix.Scale(ob_scale[0],4,(1,0,0)) @ 
-                                Matrix.Scale(ob_scale[1],4,(0,1,0)) @ 
-                                Matrix.Scale(ob_scale[2],4,(0,0,1)))
-
-                ob.matrix_world = ob_loc_mat @ rot_matr @ ob_rot_mat @ ob_scale_mat
-        '''
-
     else:
         const_ax = False, False, False



More information about the Bf-extensions-cvs mailing list