Files
cadSet/text-to-cad/models/benchmarks/benchmark_01_rectangular_calibration_block.py
2026-07-22 19:38:36 +08:00

32 lines
1.0 KiB
Python

from build123d import Align, Box, BuildPart, Cylinder, Location, Locations, Mode
from benchmark_common import line_edges_at_z, safe_chamfer
LENGTH = 100.0
WIDTH = 60.0
HEIGHT = 20.0
HOLE_DIAMETER = 8.0
HOLE_LOCATIONS = ((-35.0, -20.0), (-35.0, 20.0), (35.0, -20.0), (35.0, 20.0))
TOP_CHAMFER = 2.0
def gen_step():
"""Return the rectangular calibration block benchmark model in millimeters."""
with BuildPart() as block:
Box(LENGTH, WIDTH, HEIGHT, align=(Align.CENTER, Align.CENTER, Align.MIN))
for x_pos, y_pos in HOLE_LOCATIONS:
with Locations(Location((x_pos, y_pos, -1.0))):
Cylinder(
radius=HOLE_DIAMETER / 2.0,
height=HEIGHT + 2.0,
align=(Align.CENTER, Align.CENTER, Align.MIN),
mode=Mode.SUBTRACT,
)
part = block.part
part = safe_chamfer(part, line_edges_at_z(part, HEIGHT), length=TOP_CHAMFER)
part.label = "benchmark_01_rectangular_calibration_block"
return part