A native macOS viewer for STEP, IGES, BREP, STL, and DXF files, with Finder thumbnails and interactive Quick Look previews.
- Perspective and orthographic views
- Onshape-style navigation and standard view snaps
- Hover for a measurement: edge length, circle or cylinder diameter, face area, vertex position; click two entities for the distance or angle between them; ⌘C copies the value with its unit
- Display options: shaded with or without edges, unshaded, translucent, wireframe; hidden edges visible or removed; tangent edges visible, phantom, or removed
- STEP assembly placement and part colours through Open CASCADE
- DXF drawings with layer colours, text, dimensions, and hatch boundaries
- View menu shortcuts (⌘1–⌘7 standard views, ⌘0 fit, P projection, E edges), Open Recent, drag and drop, one window per file
- STL files are viewed as meshes: no edges or measurements, but multi-million-triangle scans open in seconds
- The same viewer and controls in the app and Quick Look
Download the latest build from GitHub Releases, unzip it, and move CADQuickLook.app to Applications.
The app checks for updates once a day via Sparkle and can install them in place. Use CADQuickLook › Check for Updates… to check manually, or turn automatic checks off in Settings.
Requires an Apple silicon Mac, macOS 26, Xcode 26, Homebrew, and XcodeGen.
brew bundle
xcodegen generate
DEVELOPMENT_TEAM=YOUR_TEAM_ID ./script/build_and_run.sh --verify
./script/install.shDevelopment builds link against Homebrew's Open CASCADE libraries. Release archives bundle them.
Set DEVELOPMENT_TEAM to sign development builds with your Apple Development certificate; it also prefixes the App Group that the app and Quick Look extensions use for shared preferences. Without it, builds are ad-hoc signed, preferences are not shared with the extensions, and macOS asks for privacy consent on every launch.
Maintainers can create a signed archive with:
SIGNING_IDENTITY="Developer ID Application: …" ./script/package_release.sh./script/bump_version.sh X.Y.ZsetsCFBundleShortVersionStringandCFBundleVersion(kept equal) in the app and both extensionInfo.plists. Without an argument it bumps the patch component, which is what dev builds do.SIGNING_IDENTITY="Developer ID Application: …" NOTARY_PROFILE=… ./script/package_release.shgh release create vX.Y.Z dist/CADQuickLook-X.Y.Z-arm64.zip --title "CADQuickLook X.Y.Z" --notes-file notes.md- The
Publish Sparkle appcastworkflow signs the archive with the Ed25519 key in theSPARKLE_PRIVATE_KEYrepository secret and uploadsappcast.xmlto the release, which the app reads fromreleases/latest/download/appcast.xml. To do the same locally with the key in your Keychain, run./script/publish_appcast.sh vX.Y.Z.
The Ed25519 key pair is created once with Sparkle's generate_keys (found under .build/*/SourcePackages/artifacts/sparkle/Sparkle/bin/ after a build); the public half lives in SUPublicEDKey in Info.plist. Back up the private key: without it, existing installs can no longer verify updates.
Parasolid and other proprietary CAD formats require a licensed translator.
MIT. Open CASCADE and bundled libraries retain their respective licenses; see third-party notices.