Native evaluation of Smith's hole recipes.
This module implements Smith.hole/2, Smith.counterbore/2, and
Smith.countersink/2. Use those functions to build deferred recipes.
The evaluator works on an already constructed OCEx shape and returns
another shape; it does not create a Smith.Model or assign a recipe
step number. It is an implementation module rather than a separate
modeling interface.
Placement is resolved against the incoming body. A pilot cut and its
recess share that entry location, so cutting the pilot cannot move the
recess when on: :top uses a face centroid. Every cut must remove
material. OCEx operations preserve the incoming body's geometry.
Summary
Functions
Evaluates one hole feature on an OCEx body.
Functions
@spec evaluate(OCEx.Shape.t(), :hole | :counterbore | :countersink, keyword()) :: {:ok, OCEx.Shape.t()} | {:error, atom()}
Evaluates one hole feature on an OCEx body.
kind is :hole, :counterbore, or :countersink; opts uses
the corresponding public Smith function's documented options. Returns
{:ok, shape} or {:error, reason}. Option and geometry failures are
returned without a Smith.Error wrapper; the recipe evaluator adds
its operation and step context.
Through-all cutters span the projected body bounds with a 1 mm margin
at each end. Finite cutters start at the entry plane and extend into its
negative normal. Material removal must exceed 1.0e-9 mm³ for each cut;
otherwise the reason is :hole_misses_body or :recess_misses_body.