diff options
author | Alan Odom <clockmender@icloud.com> | 2020-02-16 22:53:00 +0300 |
---|---|---|
committer | Rune Morling <ermo.blender.org@spammesenseless.net> | 2020-03-28 20:55:14 +0300 |
commit | 9d8aeccfe3757dbb910f61cec7ec29446d880ad9 (patch) | |
tree | 0a3278adc30c5c28cfad92161c71f272ca0c725a /precision_drawing_tools | |
parent | 4015cd14250a7db23f81df22a3799701e8007664 (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.py | 32 |
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) |