[New GH nodes] ReferencePlane.ByLine

Hi, I would like to know if it will be possible in the future to create Revit Reference planes using RiR in the following ways:

  • Inside the family environment, similar to how we add FamilyElement.ByBrep and other elements. At first I thought this could be done through Sketch Planes, but then I discovered they serve a different purpose.
    Reference planes could be created based on GH planes, although I suspect we would need to indicate the visual extents of the plane just like we do in Revit. Creating them through lines could also be an option, so extents and even plane orientation are implied through line start and end points.

  • Inside the project environment, as I understand a different method would need to be used in order to bake separately inside a family environment and the project environment.

Connected to this, the possibility to create Revit Dimensions aligned with these planes, assign parameters and lock these dimensions would simplify the process of setting up the building blocks of a Revit family, only leaving geometry alignment up to the user.

Reasoning: Itā€™s common practice in family creation to align and lock geometry and dimensions / parameters to reference planes and reference lines (which act as the bones of the family and tend to behave more consistently with changes). While RiR currently gives the possibility of instantly modifying and reloading Revit families, this workflow would hopefully approach one of the standard methods of family creation in Revit, only with the added unlimited power of GH automation!

Thanks a lot for this technology, keep up the good work!!

1 Like

Yes, once inside the Family editor, there are many areas that we do not handle yet:

  1. Reference Planes
  2. Sweeps extrudes etcā€¦
  3. Dimensions

We are aware that we need to add more in this area and there is many methods available. If anyone wants to create Python components in the mean ti,e to prototype this, that would be cool.

Currently the issue of Families and geometry is a bog deal. If you are able to wrap BREPS and Voids Freeorms in Families, you can edit those shapes with Revit and they will section, hatch and schedule properly. Families can create as New in the project or outside. There are tricks to making Families.

I have an example that I need to get in the tutorials folder. I should be able to do that early this week.
Here is a place to start with the Family stuff that is currently working:

2 Likes

Thank you very much for your answer Scott.

Based on @eirannejad ā€˜s Python examples from the forum (thank you very much!), I was able to get a very modest Python script running which creates Reference Planes (Iā€™m also working on getting dimensions between these refplanes to work, so far Iā€™m having trouble with recognizing these refplanesā€™ references as geometric so the method works but I will probably ask about that in the Dynamo forum).

Itā€™s my first bit of code with an actual use (even if still crappy), so Iā€™m happy to share it in case anyone wants to take a look. Boy is it difficult to understand all this API stuffā€¦

Reference Planes from Lines.gh (8.2 KB)

Now on to the problematic stuff: the entities created do not update, but rather new entities are created each time the code is run. I guess itā€™s something to do with element binding? I read a previous thread on here talking about bindings and there was a link to an article about binding in Dynamo (https://forum.dynamobim.com/t/element-binding-in-revit/31612).
Does RiR follow the same principle? Is it possible, in a Python script, to replicate this geometry/object update behavior that is implemented in the C# source code of RiR? I checked on Github, but I could find nothing (not that I could understand a lot of code when I see it eitherā€¦)

Could someone please point me in the right direction?

Also, again a big than you to McNeel, the Rhino Inside development team and @eirannejad for sharing these Python scripts, which are easy to follow and help a lot in getting a grasp of how to correctly interact with the Revit API from Python!! This is invaluable help.

1 Like

RefPlanes Dimension.gh (9.4 KB)

File updated. I was able to get the dimensions working by making separate transactions for refPlane creation and dimensioning. I still donā€™t know how to update elements instead of creating new ones with each run though.

I will try to play with the Align command next to check if itā€™s possible to run it from GH. Any suggestion is welcome!

RefPlanes Dimension.gh (9.7 KB)

RefPlanes Extrusion Align Dimension Label.gh (11.0 KB)

I was able to get the ā€œelement bindingā€ somehow working, although Iā€™m not yet sure if this is the correct way to tackle the problem. Any suggestion is welcome.

Also, I also came up with a simple script to test native family environment extrusions, plus alignment to reference planes and labelling / parameter assignment. Will try cleaning stuff up and testing other functionality in the following days.

3 Likes

Great. Thanks a lot @lukabergs
The community appreciates you sharing these examples very much :slight_smile: I have added an issue on the Github repo and linked to these discussions so we can improve the parametric family creation in Revit

Reference Planes.gh (9.2 KB)

Hi. I made a document-aware version of this node, which will work both for family documents and for project documents.

Since I need to give more thought to the dimension node and prepare it for different kinds of inputs (not just reference planes), I decided to focus in the reference plane node in this topic for now.

I donā€™t know if it could be interesting to add the planesā€™ references or other stuff to the output of this node, but for now I decided to keep it simple.

5 Likes

@lukabergs
Love this. Thanks a lot! Will incorporate into Wiki or RiR :smiley: