feat: add align.NONE

This commit is contained in:
Ethan Rooke 2024-11-12 17:59:00 -06:00
parent f2095d64cf
commit cf11f91f2d
No known key found for this signature in database
GPG key ID: B2874A77049A5923
4 changed files with 6 additions and 7 deletions

View file

@ -36,6 +36,7 @@ class Align(Enum):
MIN = auto() MIN = auto()
CENTER = auto() CENTER = auto()
MAX = auto() MAX = auto()
NONE = None
def __repr__(self): def __repr__(self):
return f"<{self.__class__.__name__}.{self.name}>" return f"<{self.__class__.__name__}.{self.name}>"

View file

@ -2541,4 +2541,6 @@ def to_align_offset(
align_offset.append(-(min_coord + max_coord) / 2) align_offset.append(-(min_coord + max_coord) / 2)
elif alignment == Align.MAX: elif alignment == Align.MAX:
align_offset.append(-max_coord) align_offset.append(-max_coord)
elif alignment == Align.NONE:
align_offset.append(0)
return Vector(*align_offset) return Vector(*align_offset)

View file

@ -311,7 +311,7 @@ class RegularPolygon(BaseSketchObject):
side_count: int, side_count: int,
major_radius: bool = True, major_radius: bool = True,
rotation: float = 0, rotation: float = 0,
align: tuple[Align, Align] = (Align.CENTER, Align.CENTER), align: tuple[Align, Align] = (Align.NONE, Align.NONE),
mode: Mode = Mode.ADD, mode: Mode = Mode.ADD,
): ):
# pylint: disable=too-many-locals # pylint: disable=too-many-locals

View file

@ -29,8 +29,6 @@ license:
import unittest import unittest
from math import atan2, degrees, pi, sqrt from math import atan2, degrees, pi, sqrt
import pytest
from build123d import * from build123d import *
@ -260,7 +258,7 @@ class TestBuildSketchObjects(unittest.TestCase):
self.assertEqual(r.radius, 2) self.assertEqual(r.radius, 2)
self.assertEqual(r.side_count, 6) self.assertEqual(r.side_count, 6)
self.assertEqual(r.rotation, 0) self.assertEqual(r.rotation, 0)
self.assertEqual(r.align, (Align.CENTER, Align.CENTER)) self.assertEqual(r.align, (Align.NONE, Align.NONE))
self.assertEqual(r.mode, Mode.ADD) self.assertEqual(r.mode, Mode.ADD)
self.assertAlmostEqual(test.sketch.area, (3 * sqrt(3) / 2) * 2**2, 5) self.assertAlmostEqual(test.sketch.area, (3 * sqrt(3) / 2) * 2**2, 5)
self.assertTupleAlmostEquals( self.assertTupleAlmostEquals(
@ -274,14 +272,13 @@ class TestBuildSketchObjects(unittest.TestCase):
self.assertAlmostEqual(r.radius, 1, 5) self.assertAlmostEqual(r.radius, 1, 5)
self.assertEqual(r.side_count, 3) self.assertEqual(r.side_count, 3)
self.assertEqual(r.rotation, 0) self.assertEqual(r.rotation, 0)
self.assertEqual(r.align, (Align.CENTER, Align.CENTER)) self.assertEqual(r.align, (Align.NONE, Align.NONE))
self.assertEqual(r.mode, Mode.ADD) self.assertEqual(r.mode, Mode.ADD)
self.assertAlmostEqual(test.sketch.area, (3 * sqrt(3) / 4) * (0.5 * 2) ** 2, 5) self.assertAlmostEqual(test.sketch.area, (3 * sqrt(3) / 4) * (0.5 * 2) ** 2, 5)
self.assertTupleAlmostEquals( self.assertTupleAlmostEquals(
test.sketch.faces()[0].normal_at().to_tuple(), (0, 0, 1), 5 test.sketch.faces()[0].normal_at().to_tuple(), (0, 0, 1), 5
) )
@pytest.mark.skip(reason="Conflicts with test_regular_polygon_matches_polar")
def test_regular_polygon_align(self): def test_regular_polygon_align(self):
with BuildSketch() as align: with BuildSketch() as align:
RegularPolygon(2, 5, align=(Align.MIN, Align.MAX)) RegularPolygon(2, 5, align=(Align.MIN, Align.MAX))
@ -297,7 +294,6 @@ class TestBuildSketchObjects(unittest.TestCase):
Vector(align.vertices().sort_by_distance(other=(0, 0, 0))[-1]).length, 2 Vector(align.vertices().sort_by_distance(other=(0, 0, 0))[-1]).length, 2
) )
@pytest.mark.skip(reason="Conflicts with test_regular_polygon_align")
def test_regular_polygon_matches_polar(self): def test_regular_polygon_matches_polar(self):
for side_count in range(3, 10): for side_count in range(3, 10):
with BuildSketch(): with BuildSketch():