# Twin-rail bench vise — CAD demonstration

An original nine-part parametric concept created with CadQuery 2.8. All dimensions are millimeters.

The default model has a 160 × 80 mm base, 64 mm jaws, and a 30 mm opening. Jaw travel is modeled from 0–60 mm. The wide variant has 80 mm jaws and is saved at a 45 mm opening.

## Files

- bench-vise.step: nine-solid assembly for STEP-capable CAD software.
- bench_vise.py: editable parametric source.
- stl/: separate meshes, retaining assembly coordinates; not oriented for printing.
- wide-variant/: the wider model, with its own geometry checks.
- parts-list.csv: quantities, bounding dimensions, volumes and notes.
- validation.json: geometry checks and STEP round-trip results.
- isometric.svg: vector illustration.

## Regenerate

Install Python and CadQuery 2.8 in an environment compatible with your operating system, then run:

```text
python bench_vise.py --check-travel
python bench_vise.py --jaw-width 80 --opening 45 --output wide-variant --check-travel
```

The source accepts jaw widths of 60–80 mm and jaw openings of 0–60 mm. STEP carries the solid geometry; keep the Python source for parameter history. The web preview shows the 64 mm model and translates its moving components; it does not regenerate CAD in your browser.

## Validation and design maturity

For both included variants, all nine components are valid, positive-volume solids. All 36 component pairs were checked at jaw openings of 0, 15, 30, 45 and 60 mm. No intersections above 0.001 mm³ were found. STEP re-import preserved nine valid solids and total volume within 0.01 mm³.

These are sampled geometry checks, not continuous swept-volume, assembly-sequence or structural validation. Spindle threads are represented by smooth diameter envelopes. Fasteners, spindle retention, rod retention and handwheel fixing are not detailed. Loads, materials, wear, fit and printing tolerances remain unvalidated. Do not print the assembled model as a working vise.

The viewer's separated assembly is explanatory. Its half section clips surfaces without capping the cut. Three.js renders tessellations derived from the actual CAD solids.

Explore: https://ttl5.com/cad/

CadQuery documentation: https://cadquery.readthedocs.io/en/latest/intro.html
