From 644200f565c675f56e21a0a5ca2e52fc2e3bb053 Mon Sep 17 00:00:00 2001 From: gumyr Date: Fri, 30 May 2025 09:12:48 -0400 Subject: [PATCH] Fixed misplaced label for vertical dimension lines Issue #915 --- src/build123d/drafting.py | 4 ++-- tests/test_drafting.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/build123d/drafting.py b/src/build123d/drafting.py index 18821fa..ea93fd4 100644 --- a/src/build123d/drafting.py +++ b/src/build123d/drafting.py @@ -455,7 +455,7 @@ class DimensionLine(BaseSketchObject): else: self_intersection_area = self_intersection.area d_line += placed_label - bbox_size = d_line.bounding_box().size + bbox_size = d_line.bounding_box().diagonal # Minimize size while avoiding intersections if sketch is None: @@ -469,7 +469,7 @@ class DimensionLine(BaseSketchObject): else: common_area = line_intersection.area common_area += self_intersection_area - score = (d_line.area - 10 * common_area) / bbox_size.X + score = (d_line.area - 10 * common_area) / bbox_size d_lines[d_line] = score # Sort by score to find the best option diff --git a/tests/test_drafting.py b/tests/test_drafting.py index 3d6ab41..1bb97ab 100644 --- a/tests/test_drafting.py +++ b/tests/test_drafting.py @@ -260,6 +260,11 @@ class DimensionLineTestCase(unittest.TestCase): with self.assertRaises(ValueError): DimensionLine([(0, 0, 0), (5, 0, 0)], draft=metric, arrows=(False, False)) + def test_vertical(self): + d_line = DimensionLine([(0, 0), (0, 100)], Draft()) + bbox = d_line.bounding_box() + self.assertAlmostEqual(bbox.size.Y, 100, 5) # numbers within + class ExtensionLineTestCase(unittest.TestCase): def test_min_x(self):