AEC | Product Development - BimorphNodes for Dynamo

BimorphNodes is a high-performance C# library we engineered to bypass the computational limits of visual scripting in Dynamo for Revit. Consistently ranked in the top 10 most downloaded Dynamo packages, it gives the global AEC community clash detection tooling that runs orders of magnitude faster than Dynamo's native workflow at production scale, alongside CAD data extraction and geometry processing, including nodes found in no other package.

Client
Bimorph
Timeline
2016 - Present

The Engineering Challenge

We developed BimorphNodes to address critical performance bottlenecks and capability gaps in Dynamo workflows for Revit. As BIM coordination and automation requirements grew more complex, existing Dynamo tools struggled with the computational demands of clash detection, geometry intersections, and CAD conversion at scale.

Dynamo's native intersection workflow - Geometry.IntersectAll or Geometry.DoesIntersect fed by solids extracted with Element.Solid - is inherently inefficient: every element's geometry must be extracted before a single intersection test can run, making clash detection impractical for all but small projects - yet large-scale projects are exactly where Dynamo automation is needed most. CAD workflows were just as constrained: reusing a drawing's content meant importing it and exploding the import - discarding its structure and colliding with Revit's 10,000-element explode limit - and isolating text meant pre-processing CAD files before anything could be extracted.

The Solution Architecture

We engineered a new range of clash detection and intersection nodes in C# around the Revit API's dedicated intersection methods, coupled with optimization algorithms of our own that filter surrounding elements before each clash test to minimize redundant checks. Because Revit elements are input directly - bypassing the costly per-element solid extraction Dynamo's native nodes depend on - these nodes reduce processing times by up to 99.5% compared to the same workflows built on Dynamo's native geometry nodes. In the published benchmark, the time to clash 2,300 walls against 2,160 ducts - 4,968,000 possible clash tests - dropped from over half an hour using the native workflow to 8.1 seconds. Porting the entire package to C# consolidated development in a single strongly typed environment to accelerate the release cycle and improve node reliability.

Solving the Revit API's Linked-Element Limitation

The Revit API restricts linked elements to their external file's origin-to-origin position, regardless of any transformation applied to the link in the host document - so wherever a link has been transformed for coordination, typically via shared coordinates or manual alignment, API-driven clash results fail unexpectedly. We purpose-built the LinkElement class to solve this limitation, performing operations such as geometry extraction at the element's host location. The obvious alternative - resolving each linked element's Link Instance through its Document property - caused execution times to increase by more than 250% and could not reliably identify the correct Link Instance when the same file is linked into the host document more than once, so we made LinkElements the exclusive input type for linked elements. The payoff: clash tests spanning an unlimited number of Link Instances, and LinkElement-vs-LinkElement clash detection even across links with different origin-to-origin positions - a problem with no direct solution in the Revit API. A logic tree executes only the subroutines each intersection test actually needs, and validation sampling checks user input at intervals rather than exhaustively, keeping the performance cost of validation to a minimum.

Beyond performance, BimorphNodes is the first Dynamo package able to extract and convert text and curves directly from CAD links or imports using layer names as filters. This non-destructive approach preserves the integrity of source documents while enabling automated CAD-to-BIM conversion workflows: curves convert to Dynamo geometry, or to native Revit detail, model, and symbolic curves with line styles mapped in the process, and the CADTextData nodes parse text recursively from blocks nested to any depth - computing every scale, mirror, and rotation transform along the way - without exploding, and without the 10,000-element limit that comes with it. Sheet automation rounds out the package: duplication retains sheet names, numbers, viewports, and title blocks, and rebuilds parent-dependent view structures so duplicated sheet sets preserve the project's organization.

Engineered to Last

A decade of Revit releases is unforgiving to add-ins, so in v4.0 we rebuilt the entire codebase, adding 24 new nodes while making future updates faster to ship. We also redesigned the package's API surface: intersection functions now return dedicated result objects - ElementIntersectionResult, SolidIntersectionResult, and their siblings - which package each clash result into a queryable object and eliminate the index-matching the old list outputs demanded.

Platforms.
Revit
Dynamo
Core Technology.
C#
.NET

The Result

BimorphNodes has become an essential toolkit for the AEC industry, with support spanning Revit 2019 through 2026.

The performance improvements have enabled entirely new coordination workflows that were previously impractical due to computation time. Teams can now run clash detection on complex projects in seconds, automate CAD conversion in bulk, and build sheet production systems - all inside Dynamo.

  • Beyond Revit's Interference Check: BimorphNodes supports an unlimited number of Link Instances per clash test where Revit's built-in tool allows one, runs linked-vs-linked and same-link clash tests the built-in tool cannot, requires no elements in the active model, and in our tests computed results around 2-3x faster - an indicative rather than like-for-like comparison, as the two tools function differently.
  • Error prevention: Comprehensive exception handling gives users clear instructions when something goes wrong, result objects flag problem geometry (FailedToConvert, IsSupported) so it can be filtered and rerouted instead of failing the run, and self-intersection intelligence eliminates false-positive clashes when an element appears in both input sets.
  • Global reach: Support for every Revit language version - achieved by replacing English string lookups with built-in Revit API queries that localize automatically, or removing them outright.
Top 10
Most downloaded Dynamo packages
99.5%
Less clash processing time (vs native Dynamo nodes)
2019 - 2026
Revit versions supported

Need this level of performance?

Book a discovery call

Whether you want to put the package to work or commission custom tooling for your firm, we'll start with a short, no-obligation discovery call.