Rhino Blocks to Revit Family Types

Great Scott!
That link that you sent is the PERFECT combination of theory and practicality… Perfect for a new Revit user like myself.
By “Assemblies” I actually wasn’t referring to any Revit lingo, just plain old construction speak. I work at a landscape architecture firm, and while Revit is still not ideal for our design and documentation workflow, RhinoInside is making our collaborations with architects much smoother!
Attached, you will find an example of a block with multiple objects (differentiated in Rhino by material and layer). With the definition I sketched, this imports into Revit as a generic model that acts like a block, as you can select the whole thing with one click. I am using Human to manage the block in Grasshopper, but it would be nice if Elefront Extended Geometry worked as well (for some reason, it doesn’t).
One challenge with this is when you intend to use a block within a block, which is not done in the example here.
AaronRhino to Revit exporter -Block.3dm (1.3 MB) RHINO-IN-REVIT-EXPORTER-Block.gh (14.8 KB)

I am glad it is working for you so far. You are right at where I am also in this process, so I will try to address some of the issues:

Since you are a Landscape Architecture firm, have you looked at the newest Lands Design? I would think it would be quite interesting to have those tools running inside Rhino.Inside.Revit.

I still need time to follow up on the blocks. Hopefully we can work something out on it.

Elefront is a real goldmine in this process. I use it for a lot of things. I need to post a tutorial or two in the Elefront Forum that uses Rhino.Inside.Revit and Elefront together. This is work I been experimenting with in just the last few weeks. I have both a basic demonstration and a more sophisticated workflow as examples. I am sure @krahimzadeh will have something to say about all this too.

1 Like

I have a few questions about state on this model in Rhino. There are a number of issues that make this more challenging then it needs to be.

  1. It seems the block is scaled to 25.4? I expect this is because the original model was in inches? I will work in inches to limit the number of transformations that needs to be done.
  2. The transformation in both X and Y is a negative value. This would mean a mirrored transformation would be needed. Can Revit Types handle a Mirrored transformation?

For this sample I will try to remove these two challenges. Reversing scale and transformation information is possible but takes a bit more math.

Does this make sense?

OK, here it is. Very interesting. There are some tricks. For instance reversing the transform on the original objects.

Now that I get the scaling, you could use any combination of scaling needed.

RHINO-IN-REVIT-EXPORTER-Block-scaled.gh (29.9 KB)
Rhino-landscape-block.3dm (1.5 MB)
Use a blank feet project for this in Revit.


Wow Scott, this is tremendously helpful… and instructive. I want to apologize for grabbing such a wonky block for my example (mirrored, scaled), but perhaps you wouldn’t have arrived on such an elegant solution!
Also, I suspect that somewhere along the way, a change in units may have triggered some of the tolerance/Brep recognition issues that you identified above.
Thanks for this!

Hi Scott,

the blocks are on a flat plane and it works well, I don’t know why as soon as a block is on inclined plane it does not work even though the Always vertical option is disabled on the family template
Do you have an explanation for this?

hello samir, did you check the parameter “work-plane based” ?

As @attheeast18 says, it takes both a False on Always Vertical and a True on Work-Plane Based. These can be set by Grasshopper as shown here: Rotate Families in 3d

yes it works now ! i forgot wok-plane option :wink:
thank you :blush:

Thank you scott for your answer and for the tip on grasshopper Rotate Famillies in 3d

Hi Scott,
I have another question
why there are a location gap after translation although the both models are on the same unit and blocks are not scaled ?
See image below

I found where the problem comes from
the insertion point into block must be at the bottom center, it can be generated via Human or Elefront as in the image below

And then we proceed to the translation as mentioned above

it works well !

1 Like