Native macOS / Windows / Linux viewer for STEP, IGES, STL, and 3MF files. Fast to launch, private, offline.
Status: early days. Free and open source under GPL-3.0. Bugs are expected — please report them on the issue tracker.
- Opens STEP / STP, IGES / IGS, STL, and 3MF files with assembly trees, part names, and colours.
- Built-in 3D viewport with orbit / pan / zoom, standard views (⌘1–7), and a view cube.
- Assembly tree with search, visibility toggles, and isolate / hide-show-subtree / fit-to-part actions.
- Point-to-point measurement with stable IDs and an editable list.
- Per-part opacity slider so you can see through parts without hiding them.
- Focus mode (⌘I) that dims non-selected parts — makes big assemblies scannable.
- Section planes with absolute millimetre readout.
- STL export of visible parts (binary STL).
- Screenshot export (⌘⇧S).
- Cursor-anchored scroll/pinch zoom, pan-mode toggle, Shift-invert.
- Drag-and-drop file loading, recent-files list.
- Right-click context menu on parts (tree or 3D view): Isolate / Show Only Subtree / Hide / Fit to Part / Measure from here.
- Undo (⌘Z) for visibility changes, 20-step history.
- "Modified" panel listing every hidden or transparent part, one-click restore per row or for the whole model.
Open a STEP or STL file. Click a part, press F to fit to it, press M to measure. That's most of what you need.
Pre-built bundles for macOS, Windows and Linux are attached to every tagged
version — see the Releases page. Open the DMG, drag MacStep
into /Applications, launch it. No installer, no kernel extensions.
OCCT and its dependencies (TBB, FreeType, libpng) are bundled inside the .app, so no Homebrew install is required on end-user machines.
Pre-built .zip archives are on the Releases page. Extract anywhere and run MacStep.exe. Required OCCT DLLs are bundled alongside the executable.
Pre-built .tar.gz archives on Releases. Requires libocct-* system packages:
sudo apt-get install libocct-data-exchange-dev libocct-modeling-algorithms-dev \
libocct-modeling-data-dev libocct-visualization-dev libocct-foundation-dev \
libocct-ocaf-dev libfontconfig1-devFedora: sudo dnf install opencascade-devel.
Prerequisites:
- Rust stable (install via rustup).
- Open CASCADE Technology 7.9.3 + its headers available through one of the platform mechanisms below.
brew install opencascade
cargo build -p macstep-viewer --release
./scripts/create-app-bundle.sh --release # produces target/release/bundle/MacStep.app
./scripts/build-dmg.sh # produces MacStep-0.1.0.dmg# Install OCCT via vcpkg
vcpkg install opencascade:x64-windows
$env:VCPKG_ROOT = "C:\vcpkg"
cargo build -p macstep-viewer --release
.\scripts\bundle-dlls-windows.ps1# Ubuntu/Debian — see package list above
cargo build -p macstep-viewer --releaseOCCT_INCLUDE_DIR=/path/to/include/opencascade OCCT_LIB_DIR=/path/to/lib \
cargo build -p macstep-viewer --releaseRust workspace:
crates/occt-bridge/— thin cxx.rs FFI wrapper over OCCT for STEP/IGES loading + tessellation.crates/viewer/—eframe(egui + wgpu) application: 3D viewport, assembly tree, UI, camera, measurement, section planes, STL loader/exporter.crates/cli-test/— CLI test harness for the OCCT bridge.
Rendering uses wgpu, so the same code runs on Metal, Vulkan, and DirectX 12 without branching.
- MacStep itself: GPL-3.0. Use it, study it, change it, share it. If you distribute it — modified or not, on its own or inside something else — the source goes with it under the same licence. See CONTRIBUTING.md for what that means for patches.
- Open CASCADE Technology 7.9.3: LGPL-2.1 with linking exception. OCCT is dynamically linked, and users may substitute their own OCCT libraries without rebuilding MacStep. A copy of the LGPL-2.1 text is in
LICENSES/OCCT-LGPL-2.1.txt. - Everything else (egui, wgpu, glam, cxx, rfd, image, bytemuck, stl_io, pollster, dirs, env_logger, log): MIT and/or Apache-2.0. Full list and credits in
LICENSES/THIRD-PARTY.txt.
See CONTRIBUTING.md. Short version: open an issue first for
anything substantial, cargo test and cargo build must be clean, and
contributions are accepted on terms that keep the project able to change its
own licence later.
.
├── Cargo.toml — workspace manifest
├── crates/
│ ├── occt-bridge/ — C++ ↔ Rust FFI for OCCT
│ ├── viewer/ — eframe app (main binary)
│ └── cli-test/ — CLI harness
├── scripts/
│ ├── create-app-bundle.sh — macOS .app bundling
│ ├── bundle-dylibs.sh — OCCT dylib copying & signing for macOS
│ ├── bundle-dlls-windows.ps1 — Windows DLL gathering
│ ├── build-dmg.sh — DMG creation with unique volume name
│ └── build-quicklook.sh — macOS Quick Look thumbnail extension
├── LICENSES/ — OCCT LGPL + third-party notices
├── resources/ — icons, sample files, docs
└── .github/workflows/ — multi-platform release CI