Manufacturing | Suspended Ceilings - Automating Suspended Ceiling Systems using Rhino.Inside
We engineered the industry's first enterprise implementation of Rhino.Inside.AutoCAD to automate complex ceiling system design for a global manufacturer. By embedding Rhino's geometry kernel in-process and codifying the client's system design rules, we transformed a manual 2D drafting workflow into an interactive 3D ceiling configurator that outputs production-ready AutoCAD drawings.
- Client
- Private Client
- Timeline
- 2023 - 2025
- Service
- Systems Integration→
The Engineering Challenge
The client, a global leader in suspended ceilings, relied on a manual 2D AutoCAD workflow that was struggling to keep pace with demand. Technicians had to manually interpret architectural plans, align grids with panel sizes and springs, manage openings, and coordinate perimeter trims - often rebuilding drawings from scratch when requirements changed. A single reflected ceiling plan could take hours — or days for geometrically complex spaces — to draft, coordinate, and revise by hand.
The goal was to automate this process. However, standard AutoCAD APIs lacked the geometric computational power to handle complex surface intersections and real-time 3D visualization. The solution had to think in 3D but deliver standard 2D AutoCAD drawings.
The Solution Architecture
We engineered a ceiling design configurator tool: an enterprise-grade WPF application that pioneers the use of Rhino.Inside.AutoCAD. By embedding a headless Rhino 7 instance directly into the AutoCAD process, we combined the documentation standard of AutoCAD with the advanced geometry engine of Rhino.
Running Rhino in-process eliminates subprocess marshalling — critical for the high-frequency geometric queries the solver issues during Boolean, intersection, and projection operations. A three-layer geometry abstraction (internal domain types → Rhino → AutoCAD) keeps solver logic independent of either CAD API, while a custom assembly-resolution layer reconciles version conflicts between AutoCAD's bundled libraries and modern .NET dependencies — one of the hard-won details of shipping Rhino.Inside in a production AutoCAD environment.
From 2D Blocks to Domain Objects
The tool elevates raw AutoCAD geometry into intelligent domain objects. Users define ceiling extents via standard 2D blocks, which the system automatically converts into its own ceiling instances.
- Smart Configuration: Users assign specifications — material, perforation, finish, acoustic fleece — select panel shapes (rectangular, triangular, plank), and define grid layouts as standard modules or fully custom grids sketched as lines directly in AutoCAD, which the solver validates against system design rules before generating the panel and suspension layout.
- Interactive Design: We implemented a 'minimize-to-capture' UX pattern. Users can click a button to minimize the UI, snap to a grid origin point in AutoCAD, and watch the app instantly regenerate the ceiling grid to that intersection.
Live 3D Visualization
The tool features a Material Design WPF interface with an embedded Rhino viewport that updates in real time.
- Event-Driven Feedback: Every user action - changing the pitch, rotating the grid, or swapping a trim profile - triggers an immediate regeneration of the 3D ceiling schematic in the viewport.
- Visual Correlation: Break points added by mouse-click in AutoCAD partition each perimeter or opening into discrete segments. Each segment receives an indexed ID rendered in the 3D viewport that maps to its corresponding row in the UI, so users always know exactly which edge they are assigning a trim to.
Algorithmic Solver Pipeline
The core engine uses a Strategy Pattern to dynamically select the correct generation logic based on the client's product system.
- Design Rule Enforcement: The solver automatically validates inputs against manufacturing constraints - preventing invalid trim assignments on curved edges or enforcing mandatory tee offsets around diffusers.
- State Persistence: We utilized the Memento Pattern to capture the entire configuration state into JSON. This allows users to close the tool and resume their session exactly where they left off, without data loss.
The solve itself runs as a multi-phase pipeline: edge-loop resolution (perimeter, voids, openings), datum grid generation, panel grid construction, suspension grid assembly — with main tees positioned by linear packing and cross and slotted tees sequenced to the grid — and finally trim, clip, and accessory placement. Each phase feeds a layered cache architecture, so a single input change invalidates and recomputes only what it affects.
Selective Regeneration
To prevent drawing corruption, we engineered an object-tagging system. Every entity created by the solver is tagged with a persistent ID. When a user regenerates a ceiling, the solver queries these tags to erase only its own entities before writing the replacement geometry, leaving user-created entities untouched.
The codebase follows Clean Architecture with strictly unidirectional dependencies: 1,100+ interface contracts isolate every implementation layer, dependency injection via Autofac wires the system explicitly, and a dedicated compatibility layer absorbs AutoCAD's year-on-year API changes — keeping a 37,500-line system maintainable, testable, and extensible against the inherent volatility of CAD platform APIs.
The Result
The tool transformed a laborious, complex design and drafting task into a rapid configuration workflow, outputting fully designed and detailed suspended ceiling drawings via an intuitive Graphical User Interface (GUI).
- Instant 3D: Users can visualize the ceiling grid, pitch, rotation, and trim assignments in real-time via the integrated Rhino viewport.
- Automated Accuracy: The solver enforces design rules for panel sizing, tee arrangement, and spring alignment automatically.
- Inventory Control: The system sequentially numbers panels and tees and generates a precise Bill of Materials (BoM), synchronized with the client's internal inventory codes.
- Team-Wide Continuity: Design state persists at project level via JSON snapshot capture, so any team member opening the DWG resumes with the same inputs, trims, and templates as the last designer — a single source of truth for ceiling design decisions.
- Crash Resilience: Automatic state backups minimize data loss if AutoCAD crashes, and users can save and reload complete tool configurations on demand.
This solver anchored a broader production-automation suite we delivered across the client's AutoCAD environment — including automated section detailing, panel manufacturing drawings, and sheet-metal folding — built on the same domain model, caches, and Rhino.Inside foundation.
- 37,500+
- Source Lines of Code (Enterprise-Grade)
- <3.6%
- Technical Debt Ratio (SQALE)
- <60s
- Solver Runtime (vs. Hours Manually)
- 1,100+
- Interface Definitions