Skip to content

Repository files navigation

MacStep

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.

What it does

  • 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.

Install

macOS (Apple Silicon)

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.

Windows (x64)

Pre-built .zip archives are on the Releases page. Extract anywhere and run MacStep.exe. Required OCCT DLLs are bundled alongside the executable.

Linux (x64)

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-dev

Fedora: sudo dnf install opencascade-devel.

Build from source

Prerequisites:

  • Rust stable (install via rustup).
  • Open CASCADE Technology 7.9.3 + its headers available through one of the platform mechanisms below.

macOS

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

Windows

# 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

Linux

# Ubuntu/Debian — see package list above
cargo build -p macstep-viewer --release

Override OCCT location on any platform

OCCT_INCLUDE_DIR=/path/to/include/opencascade OCCT_LIB_DIR=/path/to/lib \
    cargo build -p macstep-viewer --release

Architecture

Rust 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.

Licensing

  • 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.

Contributing

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.

Repository layout

.
├── 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

About

Native macOS/Windows/Linux viewer for STEP, IGES, and STL files. Fast, offline, private. Commercial launch planned.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages