I had a small idea regarding “allow/disallow join” in Revit, which is a setting (or property?) that controls the way how Revit treats connecting members.
If I remember correctly, in Speckle 1 the default setting for receiving objects (columns and beams) in Revit was to “allow join”. Currently in Speckle 2 by default it’s set to “disallow join”.
For very straightforward beam/column structures, it’s best practice for our Revit modellers to use “allow join” for faster modelling. However, if the geometry becomes more complex, this setting can actually be quite frustrative, resulting in Revit connecting random elements in your model. Especially when loading a stream in with complex geometry. Within our company we have a Revit add-in function to actually set “disallow join” for selected elements.
Would it be an idea to let the user have control over this setting from Grasshopper? I’m not sure how this is exactly set in Revit as I’m not a Revit modeller myself. It can also be set separately for each endpoint of the beam.
I think settings like this could be actually handled in 2 places:
in grasshopper as you suggest
in the Revit connector itself, we could add a settings panel where default behaviors on receive could be set - I imagine there could be more cases like this one
I believe the default behavior for this task should be allowing joins because that’s what we end up doing most of the time.
Don’t know the particular workflow of @GerranLankhorst but this can definitely be achieved if these elements are generated via Dynamo. If they are received in Revit connector directly, then definitely there will be a need for “settings” panel.
We primarily use the GH to Revit workflow, without using Dynamo. Mostly because we do computational design in GH with all plugins for analyses that are available there. In the past with Speckle 1 we have used Dynamo as an in between stop for elements that couldn’t directly be created with the available Speckle objects (sloped floors, roofs etc).
I agree with @gokermu that the default should be allowing joins. Thinking about it, I think I would prefer to have this setting inside the Revit connector itself, so the Revit modellers have control over it themselves. Ideally, it could be a setting linked to the specific receiving stream. However I’m not sure if this is possible as I’m not really familiar with Revit.
I spoke about this issue with two of our BIM modellers at the end of last week. They actually were in favour of setting the (dis)allow join setting on object instance level in Grasshopper. This has the benefit of being able to set it in the stream itself, preventing you to have to switch settings every time in Revit. If possible, it would be beneficial to be able to set it on instance level. Preferably also separately for both end points of the beam as well. When having both regular and complex geometry in one stream, you would still be able to allow join for the regular geometry. This would prevent to fix the joins for a part of the stream every time it’s refreshed. But again, I’m not sure if Revit allows this. A workaround could be to put the regular and complex geometries in separate streams of course.
As I stated in my initial post, we have a method in our in-company Revit toolbar that (dis)allows joins for selected elements. I might be able to send you the code for this to give you a kick start on the Revit API end. Please let me know if you’re interested, then I’ll check.
Thanks for the feedback, we can definitely add these inputs, and it’ll be much faster than creating a settings page.
I’ve logged this internally & we’ll get to it soon!