Manufacturing | Suspended Ceilings - Automating Manufacturing-Ready Panel Drawings
We engineered a sophisticated document-generation engine that combines algorithmic 2D bin-packing with persistent entity tracking. This solution automates the layout management, dimensioning, and annotation of panel detail drawings for every unique panel type, auto-generating new layouts as capacity is exhausted. A full drawing set generates in seconds and can be regenerated in place as the design evolves.
- Client
- Private Client
- Timeline
- 2024
- Service
- Production Automation→
The Engineering Challenge
The Ceiling Design Automation tool allowed the Client — a global leader in suspended ceilings — to configure complex, bespoke ceilings with dozens of unique panel types per project. However, manufacturing these panels required individual fabrication drawings for every unique type — each needing specific plan views, side elevations, edge codes, and dimensions.
Depending on project size and complexity, manually drafting and laying out these drawings could take days — sometimes weeks — and with no central database of panel types, the risk of duplicates meant still more manual checking. Furthermore, managing updates created a logistical bottleneck: if a ceiling design changed, locating and updating the corresponding panel drawings on the layouts was a manual, error-prone process. The Client required a system that could not only generate the drawings but manage the sheets they live on, keeping the drawing set synchronized with the 3D model.
The Solution Architecture
We engineered the Panel Drawings Tool: the document-generation engine that produces the panel drawings the Client's manufacturing team converts into shop drawings for their machines. By consuming the Panel Inventory Service from the design solver, the tool accesses all panel variants, ensuring every unique panel type in the resolved model is documented — complete coverage with no redundant drawings. The inventory itself is a JSON-backed database the ceiling solver writes as it resolves each ceiling: when a design change adds or removes panel types, this tool reads the same database and presents the updated inventory for sheet selection, keeping the entire documentation process synchronized with the design. Like the rest of the suite, it shares one codebase and the custom Rhino.Inside foundation we engineered for the ceiling configurator.
Intelligent Layout Management (Bin-Packing)
Rather than placing one drawing per sheet, this solution implements a First-Fit Decreasing 2D Bin-Packing Algorithm.
- Space Optimization: The algorithm scans the available model space and packs drawings into a dense, gap-free grid configuration, maximizing sheet usage and minimizing paper waste.
- Auto-Expansion: When a layout is full, the system automatically instantiates new layouts, managing the overflow without user intervention.
Stateful Regeneration
The critical innovation is the tool's ability to "remember" what it drew. We implemented an object-id tagging system: every CAD entity (lines, text, blocks) it creates is tagged with a persistent ID.
- In-Place Updates: When a user regenerates a panel, the system uses these tags to delete only the old entities associated with that specific panel, releasing the grid space.
- Space Reuse: The packing algorithm then detects the freed space in the layout and attempts to repack the new drawing into the whitespace. This allows for iterative design changes without creating "orphaned" or duplicate drawings.
Tracking state persists inside the drawing file itself: commit records are captured to a project-wide data tag database that survives save and reload cycles, so the tool reconstructs document state on reopening without external tracking files. On load, the system validates that every referenced sheet still exists — drawings whose sheets were deleted are flagged as orphaned in the UI, with cleanup actions to match.
The Projection Pipeline
The tool transforms 3D panel data into 2D manufacturing views through a multi-stage pipeline. A projection-plane solver factory selects the projection strategy for each panel's geometry type — orthographic planes at 90° intervals for standard rectangular panels, parallel planes aligned to edge directions for triangular panels, and flexible orthographic placement for made-to-order shapes.
- Smart Projection: The tool generates a plan view and side elevations automatically. Side elevations employ back-face culling (via vector cross-products) so only edges visible from each viewing angle are drawn, keeping drawings clean.
- Dynamic Annotation: Dimensioning is fully automated using a hierarchy of solvers (FullLength, Perforation, Spring) that apply Client-specific CAD standards based on the panel's geometry type (Standard, Triangular, or Made-to-Order). Edge-section annotations use dynamic blocks with visibility states, so a single block definition displays the correct edge profile for each TS code.
Configuration-Driven Customization
Every aspect of drawing appearance is defined in JSON configuration rather than code. Panel detail templates control view positions, detail key styling, and sheet spacing, while dimension maps assign view-specific dimension rules per geometry type, ceiling location, and view. This allows the Client's engineering team to modify drawing appearance, add dimension rules, or adjust view layouts without code changes.
UX Integration
We developed a fully modern WPF application embedded directly within the CAD environment — not a command-line script or a legacy WinForms dialog.
- Material Design System: The UI utilizes a standardized design language to provide a clean, intuitive experience that feels like a standalone product rather than a plugin.
- Seamless Hosting: We implemented custom window interop to ensure the WPF controls render correctly over the AutoCAD viewport, handling focus switching and window parenting natively.
- Two-Page Workflow: A selection page lists every panel type with its material, color, perforation, and fleece attributes and per-panel status indicators — committed, orphaned, or uncommitted — while a summary page previews the full sheet hierarchy, drawing names, and scales before anything is written to the document.
Engineering rigor is measurable across the delivery: the codebase carries 48,000+ lines of XML documentation across all classes and members, with a static-analysis technical debt ratio of 3.54% — exceptionally low for a system of this scope. The tool itself was delivered by a single developer over 12 months, with a project architect reviewing the work and setting the design direction.
The Result
The tool generates each packed sheet — typically six panel drawings — in 300–500 milliseconds: a 20-sheet set lands in seconds, drawn to the Client's exact CAD standards, saving hours or even days of manual drafting on large, high-variance panel sets.
- Zero Redundancy: By integrating with the Panel Inventory Service, it accesses the panel types automatically, ensuring only unique configurations are drawn.
- Reactive Pipeline: A four-layer cache system means user selection changes propagate automatically through to the final sheet composition.
- Manufacturing Ready: Every output includes the material, finish, perforation, and fleece specifications, TS edge codes for each side, the panel's unique ID and design notes, and dimensioned spring locations required for immediate fabrication.
- Atomic Generation: All entity creation runs inside a single AutoCAD transaction — either every drawing commits successfully or none do, so the document is never left partially drawn.
This tool extends the production-automation suite we delivered across the Client's AutoCAD environment — consuming panel inventories resolved by the suspended ceiling configurator and complementing its automated section detailing and sheet-metal folding engines — built on the same domain model, caches, and Rhino.Inside foundation.
- 100%
- Fidelity with Design Model
- 3.54%
- Technical Debt Ratio (SQALE)
- 4-Layer
- Reactive Cache Pipeline