← Về thư mục
📄 / / profiles / r-and-d / raw_evidence / scientific-agent-skills / skills / lab-hardware-cad / references / optomechanics.md

Optomechanical mounts and breadboard hardware

Parts that bolt to an optical table, join a cage system, hold an optic or a sample in a beam path, or carry a camera or objective.

Verified dimensions are in assets/standards.json:

python scripts/check.py standards --show optical-breadboard-metric
python scripts/check.py standards --show cage-system-30mm
python scripts/check.py standards --show sm1-lens-tube-thread

Ask which system before you model anything

Metric and imperial optical hardware are not interchangeable, and the difference is small enough to look like a rounding error and large enough to prevent assembly.

Metric Imperial
Grid pitch 25.0 mm 25.4 mm (1 inch)
Tapped hole M6 x 1.0 1/4-20 UNC
Typical border 12.5 mm 12.7 mm

Over a four-hole span the grids differ by 1.6 mm — far more than any clearance hole absorbs. There is no way to infer which the user has from the request. Ask. If the answer is unavailable, model the mounting features as slots along the bolt line rather than round holes, which tolerates both, and say that is what you did and why.

Mounting to the table

Posts and pedestals

Common conventions, which vary by vendor — confirm against the catalogue before use:

Beam height is a project-wide constant, not a per-part choice. Every mount on the table must put its optic at the same height. Common conventions are 3 inches (76.2 mm) or 100 mm, but this is a lab-by-lab choice. Ask for the number, define it once as beam_height_mm, and derive every mount's optic centre from it.

30 mm cage system

The dominant convention for small free-space assemblies:

For a custom cage plate: place four bores on a 30 mm square, put the aperture at the centroid of those four bores, and bore them for a free-sliding fit at your process's clearance (fabrication-limits.md): about 6.2 mm CNC, 6.4 mm SLA, 6.8 mm FDM. 6.1 mm is a reamed-metal number — printed bores come out undersize, and four bores on a common square over-constrain each other, so tighter is not better here. A cage plate that binds on the rods is worse than useless because it transmits stress into the whole assembly.

Cage plates stack along the rods, so a custom plate's thickness directly consumes optical path length. Budget it.

Lens tube threads (SM series)

SM1 is a 1.035 inch-40 thread, which holds Ø1 inch (25.4 mm) optics. That is a 0.635 mm pitch.

Do not print SM threads. A 0.635 mm pitch is at or below the practical resolution of FDM and marginal on desktop SLA; a printed SM1 thread will either not engage or will gall and shed particles into the beam path. Instead:

If the design truly requires a printed thread, say explicitly that it needs test printing and is likely to fail.

Holding an optic

Stray light and scatter

Geometry is not the whole design here, and a STEP file cannot show any of this:

Flag these to the user; do not silently assume a printed enclosure is light-tight.

Checks to run

python scripts/gen.py mount_model.py --outdir out/
python scripts/check.py facts out/mount.step
python scripts/check.py interfaces out/mount.manifest.json
python scripts/snapshot.py out/mount.step --out out/mount.png

Declare the grid pitch, rod spacing, and bore diameters in the model's interfaces() against optical-breadboard-metric, optical-breadboard-imperial, or cage-system-30mm, so the check catches a 25.0-for-25.4 substitution rather than leaving it to a reader.

There is still no automatic bolt-pattern check — the interface check compares dimensions, not hole positions. Compute the pattern in the model from a named grid_pitch_mm constant, and confirm in the snapshot that:

  1. All mounting holes are present and pass fully through.
  2. The optic aperture is centred where you intended, and unobstructed.
  3. Counterbores are on the accessible face.
  4. Nothing intrudes into the clear aperture or the beam path.

Sources