This commit is contained in:
Jason Stedwell
2026-06-17 16:03:26 -05:00
parent fa1e9b68c7
commit c1abe36822
99 changed files with 1562887 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
# INSTALL.md — STEP Processor Setup (Apple Silicon / macOS arm64)
No Rosetta. No x64 sub-environments. Both libraries run natively.
---
## 1. build123d (Primary — native arm64, pip-based)
build123d depends on `cadquery-ocp`, which ships native arm64 wheels
via GitHub Releases (not yet on PyPI, but stable).
### Step 1 — Install the arm64 OCP wheel
Go to: https://github.com/CadQuery/OCP/releases
Download the wheel matching your Python version, e.g.:
`cadquery_ocp-7.x.x-cp311-cp311-macosx_12_0_arm64.whl`
Install it:
```bash
pip install /path/to/cadquery_ocp-*.whl
```
### Step 2 — Install build123d and rendering stack
```bash
pip install build123d
pip install trimesh pyrender Pillow numpy pandas anthropic
```
### Step 3 — Set API key
```bash
export ANTHROPIC_API_KEY=sk-ant-...
# Add to ~/.zshrc to persist
```
### Step 4 — Verify
```bash
python -c "import build123d; print('build123d OK')"
python -c "import trimesh; print('trimesh OK')"
python -c "import pyrender; print('pyrender OK')"
```
---
## 2. FreeCAD Headless (Fallback — native arm64 via conda-forge)
FreeCAD has been available as a native macOS-arm64 conda-forge package
since late 2024. Install it in its own conda environment to avoid
dependency conflicts with build123d.
### Step 1 — Install Miniforge (arm64) if not already present
Download from: https://github.com/conda-forge/miniforge/releases
Select: `Miniforge3-MacOSX-arm64.sh`
```bash
bash Miniforge3-MacOSX-arm64.sh
```
### Step 2 — Create FreeCAD environment
```bash
conda create -n freecad_env python=3.11
conda activate freecad_env
conda install -c conda-forge freecad
```
### Step 3 — Verify headless operation
```bash
FreeCADCmd --version
# or
python -c "import FreeCAD; import Part; print('FreeCAD headless OK')"
```
**Important:** Never import `FreeCADGui` in headless scripts — it will crash.
### Step 4 — Make FreeCAD importable from your build123d environment
Add the FreeCAD conda env's site-packages to your PATH, or run scripts
via the conda freecad_env directly:
```bash
conda run -n freecad_env python step_processor.py myfile.step
```
---
## Quick Test
Once either library is installed:
```bash
# Test with a sample STEP file
python step_processor.py sample.step --verbose
# Test query REPL
python step_processor.py sample.step --repl
```
---
## Dependency Summary
| Package | Purpose | Required for |
|---------------|--------------------------------|---------------------|
| build123d | STEP loading + geometry | Primary path |
| cadquery-ocp | OCC kernel (arm64 wheel) | build123d |
| trimesh | Mesh handling for rendering | PNG thumbnails |
| pyrender | Offscreen rendering | PNG thumbnails |
| Pillow | PNG file writing | PNG thumbnails |
| numpy | Geometry math | Both paths |
| pandas | BOM CSV output | BOM export |
| anthropic | Claude API translation | Translation |
| FreeCAD | Fallback STEP loading | Fallback path only |
---
## 3. cairosvg (required for PNG and PDF export from diagrams)
```bash
pip install cairosvg
# On macOS, may also need:
brew install cairo pango gdk-pixbuf libffi
```
Verify:
```bash
python -c "import cairosvg; print('cairosvg OK')"
```