Skip to content

buraksamisirin/PrintVault3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

STLZ - 3D Printing Digital Asset Manager πŸš€

C# .NET WPF SQLite Python GitHub Release

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


Watch the Demo
▢️ Click above or visit: https://www.youtube.com/watch?v=yccCG2yYNDM

πŸ“Έ Gallery

Main Dashboard
Organize thousands of STL/3MF files with ease.


πŸ› οΈ Tech Stack & Architecture

Core Technologies

  • 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

Key Libraries & Patterns

  • 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.
  • Performance & Concurrency:

    • Asynchronous I/O: Extensive use of async/await patterns to maintain a responsive UI during heavy file operations.
    • Parallel Processing: Multi-threaded thumbnail generation using SemaphoreSlim for resource throttling.
    • UI Virtualization: Optimized ItemsControl and VirtualizingPanel for rendering lists with thousands of items.
  • 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.
  • System Integration:

    • FileSystemWatcher: Event-driven architecture for real-time library synchronization.
    • Process Interop: Robust Process management for communicating with the embedded Python environment via stdin/stdout.

🌟 Key Features

πŸ“‚ Smart Library Management

  • Real-time Sync: Utilizes FileSystemWatcher to verify library integrity and detect new files instantly.
  • Archive Support: Reads and previews models directly inside .zip archives 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.

πŸ” Advanced G-CODE Analysis

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

🎨 Modern UI/UX

  • Custom Styling: Fully custom ControlTemplates for 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.

🐍 Python Interop

  • Hybrid Architecture: Leverages Python scripts for robust 3D rendering (using numpy-stl and matplotlib).
  • Batch Processing: Efficient multi-threaded thumbnail generation for large libraries.

πŸš€ Installation

Requirements

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

Running the App

  1. Download the latest release from the Releases section.
    • Choose STLZ_v1.0.0_Portable.zip for the all-in-one experience.
  2. Extract the ZIP file.
  3. Run STLZ.exe.

Python Dependencies (for thumbnail generation)

pip install numpy-stl matplotlib

πŸ‘¨β€πŸ’» Build Instructions

To build this project from source:

  1. Clone the repository

    git clone https://github.com/buraksamisirin/STLZ.git
    cd STLZ
  2. Restore Dependencies

    dotnet restore
  3. Build & Run

    dotnet build
    dotnet run

    Or open STLΔ°E.sln in Visual Studio 2022.


πŸ“ Project Structure

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)

πŸ”’ Security Features

  • 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

🀝 Contributing

Contributions are welcome!

  1. Fork the project.
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the Branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

πŸ“ License

Distributed under the MIT License. See LICENSE for more information.


πŸ‘€ Author

Burak Sami Sirin


Developed with ❀️ for the 3D printing community - 2025

About

Local 3D model library manager featuring real-time G-code analysis, automatic thumbnail generation, and file synchronization. Developed using C# (WPF/MVVM) and Python.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors