[New GH nodes] Family.Extrusion by Profile, Extrusion.Attributes, Family.Parameter


Extrusion Attributes Parameters.gh (21.5 KB)

Hi. Based on the kind of functionality that I would like to be added to Rhino.Inside-Revit in the future, I coded up a few nodes which I hope can serve as quick prototypes. Mind you, this GH file is still incomplete, quite buggy and not at all prepared for corner cases, scalability and stuff like that. It’s more to be taken as an idea of what I think would be a user-friendly approach to family creation, and I decided to leave it like this in order to show main functionalities. Names for nodes can of course be changed, I’m not following any specific criteria for that matter. Also, these nodes are expected to be used inside the Family Environment, not the Project Environment.

  1. Extrusion.ByProfile:

Given a set of planar, closed and coplanar Profile curves, a Solid/Void flag and extrusion Depth (End), this node creates a native Revit Extrusion element in the document. I chose to use as few as possible inputs in order to ensure ease of use, so by itself this node doesn’t account for properties such as material, subcategory etc which are technically not needed in the NewExtrusion method. These are addressed, through an optional input, by the following node, which is…

  1. Extrusion.Attributes:

This node takes care of the aforementioned extrusion properties, plus the IsVisible flag, Visibility settings (works same as with the already known FamilyElement.ByBrep etc nodes)… I forgot to add some Extrusion-specific properties like Extrusion Start (offset regarding sketch plane) and maybe others I don’t remember atm, so consider this node would take more inputs.
Something special about this node, which I made sure to show in this prototype, is the possibility to feed FamilyParameters as inputs for the right properties. You see, in Revit it’s possible to associate family parameters to specific element built-in parameters (like extrusion start or end, which would need to be associated with double-type parameters, or materials (like in this example) which would need corresponding material-type parameters).
So, in this case, you could either create a valid FamilyParameter through the node which I will explain next and then feed for the Extrusion.ByProfile node to recognize it and associate it with your desired Built-In Parameter, or just feed a static material like you’ve been doing up until now. Good thing about doing it parametrically is that you are making sure to follow good Revit modelling standards (at least IMO), and prepare the family for traditional Revit-only workflows in the future, if necessary.

  1. Family.Parameter:

This node creates a Family Parameter, given a name, parameter group, parameter type, instance/type classification (which I find in conflict with the parameter type input as their names could be confusing), and optionally a formula (only in allowed parameter types, material-type parameters for example cannot be formula-driven). I also put a dummy Override bollean, although it doesn’t do anything and I’m still having trouble to properly implement element binding and update for parameters (remember, I’m just a newbie after all!). The output of this node, as I say, could be fed to a valid input from the Attributes node (Material parameter for a material property, Yes/No parameter for the IsVisible property, etc).

Finally, I should mention that I think the Attributes nodes should be different and specific for different kinds of revit-native geometry, as in Extrusion.Attributes, Sweep.Attributes, Blend.Attributes, etc. Either that, or a basic, common attributes node for all geometry types plus type-specific attribute nodes, or (just came up with this one) an expandable (advanced) Extrusion.ByProfile node in order to either show or hide all properties, not just the basic ones for its generation (and obviously its Sweep, Blend etc counterparts).

I also got the sweep node working, but I wanted to show this basic workflow first and then upload other nodes in different threads.

As always, I’m open to suggestions and all of them are welcome!

3 Likes

Thanks a lot @lukabergs
I’m writing new guides on the Wiki and will incorporate these into them or pass on to Kike to create custom components.

Thanks for puting this package together :smiley: