Assign new/old family to objects from Rhino

Hi all,

let’s say I have very odd shapes that I wanna create parametrically in Rhino and I just wanna show like they are in Revit. Therefore I wanna create a family and bake the content to that family.
So far I only have found ways ot parametrically create objects in families in Revit with data from Rhino.

As far as I can tell a family does not necessarly need to be parametric and in our case (very weird panels and substructure) I just wanna be able to show them to people.
Is that possible at all, because so far I have not found an option to do so in Rhino.Inside.

Thanks a lot!

Hey @tobias.stoltmann
what i’m gathering is that you want to push the geometry that you have created in Rhino/GH into Revit but avoid creating complex parametric families. That is actually very possible. You can create a family from a piece of geometry cominng from Rhino/GH. You can also push the geometry as a DirectShape object into the Revit model and avoid creating a family.

Let me know if this helps and if you need more info on how to create families in Rhino.Inside.Revit

Hi @eirannejad
first of all thanks for the reply.
Let’s say I’d wanna create that piece of geometry and connect it to a family.
What would be the correct approach then?

So far I even lack the idea how to do that because so far I only found the option to create instances of a family at a location.

Hey @tobias.stoltmann

See this example please. On this definition, I am creating a very simple Rhino/GH geometry, create a simple Generic Model family from it and placing an instance of the family somewhere in the model.

create (91.0 KB)

Hey @eirannejad,
I guess I was not specific enough, sorry.

So the example you describe is creating a family and then creating an instance of it in the model at a specific location.

What I wanna do is to to chose a brep from Rhino/GH, which is pretty much not able to be described by the means of a parametric family, let’s say the individual elements of a custom facade/ceiling. In the first place they seem to be following the same principle, but in fact they are all calculated by a bigger code in Python. So that means I do not wanna create instances, because they are already created. Location and size are already pre-defined and created.

What I’d wanna do then (based on the client’s/contractor’s/architect’s needs) is to “assign” a family to that individual element(s). The purpose solely would be that you’d be able to find them in a family tree.
To be honest this might not be the purpose of a family but let’s say you would wanna have that for terms of overview. So here I’d ask myself the question if a simple filter and data written into the object (Positionnumber, etc…) would do the job and people who’d ask me to deliver the content as a family would deserve a “NO”. Because in the worst case if my facade/ceiling would have 100 individual elements that might result in 1 family that simply would be the 100 elements or in 1 family with 100 nested families - which would be okay for me because GH will do the math.

So I hope I am not too confusing and not to unlogical…
Thanks :slight_smile:

Hmm okay. I’m not sure if I understood correctly but if you remove the “place” nodes in the previous script, the Family.New component still creates the family (it will not be placed) and the Project Browser will show the created family in the tree. You can also customize the category of the family and make it more specific using the other parametrs on the Family.New component

@eirannejad, I got it. Perfect.
I have a question though (not being new to Revit, but being not that experienced…)
Let’s say I gonna have a really special ceiling/facade as to be seen in the screenshot (sorry for the bad sketching skills).
Every panel in there is really really different. The only thing I was capeable of was to create as many families as different panels I got. And this is getting quite unhandy when you have 100 different ones.

I guess you would frankly not want to modify them as they are really unique, but you’d like every different one to be a type of that panel (=part of the family).
Is that something that is impossible in Revit and therefore requires a new strategy how to organize them in Revit…?

Thanks in advance

I guess what I try to achieve is total nonsense.
I guess what we are dealing with is best organized by assigning the category and then leaving it out of any family (unless you prove me wrong of course).

If anybody wants us to deliver families they will get individual families for every single element, which makes sense in my eyes.
Everything else can be tagged in the parameters…

Hey @tobias.stoltmann
Sorry for the delay in replying. I was travelling and internet access was limited.
I think what you are trying to create makes perfect senes. Assuming the ceiling has a complex non-uniform pattern, abd using Rhino.Inside.Revit, I would:

  • Create the A1-A6 panel types in GH
  • Generate a ceiling grid pattern with insertion points for each panel type
  • Using Rhino.Inside.Revit, create family/types for each A1 to A6
  • Using Rhino.Inside.Revit, place instances of each family type at the correct location

This way you will get a Revit ceiling that is made up of Revit family instances that are individually editable by their type.

