Smith.Features.Hole (Smith v0.1.0)

Copy Markdown View Source

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

evaluate(body, kind, opts)

@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.