A native macOS and iOS application for viewing and editing EULUMDAT (LDT) and IES photometric files.
- Multiple Diagram Types: Polar, Cartesian, Butterfly, 3D, Heatmap, BUG Rating, LCS
- File Import/Export: LDT, IES, and SVG formats
- Batch Conversion: Convert multiple files at once
- Validation: Built-in validation with warnings and errors
- Templates: Pre-configured luminaire templates
- Interactive 3D: SceneKit-based 3D photometric solid visualization
- Xcode 15+ (for macOS/iOS development)
- Rust (for building the core library)
- Swift Package Manager (included with Xcode)
-
Build the XCFramework (required before first build):
cd /path/to/eulumdat-rs ./scripts/build-xcframework.shThis script:
- Installs required Rust targets (iOS, macOS simulator, macOS)
- Generates UniFFI Swift bindings
- Builds the Rust library for all platforms
- Creates the
swift/eulumdat_ffiFFI.xcframework
-
Build the Swift App:
cd EulumdatApp swift buildOr open
EulumdatApp.xcodeprojin Xcode and press ⌘R to build and run.
- The
swift/eulumdat_ffiFFI.xcframework/directory is gitignored - It must be generated locally by running
./scripts/build-xcframework.sh - CI/CD pipelines should run this script as part of the build process
xcuserdata/and*.xcuserstate(Xcode user settings).build/directories (build artifacts)- See
.gitignorefor complete list
EulumdatApp/
├── EulumdatApp/
│ ├── ContentView.swift # Main app UI
│ ├── Butterfly3DView.swift # 3D SceneKit visualization
│ ├── BatchConvertView.swift # Batch conversion UI
│ ├── ValidationView.swift # Validation results
│ ├── Templates.swift # Luminaire templates
│ └── Resources/
│ └── Templates/ # LDT template files
├── Package.swift # Swift package manifest
└── README.md # This file
- Cmd+Scroll: Zoom in/out
- Cmd+Drag: Pan when zoomed
- Double-click: Open in fullscreen window
- Cmd+/-/0: Zoom controls
- Drag: Rotate camera
- Cmd+Scroll: Zoom in/out
- Cmd+Drag: Rotate camera
- Double-click: Open in fullscreen window
- ⌘N: New window
- ⌘O: Open file
- ⌘⇧B: Batch convert
- ⌘⇧E: Export SVG
- ⌘⇧I: Export IES
- ⌘⇧L: Export LDT
- ⌘1-7: Switch diagram types
- ⌘⇧D: Toggle dark theme
This means the XCFramework hasn't been built. Run:
./scripts/build-xcframework.shThe Swift bindings may be out of date. Rebuild the XCFramework:
./scripts/build-xcframework.shClean and rebuild:
cd EulumdatApp
rm -rf .build
swift buildSee the main repository README for license information.