If the panels do not need to be modified on the Revit side, then you can generate the complete ceiling geometry in GH and place inside a single Model-In-Place Ceiling family.

Hope this helps. Please continue the discussion though. I’d love to see the final results :slight_smile:

It’s also possible to store all the different geometries of these panels inside a Revit family and play with assigning visibility parameters which will only show one panel per type, just as your sketch suggests. I’m not sure if doing it programmatically for a small amount of types is quicker than doing it manually, or if baking as Directshapes would be better. I’ve been working on a script just in case, so I can upload it here as soon as I clean it up a little.

Also, if each panel has more than one geometry/object (that is, it’s not a monolithic piece) I will have to think it over again.

Would you like your panels to follow a similar principle to the one I am following in this test family?TestFamily.rar (435.4 KB)

1 Like

Family (18.4 KB)

This is the current state of development of the script. Apologies for the spaghettis… I might be able to optimize and merge stuff in fewer components more logically, but for now I don’t even know how family creation is driven using the Family nodes (Project environment), so I’m mixing project environment and family environment here.

Good thing is, I’m thinking a lot about how I would personally like to see this functionality of parameter assignment and stuff in the future, so I might take some time one of these days and make a list of proposals for possible component addition or refinements (inputs, outputs, reasoning etc). Anyway, that’s for a whole different topic.

I will try to optimize this script later and reupload it.


Using Rhino.Inside.Revit, create family/types for each A1 to A6

Is there any documentation about how to create a family and create multiple types (and load their geometries)? I can use TypDup to create them but am not sure I can write geometry to that specific type.

I see this entry but it involves a single family type placed multiple times:

Do I need to open the family from a file, load the geometry into the type and save as @lukabergs suggests in his file?

When you say Types have different geometries what do you mean?

Typically in say a door family has types of variable widths, heights, or possibly different parameters in jambs, materials.

So Family A has variable x
Create the new types A1, A2 with the different x

Another option, like mentioned above, is to have Instance Variables (visibility) in a Family, then change the variable as needed.

This makes some sense. What I am building is similar to a door family.

I have a (1)sign family.
There are (20-30ct)instances.
Each instance is made from a combination of (10ct)geometries that each have (6ct)parameters (X,Y,Z, offset, height, unique name).
*Using visibility to control the overlapping geometries might be difficult.

I first imagined that I could create the Type in Rhino, then load geometry combinations into each (7) Type. I could create (7) Families, but that is not very intelligent.

It seems it is better to create a single family with (6)parameters, place the (20-30)instances, then define the parameters at each instance to draw the geometry in Revit. In this respect, my trouble differs from yours bcz I can describe the geometry with parameters. However, all this geometry already exists and I want a workflow from 2D CAD to Revit.

I have the Family and the DupTypes in the model.

Can instances be placed by type (similar to the topic of this thread)? Then access the Types individually or all together, and load/overwrite all the (5-6)unique parameters (in each type) at the same time?

that sounds doable. the 10ct geometries mentioned (6 params each) are all unique? or just 10 types with unique (6) params?

If you can post rhino geometry, maybe a image or two i don’t mind giving it a go. What version of Revit?

It is an interesting project that I hoped could be completed by spreadsheet inputs, but with the difficulty so far, probably will not go that far.

There are 5 geometry sizes with 9 types, all simple rectangles, totaling in 7 configurations.

It is Revit 2019.2. But if the grasshopper works, it should be ok to create/write new to another version.

I must wait until Monday to reply as I’m already out of town.

Hi @Rickson, I don’t know if you still have time to look at this problem but I included what I have been building.

The .gh file contains a sample set of the 7 Types using Rhino geometry + a handful of positions for a few of the types; I think it is a different workflow to integrate parameters (to define the geometry) like we discussed last week but this is what I have so far.
This image is an illustration of what I am trying to accomplish (get all types into Revit and place them at a position):

Any ideas you might have for a workflow would be helpful. (62.1 KB)

requires elefront plugin. let me know if you have any questions. (69.3 KB)


@Rickson, this works great.
It seems that I had a lot of unnecessary geometry that broke the family creation.
Elefront is proving to be a very powerful plugin for Rhino.Inside Revit.

Thank you for the help!