I had a good time at RTC back in 2016, it was awesome to catch up with the usual BIM crew and see what they are all up to. Hopefully I’ll get a chance to post in more detail about a few things I learned this time around… but for now, here are my 2016 presentations for you to check out.
My keynote presentation slides (why BIM is broken and how to fix it…)
My Dynamo presentation slides:
And the Revizto session that I ran with Michael Clothier:
– API Stabilization: 1.0.0 is a commitment to stable code that allows for smoother and more reliable movements from one version to another. To more clearly express this, we have been moving to “semantic versioning” to illustrate the nature of changes in each release. We will be using the fairly standard version naming with an x.y.z system, where x incrementing represents breaks to the API (requiring developer refactors), y indicates changes that are still backwards compatible, and z are smaller bug fixes. Package creators and maintainers are encouraged to assess changes to the previous code, which can be found here
– Graphics performance enhancements: see this post for details
– Documentation: Along with new sections of the DynamoPrimer (http://DynamoPrimer.com), we have started an online documentation of the Dynamo API with a searchable index of public API calls for core functionality. This will be expanded to include regular nodes and Revit functionality. http://dynamods.github.io/DynamoAPI/
– Licensing: Dynamo Studio is now using a new version of the Autodesk installer that allows for easier access to network and token flex licensing tools
– Install: we have created a separate installation for “core” Dynamo functionality, those tools used by all implementations of Dynamo, and Revit, and Studio installations. This allows for the sharing of a common core of Dynamo code and packages.
– List Management: Changes to “replication” or automated matching of different data streams in nodes and Code Block nodes eliminates the need for List.Map and List.Combine in many situations
– Send to Web: formerly known as Share Workspace, we have improved the ability to view and interact with Dynamo online with Customizers
– File Export: Users can now author DWG files in the Translation section of Dynamo Studio.
– Direct Shape: Dynamo in Revit 2017 can now take advantage of faster and more sophisticated direct shape creation. In most cases, solid and surface geometry can be sent directly into the Revit environment as smooth (rather than tesselated) surfaces and solids, categorized to whatever is needed. In the cases where a smooth element cannot be created, a tesselated (mesh) object is created, as was the case previously.
For a while here on What Revit Wants, I was a bit worried I was writing about Dynamo too much… “Hey, Dynamo isn’t Revit, its just an addin!”
But guess what?
Now Dynamo is Revit, its right there on the Visual Programming panel, Manage Ribbon.
If you were running Dynamo 0.9.2 prior to installing Revit 2017 (perhaps as part of Building Design Suite Ultimate 2017), you won’t immediately see Dynamo on the Manage Ribbon. After installing Revit 2017, re-run the Dynamo install package, and ensure that Revit 2017 is selected:
Next time you launch Revit 2017, Dynamo should be in its rightful place, right there on the Manage ribbon, ready for you to jump in and start winning.
In the first release, this node just uses Element Ids tobuild a long ‘or‘ search set, but this basic idea could easily be extended and adapted to more closely connect RevittoNavisworkssearch workflows through Dynamo.
As you are probably aware, when moving from Dynamo 0.9 to 0.9.1 you lose backward compatibility… in other words, you can’t open 0.9.1 files in 0.9 or earlier.
Before taking that step up to 0.9.1 and beyond, you may wish to apply a filename suffix to all of yourDYN files, so you are reminded of this issue when you open a DYN. I have a single folder with subfolders containing most of my DYN files, and I added the suffix (082) to all of them at once with this method:
Now, you basically have an inplace backup of files. When you open one of these dyns in 0.9.1 or newer, just remember that you should Save As in Dynamo, and then newly saved file will not be open-able in 0.9 or earlier.
At some point in the future you can then remove or upgrade all of these ‘older’ Dynamo files.
Brian Nickel recently sent through a link to the very Elk package for Dynamo, that essentially opens up web geographical data access to Dynamo and thus through to Revit fortopography creation and similar.
It was already an established plugin for Grasshopper, but developer Timothy Logan has released a port for Dynamo which can be accessed through the Package Manager.
I had this idea over the holidays… and while it is still in its infancy, I have already received some good feedback along the lines of “thisis what people have been looking for…”
I have invited all of the top Dynamo Package developers to be Administrators on DynamoWorks, and as a team I hope we will be able to build up some good, useful, practical content on how to use specific custom nodes in real-world applications.
If you would like to be a co-author, feel free to contact me here or on Twitter, @lukeyjohnson.
subtitle: Most Revit hacks ever in one blog post??
Have you ever faced flexduct modelling problems in Revit? Revit fails to generate these in some cases, usually when the spline becomes too tight for the geometry engine to handle.
With a view to finding and correcting this, I built an audit tool that basically goes through these steps:
Collects a list offlexducts in the current model
Checks their 3D geometryagainst what it should be (usinga Volume calculation)
Reports a list of problem element ids
Overrides these elements to red in the current view
Isolate the elements in the Current View
It looks something like this:
Having established a list ofgeometry failure objects, what can we do to fix them? Well, essentially they are failing because the spline curve is too tight for the relevant duct or pipe diameter, so we need to rationalize or ‘smooth’ these curves out until we get to a point that the geometry works again.
So first ofall, we need to get the driving points from the Revit MEP element, so that we can start playing with curves. At the same time, we should get start and end tangents, and Diameter too. I created this node in Python for this task:
You can see that I have added conversion input here, because the units coming out of the API were a little weird (back to the old feet units thing). Ok, now that we have points, we have to regenerate the driving curve and then play around with it a bit… it looks a bit like this:
You will notice I try both Nurbs and Polycurves, because sometimes either will fail. Using both seems to be pretty reliable.
Then, with some nice Nurbs curves in hand, we have to try and make some circular-ish sweeps along them. I actually sampled a number of circle profiles by 3 points, and used nurbs surface UV degree of 3, as this seemed to be the most ‘reliable’ form creation for strange paths. However, even this still failed occasionally, so I created some ‘backup’ forms (using only start and end circle profiles), and then I rolled them all together into one (hopefully) reliable ‘no nulls’ list:
Now we can basically take a set ofFlexDuct elements (where Revit is failing to generate the right geometry), and smooth out and generate our own FlexDuct ‘form’ in Dynamo. From there, we have a few options to get it back into Revit:
ye olde but pretty reliable ImportInstance.ByGeometry or .ByGeometries
Dynamo 0.9 users can go with DirectShape
you could try betaSpring Nodes FamilyInstance.ByGeometry (thanks to Dimitar Venkov)
we can also use Mesh Toolkit to convert to Mesh, make Watertight, and export to file..
I wanted the most ‘Revit’ solution, because after all, this blog is about What Revit Wants! So for me, that was trying to get these forms into a family on the right category. First problem: there is no FlexDuct Family Template available, because that just isn’t allowed… so I had to make one usingthe IFC roundtrip (with custom IFC mapping files), then saving inplace to a component family, and renaming to RFT.
Now, with the Geometries in one hand, the FlexDuct Family Template in the other, and a wrapper node to run FamilyInstance.ByGeometry once per geometry, let’s see what happens!
Well, initial results from running the node weren’t great, but I noticed that the families were getting generated in the 3D View in Revit, and then disappearing… so I went to Revit and pressed ‘Undo’ and all my nice new FlexDuct Families re-appeared!
Want to give it a try yourself? Here’s how to use the dyn:
Go to a 3D view and select some FlexDucts
Open Dynamo, and the definition from link below, and press Run. Confirm there are no ‘failures‘…
This should collect list ofGeometry
Connect the two orange boxes, 1) and 2)
Press Run again
This should have made families for you, usinga random number as the family name
Press Undo in Revit to make the families ‘reappear’
Close Dynamo and save your project
You may need to open individual families and set the Subcategory to something new so that you can override colours and materials in the Project.
Here’s one instance in the project:
This is the main definition:
This is the project browser list of families:
Needless to say, this workflow comes with as many disclaimers as possible, because we are:
using Dynamo before v1 (0.8.2 in my case)
using hacked family templates to
make component families on categories they shouldn’t exist on with
a beta custom node and then
working around some weird issues by pressing Undo after running Dynamo