If you hang out on the Dynamo forum, you have probably seen a few comments from me regarding Rhythm availability.
The original forum post is here:
TLDR: Rhythm was becoming difficult to maintain across Revit versions, so I needed to figure it out or give up on publishing it.
The good news is I figured it out.
But, if you wanted to know more about the problem and why it exists, I did make an entire video (with sample files) to demonstrate.
After a few weeks of hacking at Dynamo, I did manage to come up with a plan. So, let’s take a look at that now.
How Rhythm for Dynamo Works Now
Rhythm comes with several pieces and is most stable when installed from the package manager.
- RhythmRevit.dll – These are the Revit nodes. This DLL is now created on the fly, thanks to the view extension and extension.
- RhythmCore.dll – Core nodes. This includes string operations, math operations, etc. This DLL loads in Sandbox, Civil, and others.
- RhythmViewExtension.dll – This is the Rhythm view extension, which is responsible for renaming nodes and now loading the correct RhythmRevit.dll for whichever version of Revit you are in.
- RhythmExtension.dll – Like the view extension, but loads the appropriate RhythmRevit.dll if you broke the rules and installed the package manually.
Essentially, when I build a new release of Rhythm now, I build it specific for every Revit release I want to support (at this time, that includes Revit 2020-2024). Once those DLLs are built, they are all nested into the view extension and created on the fly in Dynamo.
If that all makes sense, awesome, but if you want more detail, check out the video below, where I cover this process extensively.
If this seems like a lot of work, well, yes, it is. What this does for me, though, is reduce my dependency on the Dynamo team’s release schedule. As of Revit 2020, getting Dynamo updates into Revit is very difficult and takes months or even years. Chances are, if you have a major problem in Dynamo for Revit today, you won’t see a fix in Revit for at least 6 months to 1 year. This is even worse if you aren’t using the latest version of Revit because older versions rarely get updates.
As you may know, Rhythm is fully open-source source as well. Check out the source code below if you want to dive deeper into my solution.
To close out this post, I want to say that I hope this helps the community in 3 ways.
- Reduce any issues people experience with Rhythm on older versions of Revit.
- Demonstrate to other package authors or potential package authors one way to fix some of these significant issues.
- Make the Dynamo team more aware of the issues that package authors face to keep working on Dynamo.
Thanks for reading, and have fun!