phase 0
This commit is contained in:
@@ -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')"
|
||||
```
|
||||
Reference in New Issue
Block a user