From cdaa782c183f16b190690a7d4c0b917e90cafe84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Thu, 10 Oct 2024 20:13:00 -0300 Subject: [PATCH] Poyline tool - Adds more layers to increment snap base on viewport zoom. --- src/bonsai/bonsai/tool/polyline.py | 1 - src/bonsai/bonsai/tool/snap.py | 32 ++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/bonsai/bonsai/tool/polyline.py b/src/bonsai/bonsai/tool/polyline.py index 416717acf7..dbbb48ea1d 100644 --- a/src/bonsai/bonsai/tool/polyline.py +++ b/src/bonsai/bonsai/tool/polyline.py @@ -577,7 +577,6 @@ class Polyline(bonsai.core.tool.Polyline): polyline_point.dim = d polyline_point.angle = a polyline_point.position = Vector((x, y, z)) - print(polyline_point.x, polyline_point.y, polyline_point.z) # Add total length total_length = 0 diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py index 46ccaf44a5..1ce2b9ffae 100644 --- a/src/bonsai/bonsai/tool/snap.py +++ b/src/bonsai/bonsai/tool/snap.py @@ -46,29 +46,41 @@ class Snap(bonsai.core.tool.Snap): rv3d = context.region_data factor = 1 - fraction = 10 - reference_value = -0.1 - distance = 10 + fractions = [100, 20, 10, 2] + ortho_threshold = [-0.5, -0.25, -0.15, -0.05] + distances = [3, 5, 15, 30] unit_system = tool.Drawing.get_unit_system() if unit_system == "IMPERIAL": factor = 3.28084 - fraction = 12 - reference_value = -0.4 - distance = 5 + fractions = [24, 12, 6, 2] + ortho_threshold = [-10.0, -4.75, -2.2, -0.75] + distances = [3, 6, 10, 20] increment = None if rv3d.view_perspective == "PERSP": - if rv3d.view_distance < distance: - increment = (1 / fraction) / factor + if rv3d.view_distance < distances[0]: + increment = (1 / fractions[0]) / factor + elif distances[0] < rv3d.view_distance < distances[1]: + increment = (1 / fractions[1]) / factor + elif distances[1] < rv3d.view_distance < distances[2]: + increment = (1 / fractions[2]) / factor + elif distances[2] < rv3d.view_distance < distances[3]: + increment = (1 / fractions[3]) / factor else: increment = 1 / factor if rv3d.view_perspective == "ORTHO" or ( rv3d.view_perspective == "CAMERA" and context.scene.camera.data.type == "ORTHO" ): window_scale = rv3d.window_matrix.to_scale() - if window_scale[0] < reference_value and window_scale[1] < reference_value: - increment = (1 / fraction) / factor + if window_scale[1] < ortho_threshold[0]: + increment = (1 / fractions[0]) / factor + elif ortho_threshold[0] < window_scale[1] < ortho_threshold[1]: + increment = (1 / fractions[1]) / factor + elif ortho_threshold[1] < window_scale[1] < ortho_threshold[2]: + increment = (1 / fractions[2]) / factor + elif ortho_threshold[2] < window_scale[1] < ortho_threshold[3]: + increment = (1 / fractions[3]) / factor else: increment = 1 / factor