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:
authorAlan Odom <clockmender@icloud.com>2020-02-16 22:53:00 +0300
committerRune Morling <ermo.blender.org@spammesenseless.net>2020-03-28 20:55:14 +0300
commit9d8aeccfe3757dbb910f61cec7ec29446d880ad9 (patch)
tree0a3278adc30c5c28cfad92161c71f272ca0c725a /precision_drawing_tools
parent4015cd14250a7db23f81df22a3799701e8007664 (diff)
PDT: Add Local View Options (enhancement)
Add local view orientation options to Delta & Direction options for all functions.
Diffstat (limited to 'precision_drawing_tools')
-rw-r--r--precision_drawing_tools/pdt_command.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/precision_drawing_tools/pdt_command.py b/precision_drawing_tools/pdt_command.py
index dc30d2ff..5b4b30c1 100644
--- a/precision_drawing_tools/pdt_command.py
+++ b/precision_drawing_tools/pdt_command.py
@@ -32,6 +32,8 @@ from .pdt_functions import (
obj_check,
oops,
update_sel,
+ view_coords,
+ view_dir,
)
from .pdt_command_functions import (
vector_build,
@@ -535,6 +537,10 @@ def move_cursor_pivot(context, pg, operation, mode, obj, verts, values):
elif operation == "P":
pg.pivot_loc = vector_delta
elif mode in {"d", "i"}:
+ if pg.plane == "LO" and mode == "d":
+ vector_delta = view_coords(vector_delta.x, vector_delta.y, vector_delta.z)
+ elif pg.plane == "LO" and mode == "i":
+ vector_delta = view_dir(pg.distance, pg.angle)
if mode_sel == "REL":
if operation == "C":
scene.cursor.location = scene.cursor.location + vector_delta
@@ -613,6 +619,12 @@ def move_entities(context, pg, operation, mode, obj, bm, verts, values):
vector_delta = vector_build(context, pg, obj, operation, values, 2)
except:
raise PDT_InvalidVector
+
+ if pg.plane == "LO" and mode == "d":
+ vector_delta = view_coords(vector_delta.x, vector_delta.y, vector_delta.z)
+ elif pg.plane == "LO" and mode == "i":
+ vector_delta = view_dir(pg.distance, pg.angle)
+
if obj.mode == "EDIT":
bmesh.ops.translate(
bm, verts=[v for v in bm.verts if v.select], vec=vector_delta
@@ -670,6 +682,8 @@ def add_new_vertex(context, pg, operation, mode, obj, bm, verts, values):
vector_delta = vector_build(context, pg, obj, operation, values, 3)
except:
raise PDT_InvalidVector
+ if pg.plane == "LO":
+ vector_delta = view_coords(vector_delta.x, vector_delta.y, vector_delta.z)
new_vertex = bm.verts.new(verts[-1].co + vector_delta)
# Direction/Polar Coordinates
elif mode == "i":
@@ -677,6 +691,8 @@ def add_new_vertex(context, pg, operation, mode, obj, bm, verts, values):
vector_delta = vector_build(context, pg, obj, operation, values, 2)
except:
raise PDT_InvalidVector
+ if pg.plane == "LO":
+ vector_delta = view_dir(pg.distance, pg.angle)
new_vertex = bm.verts.new(verts[-1].co + vector_delta)
# Percent Options Only Other Choice
else:
@@ -840,6 +856,8 @@ def extrude_vertices(context, pg, operation, mode, obj, obj_loc, bm, verts, valu
vector_delta = vector_build(context, pg, obj, operation, values, 3)
except:
raise PDT_InvalidVector
+ if pg.plane == "LO":
+ vector_delta = view_coords(vector_delta.x, vector_delta.y, vector_delta.z)
for v in verts:
new_vertex = bm.verts.new(v.co)
new_vertex.co = new_vertex.co + vector_delta
@@ -852,6 +870,8 @@ def extrude_vertices(context, pg, operation, mode, obj, obj_loc, bm, verts, valu
vector_delta = vector_build(context, pg, obj, operation, values, 2)
except:
raise PDT_InvalidVector
+ if pg.plane == "LO":
+ vector_delta = view_dir(pg.distance, pg.angle)
for v in verts:
new_vertex = bm.verts.new(v.co)
new_vertex.co = new_vertex.co + vector_delta
@@ -925,6 +945,12 @@ def extrude_geometry(context, pg, operation, mode, obj, bm, values):
edges_extr = [e for e in geom_extr if isinstance(e, bmesh.types.BMEdge)]
faces_extr = [f for f in geom_extr if isinstance(f, bmesh.types.BMFace)]
del ret
+
+ if pg.plane == "LO" and mode == "d":
+ vector_delta = view_coords(vector_delta.x, vector_delta.y, vector_delta.z)
+ elif pg.plane == "LO" and mode == "i":
+ vector_delta = view_dir(pg.distance, pg.angle)
+
bmesh.ops.translate(bm, verts=verts_extr, vec=vector_delta)
update_sel(bm, verts_extr, edges_extr, faces_extr)
bmesh.update_edit_mesh(obj.data)
@@ -978,6 +1004,12 @@ def duplicate_geometry(context, pg, operation, mode, obj, bm, values):
edges_dupe = [e for e in geom_dupe if isinstance(e, bmesh.types.BMEdge)]
faces_dupe = [f for f in geom_dupe if isinstance(f, bmesh.types.BMFace)]
del ret
+
+ if pg.plane == "LO" and mode == "d":
+ vector_delta = view_coords(vector_delta.x, vector_delta.y, vector_delta.z)
+ elif pg.plane == "LO" and mode == "i":
+ vector_delta = view_dir(pg.distance, pg.angle)
+
bmesh.ops.translate(bm, verts=verts_dupe, vec=vector_delta)
update_sel(bm, verts_dupe, edges_dupe, faces_dupe)
bmesh.update_edit_mesh(obj.data)