40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
"""Geometry tests that exercise the build123d boolean features."""
|
|
import pytest
|
|
|
|
pytest.importorskip("build123d")
|
|
|
|
from woodshop.geometry import part_solid # noqa: E402
|
|
from woodshop.scene import Scene # noqa: E402
|
|
|
|
|
|
def test_hole_reduces_volume():
|
|
s = Scene()
|
|
s.place("2x4", 12)
|
|
base = part_solid(s.get_part("p1")).volume
|
|
s.add_feature("p1", "hole", face="top", along_in=6, diameter_in=1.0, depth_in=0) # through
|
|
assert part_solid(s.get_part("p1")).volume < base
|
|
|
|
|
|
def test_mortise_reduces_volume():
|
|
s = Scene()
|
|
s.place("2x4", 12)
|
|
base = part_solid(s.get_part("p1")).volume
|
|
s.add_feature("p1", "mortise", face="top", along_in=6, width_in=1, height_in=2, depth_in=0.75)
|
|
assert part_solid(s.get_part("p1")).volume < base
|
|
|
|
|
|
def test_tenon_adds_volume():
|
|
s = Scene()
|
|
s.place("2x4", 12)
|
|
base = part_solid(s.get_part("p1")).volume
|
|
s.add_feature("p1", "tenon", face="end_b", width_in=1.5, height_in=0.75, depth_in=1.5)
|
|
assert part_solid(s.get_part("p1")).volume > base
|
|
|
|
|
|
def test_featured_part_tessellates():
|
|
s = Scene()
|
|
s.place("2x4", 12)
|
|
s.add_feature("p1", "hole", face="top", along_in=6, diameter_in=0.5, depth_in=0)
|
|
verts, tris = part_solid(s.get_part("p1")).tessellate(0.05)
|
|
assert len(verts) > 8 and len(tris) > 12
|