Since my last post on bending rebar in revit, I have been attempting to make a sloping K Series joist in revit that will dynamically update in the most awesome way possible.

K Series Joist in Action

Why is this awesome?!? In the gif above, all of those joists are the same family, but they have differing seat heights based on the vulcraft catalogue. In addition to that, as you can see in the gif, if the supporting element, be it a beam or a wall changes, the joist seat height will dynamically update based on the Vulcraft catalogue parameters.

Attempt 1

I began by attempting this in a very math intensive way... lots of converting from a local coordinate system to a global coordinate system. I made this lovely diagram to layout all the math involved (pictured is actually the math for a LH series joist seat that slopes)

Programming this into revit was doable, but getting revit to work with this much math often led to instabilities within the family. Some of the equations were quite fun to look at, only place where " red = green + grey".

I would often get error messages that the modeled geometry is slightly off axis when moving and stretching the model. After a couple of more attempts and feeling defeated, I made a post to the revit structure forum

Toan to the Rescue - Attempt 30 at this Point

I have to give a big shout out to Toan Nguyen on the revit structural forum for helping me out. See my post here. He was the one that came to the rescue and suggested rotating the local axis of the reference points to match the global coordinate system and forgo all the math that seemed to make revit struggle. With his help and family he posted I was able to tweak the adaptive component family to work.

The Family

The family consists of (4) differing families:

  1. The main rig
  2. A two point adaptive family that forms the bottom chord, the top chord and the joist seat
  3. A two point adaptive family that forms repeating webs of the truss
  4. A two point adaptive family that is plugged into item 3 that is the repeated web element.
    This family used the repeater tool button to array family 3. This is an awesome button that I have not used before and is extremely slick to make arrays quickly and very stable.

I found that this family is much more stable in the project environment by having all of these nested families in the main rig family (family 1). Attempting to directly sketch the chord profiles in element 1, the main rig, led to extremely odd behavior and odd twisting of the members. You can see below the odd twisting:


All and all, I was quite happy with the end product, it is stable and can be moved and dragged dynamically without breaking. Be sure to pick the low point first and the high point second with this family.

But what about the Vulcraft BIM in Addin?

I heard this on the structural revit forum as well. The short of it is that this family is dynamic, the joist seat height will update automatically based on the slope of the joist. The vulcraft addin will not do that. In addition, the family is great in that a K series joist needs a typical joist seat length of 4", the adaptive family will always start joist seat bearing on the supporting member and will show that you are lacking the required bearing length. The vulcraft addin always sets the 4" of bearing centered on the CL of support. The adaptive family can do this as well, but gives you more flexibility.


I can hear you BIM managers now "This isn't a structural framing member category, what do I tell my architect?" 

In response to this use this as an opportunity to have a conversation with them. 

We are using a newer category type to model our joist members. It allows our joists to dynamic adapt to the supporting members as well as dynamically adjust truss heel heights based on the slope of your roof. This will allow us to be better coordinated with your model.

This opens up an opportunity to show that you exploring new ideas and new ways of achieving a better coordinated model. I would bet you your architect would at least be intrigued by what you were doing.

File Size

I was concerned about the potential file size of this family.

The adaptive component family clocks in at a whopping 900 kb.

The typical K series joist from vulcraft has a file size of 1352 kb.

The typical K series joist out of the box from revit has a file size of 588 kb.

This places the adaptive component family nicely in the middle.

In addition to this, I made a test project with 100 joists in each project and compared file size.

  • Project with 100 joists, adaptive family - 17808 kb
  • Project with 100 joists, Vulcraft - 17160 kb
  • Project 100 joists, Revit K series - 17196 kb

The adaptive family project is the largest, although not a huge difference, ~ 700 kb.

One downside is the family does take a bit of time to render into the project as you are prompted to pick the (2) adaptive family point locations, but it is usually no more than 2 seconds or so. I wish autodesk gave an option to only create an adaptive components after the points are picked, it might make the adaptive component family a little nicer.

Future Work

You could add onto this family to allow for top chord extensions, adjusting to be LH series joists, and what ever else you might want. I will be calling it quits though.

I am very excited to be done with revit families on this site for a bit, they are fun to mull over in my brain and get started on, but making them work is a real pain in the butt. Onto bigger and better stuff... Files on github.

BIM Revit Steel

Our Sidebar

You can put any information here you'd like.

  • Latest Comments
  • marcello on RAM API - Cracked -


    I’m glad you found the class helpful on learning how to access the RAM API using dynamo.


  • Liz_Larsen on R2R - Update V1.1.0 -

    Great job! We've been wanting a tool like this for so long that I'd considered making it myself. During my research, I stumbled across this blog right around the time you were looking for testers a few months ago. 

    I'll be sure to spread the word about this amazing tool. Thanks …

  • retug on ETABs API - More Examples (Database Tables) -

    Hi rajavardhan, are you not able to delete selected frames and walls based on section properties through the ETABs program itself? Or through the API? I could put together a few quick examples for you with the API if needed.