STLZ is a high-performance, locally-hosted Digital Asset Manager (DAM) designed specifically for 3D printing enthusiasts. Built with Modern WPF (.NET 8), it organizes STL, 3MF, and G-CODE files, provides automatic thumbnail generation, and performs advanced G-code analysis to calculate printing costs and time.
This project demonstrates the integration of modern desktop application patterns with system-level file operations and cross-language interoperability (C# + Python).
Organize thousands of STL/3MF files with ease.
- Framework: .NET 8 (C# 12)
- UI Framework: WPF (Windows Presentation Foundation)
- Architecture: MVVM (Model-View-ViewModel)
- Database: SQLite with Entity Framework Core 8
- Scripting: Python 3.10+ for 3D rendering and thumbnail generation
-
Architecture:
- MVVM (Model-View-ViewModel): Clean separation of concerns using
CommunityToolkit.Mvvm. - Repository Pattern: Abstracted data access layer for SQLite operations, ensuring testability and decoupling.
- Service-Oriented: Business logic encapsulated in dedicated services (e.g.,
FileWatcherService,PythonBridgeService). - Dependency Injection (DI): Fully managed via
Microsoft.Extensions.DependencyInjection.
- MVVM (Model-View-ViewModel): Clean separation of concerns using
-
Performance & Concurrency:
- Asynchronous I/O: Extensive use of
async/awaitpatterns to maintain a responsive UI during heavy file operations. - Parallel Processing: Multi-threaded thumbnail generation using
SemaphoreSlimfor resource throttling. - UI Virtualization: Optimized
ItemsControlandVirtualizingPanelfor rendering lists with thousands of items.
- Asynchronous I/O: Extensive use of
-
UI & Experience:
- Advanced Data Binding: Complex XAML bindings with custom Converters (
IValueConverter). - Custom Window Chrome: Fully custom window styling with minimize-to-tray functionality.
- HelixToolkit.Wpf: Integrated 3D viewport for real-time model interaction.
- Advanced Data Binding: Complex XAML bindings with custom Converters (
-
System Integration:
- FileSystemWatcher: Event-driven architecture for real-time library synchronization.
- Process Interop: Robust
Processmanagement for communicating with the embedded Python environment via stdin/stdout.
- Real-time Sync: Utilizes
FileSystemWatcherto verify library integrity and detect new files instantly. - Archive Support: Reads and previews models directly inside
.ziparchives without extraction. - Auto-Tagging: Intelligent categorization engine that tags models based on filename heuristics (e.g., "Benchy" -> "Calibration").
- Duplicate Detection: SHA-256 based file hashing to prevent duplicate imports.
- Cost & Time Calculation: Estimates print time and filament usage (grams/meters) by parsing G-code metadata.
- Slicer Detection: Automatically detects PrusaSlicer, Cura, OrcaSlicer, and more.
- Print Tracking: Track print status, actual print times, and rate your prints.
- Custom Styling: Fully custom
ControlTemplatesfor a cohesive Neon/Dark aesthetic. - Drag & Drop: Drop files or ZIP archives directly into the app.
- Collections: Organize models into custom collections.
- System Tray: Minimize to system tray for background file watching.
- Hybrid Architecture: Leverages Python scripts for robust 3D rendering (using
numpy-stlandmatplotlib). - Batch Processing: Efficient multi-threaded thumbnail generation for large libraries.
- Windows 10 or 11 (64-bit)
- .NET 8 Runtime (Included in release)
- Python 3.10+ (Required for thumbnail generation & G-code analysis)
- Option 1 (Recommended): Use the Portable version, which includes its own Python environment. No setup needed!
- Option 2: Install Python 3.10+ manually and run
pip install numpy-stl matplotlib.
- Download the latest release from the Releases section.
- Choose STLZ_v1.0.0_Portable.zip for the all-in-one experience.
- Extract the ZIP file.
- Run
STLZ.exe.
pip install numpy-stl matplotlibTo build this project from source:
-
Clone the repository
git clone https://github.com/buraksamisirin/STLZ.git cd STLZ -
Restore Dependencies
dotnet restore
-
Build & Run
dotnet build dotnet run
Or open
STLΔ°E.slnin Visual Studio 2022.
STLZ/
βββ Assets/ # Application icons and images
βββ Converters/ # WPF value converters
βββ Data/ # Database context and keywords.json
βββ Helpers/ # Helper classes (DragDrop, etc.)
βββ Migrations/ # EF Core database migrations
βββ Models/ # Data models (Model3D, Gcode, etc.)
βββ PythonScripts/ # Python scripts for thumbnail generation
βββ Repositories/ # Repository pattern implementation
βββ Services/ # Business logic services
βββ Themes/ # WPF styles and resources
βββ ViewModels/ # MVVM ViewModels
βββ Views/ # WPF Views (XAML)
- File Validation: Comprehensive path traversal and file type validation
- Input Sanitization: All file paths and names are sanitized
- No External Data: All data stored locally in SQLite database
- Log Sanitization: Error messages are sanitized to prevent path disclosure
Contributions are welcome!
- Fork the project.
- Create your Feature Branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the Branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
Distributed under the MIT License. See LICENSE for more information.
Burak Sami Sirin
- GitHub: @buraksamisirin
Developed with β€οΈ for the 3D printing community - 2025