# 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')" ```