A professional, high-performance Revit add-in written in C++ and C# (.NET 10) designed to reconstruct complex, non-manifold, or faulty BIM geometries into smooth, hollowed, and guaranteed watertight STL meshes optimized for additive manufacturing (3D printing).
Revit models are designed for construction, not 3D printing. They often contain overlapping geometries, hollow walls, open junctions, nested families, and non-manifold edges. Sending these raw geometries directly to slicers such as Cura, OrcaSlicer, Bambu Studio, or PrusaSlicer frequently results in mesh errors, rendering artifacts, failed slicing operations, and unsuccessful prints.
BIM-to-Print solves this problem by providing a high-speed bridge between Revit's geometry database and a custom C++ voxelization and mesh reconstruction engine, producing clean, manufacturable STL files.
- Dynamically calculates triangle edge lengths.
- Adapts barycentric sampling density in real time.
- Prevents voxel leakage even on extremely thin walls and large planar surfaces.
- Produces fully closed volumetric boundaries.
- High-performance Breadth-First Search (BFS) implementation.
- Starts from padded external bounds.
- Automatically identifies exterior air volumes.
- Seals internal voids and faulty BIM junctions.
- Iterative Laplacian smoothing on a shared-vertex mesh structure.
- Eliminates voxel stair-stepping artifacts.
- Produces cleaner and more organic printable surfaces.
- Distance-transform-based shelling algorithm.
- Automatically removes unnecessary internal volume.
- Allows precise wall-thickness control in millimeters.
- Reduces material consumption by up to 80%.
- Moves model coordinates to a normalized origin.
- Prevents geometry placement far from slicer coordinates.
- Automatically scales models to fit target printer build volumes.
- Compatible with Bambu Lab, Prusa, Creality, and other FDM printers.
- Thread-safe unmanaged callback architecture.
- Streams computation progress directly from the native C++ core to the WPF UI.
- Provides responsive feedback during heavy processing.
- Dark-themed WPF interface.
- Dedicated Revit 2027 Ribbon tab.
- Custom commands and icons.
- Integrated workflow inside Revit.
┌─────────────────────────┐
│ Revit 2027 Model │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Geometry Extraction & │
│ Auto-Scaling Layer │
│ (C# / Revit API) │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ P/Invoke Interop Layer │
│ Memory Marshalling │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Native C++ Core Engine │
└──────┬──────────┬───────┘
│ │
▼ ▼
┌────────────┐ ┌────────────────┐
│ Voxelizer │ │ Flood-Fill BFS │
└──────┬─────┘ └───────┬────────┘
│ │
└───────┬───────┘
▼
┌─────────────────────────┐
│ Mesh Reconstruction │
│ & Laplacian Smoothing │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Binary STL Exporter │
└─────────────────────────┘
| Layer | Technology |
|---|---|
| BIM Integration | Revit 2027 API |
| User Interface | WPF (XAML) |
| Managed Layer | C# .NET 10 |
| Native Engine | C++ (MSVC x64) |
| Interoperability | P/Invoke |
| Output Format | Binary STL |
-
Download the latest release from the repository's Releases section.
-
Extract the ZIP archive.
-
Copy both:
BimToPrint.addinBimToPrint/
into:
%APPDATA%\Autodesk\Revit\Addins\2027
- Launch Revit 2027.
- Approve the security prompt by selecting Always Load.
- Open the BIMtoPrint tab from the Revit ribbon.
- Visual Studio 2022 (MSVC x64)
- .NET 10 SDK
- Revit 2027 SDK
Open:
x64 Native Tools Command Prompt for VS
Run:
cl /LD core.cpp /Fe:core.dllNavigate to the plugin directory:
cd RevitPlugin
dotnet build -c Release- GPU-accelerated voxelization
- Adaptive octree resolution
- Direct 3MF export
- Mesh repair diagnostics
- Multi-material support
- Printability analysis
- Automatic support generation
Licensed under the MIT License.
See the LICENSE file for details.
Mohammad Amin Moradi
- GitHub: https://github.com/moaminmo90
- LinkedIn: https://www.linkedin.com/in/moaminmo90