diff options
author | Alan Odom <clockmender@icloud.com> | 2020-01-29 20:48:38 +0300 |
---|---|---|
committer | Rune Morling <ermo.blender.org@spammesenseless.net> | 2020-02-01 18:42:29 +0300 |
commit | 877308f917482708ab85b9c29268623c8e0877b6 (patch) | |
tree | e977717428ca23fe58aae392c7578d77a20978e3 /precision_drawing_tools/pdt_bix.py | |
parent | 7805692b57fac260e8738e26d935c5e229e9875c (diff) |
PDT: Refactor per Pylint suggestions + readability
- Remove unused imports
- Add comments where appropriate
- Improve readability of variable names
- Re-implement a couple of functions using dictionaries instead of if-statements
- Results of Pylint & Black operations, plus some fixes to code.
Diffstat (limited to 'precision_drawing_tools/pdt_bix.py')
-rw-r--r-- | precision_drawing_tools/pdt_bix.py | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/precision_drawing_tools/pdt_bix.py b/precision_drawing_tools/pdt_bix.py index 0da468cb..f6b5cb66 100644 --- a/precision_drawing_tools/pdt_bix.py +++ b/precision_drawing_tools/pdt_bix.py @@ -34,6 +34,7 @@ from .pdt_msg_strings import ( ) from .pdt_functions import debug, oops + def add_line_to_bisection(context): """Computes Bisector of 2 Co-Planar Edges. @@ -47,8 +48,8 @@ def add_line_to_bisection(context): obj = context.object if all([bool(obj), obj.type == "MESH", obj.mode == "EDIT"]): pg = context.scene.pdt_pg - me = obj.data - bm = bmesh.from_edit_mesh(me) + obj_data = obj.data + bm = bmesh.from_edit_mesh(obj_data) bm.verts.ensure_lookup_table() bm.edges.ensure_lookup_table() @@ -60,39 +61,47 @@ def add_line_to_bisection(context): context.window_manager.popup_menu(oops, title="Error", icon="ERROR") return - [[v1, v2], [v3, v4]] = [[v.co for v in e.verts] for e in edges] - debug(f"vectors found:\n {v1}\n {v2}\n {v3}\n {v4}") + [[vector_a, vector_b], [vector_c, vector_d]] = [[v.co for v in e.verts] for e in edges] + debug(f"vectors found:\n {vector_a}\n {vector_b}\n {vector_c}\n {vector_d}") - dist1 = (v1 - v2).length - dist2 = (v3 - v4).length + dist1 = (vector_a - vector_b).length + dist2 = (vector_c - vector_d).length bdist = min([dist1, dist2]) - edge1 = (v1, v2) - edge2 = (v3, v4) + edge1 = (vector_a, vector_b) + edge2 = (vector_c, vector_d) if not cm.test_coplanar(edge1, edge2): pg.error = PDT_ERR_NCEDGES context.window_manager.popup_menu(oops, title="Error", icon="ERROR") return - # get pt and pick farthest vertex from (projected) intersections - pt = cm.get_intersection(edge1, edge2) - far1 = v2 if (v1 - pt).length < (v2 - pt).length else v1 - far2 = v4 if (v3 - pt).length < (v4 - pt).length else v3 - - dex1 = far1 - pt - dex2 = far2 - pt + # get intersect_point and pick farthest vertex from (projected) intersections + intersect_point = cm.get_intersection(edge1, edge2) + far1 = ( + vector_b + if (vector_a - intersect_point).length < (vector_b - intersect_point).length + else vector_a + ) + far2 = ( + vector_d + if (vector_c - intersect_point).length < (vector_d - intersect_point).length + else vector_c + ) + + dex1 = far1 - intersect_point + dex2 = far2 - intersect_point dex1 = dex1 * (bdist / dex1.length) dex2 = dex2 * (bdist / dex2.length) - pt2 = pt + (dex1).lerp(dex2, 0.5) - pt3 = pt2.lerp(pt, 2.0) + intersect_point2 = intersect_point + (dex1).lerp(dex2, 0.5) + intersect_point3 = intersect_point2.lerp(intersect_point, 2.0) - vec1 = bm.verts.new(pt2) - vec2 = bm.verts.new(pt) - vec3 = bm.verts.new(pt3) + vec1 = bm.verts.new(intersect_point2) + vec2 = bm.verts.new(intersect_point) + vec3 = bm.verts.new(intersect_point3) bm.edges.new((vec1, vec2)) bm.edges.new((vec2, vec3)) bmesh.ops.remove_doubles(bm, verts=bm.verts, dist=0.0001) - bmesh.update_edit_mesh(me) + bmesh.update_edit_mesh(obj_data) else: pg.error = f"{PDT_ERR_EDOB_MODE},{obj.mode})" context.window_manager.popup_menu(oops, title="Error", icon="ERROR") @@ -109,10 +118,10 @@ class PDT_OT_LineOnBisection(bpy.types.Operator): @classmethod def poll(cls, context): """Only allow operation on a mesh object in EDIT mode.""" - ob = context.active_object - if ob is None: + obj = context.active_object + if obj is None: return False - return all([ob is not None, ob.type == "MESH", ob.mode == "EDIT"]) + return all([obj is not None, obj.type == "MESH", obj.mode == "EDIT"]) def execute(self, context): """Computes Bisector of 2 Co-Planar Edges. |