Convert Sloped Floors to Slab Shapes

Working with Slab Shape Floors in Revit can be a tedious process. There are two options for creating sloping Floors: use a Slope Arrow for a single slope across the entire Floor or convert the Floor to a Slab Shape and modify its points and edges. Unfortunately, there is no way to combine these two methods in the Revit UI.

Ideally, you would be able to start with a Floor, give it a single slope, and then convert it into a Slab Shape. But of course, this is possible with the Revit API and can even be done with Dynamo.

To demonstrate this process, I created a zigzag-shaped Floor with a Slope of -10%.


And I added Spot Elevations at all of the corners (so you can clearly see what is happening with the slope).


The Dynamo definition requires a couple of CSV nodes from Landform and the ever-useful Floor.SlabeShapeByPoints from Clockwork. It is fairly simple to set up, but it does require two runs to work. On the first run it will collect the points from the sloped floor, write the points to a text file, and reset the slope to zero. On the second run it will modify the floor with the points

It requires two runs for two reasons. First, the points must be written to the txt file and, for some reason, Floor.SlabShapeByPoints does not work on the first run. I’m sure there is a way that this could be configured to work without requiring two runs and the intermediary text file, but it would take a bit more programming knowledge than I currently possess.


If you haven’t worked much with text files, you can create them directly from the File Path node. Also, you can re-write the .txt file as many times as needed. And if you want more points (particularly on curved edges) use the Curve.StartMidPoint node instead of Curve.StartPoint.

After the first run, the Floor Slope resets to zero:


For the second run, switch the File Path connector to connect only to Points.FromCSV.


And the Floor after the second run:


As you can see, the Spot Elevations reacted somewhat strangely to the API modifying the points. But I was able to transfer them onto the Slab Shape by copying them before the first run and then pasting them after the second run.


And for any architects who might be interested, the same concept can also be applied to Roofs. It just requires a few modifications (including a Lunchbox node and a new Landform node).


This modified definition can also be used on Floors (if you don’t want to individually select the top Face).

roof slope_01roof slope_02


6 thoughts on “Convert Sloped Floors to Slab Shapes

    • The slope will be read-only if the arrow is set to ‘Height at Tail’ (under Specify), which is the default. It needs to be set to ‘Slope’.

  1. I get the error “Slab Shape Edit failed. The Floor or Roof is too thin for its given type.” when I run the definition the second time. It seems like points are generated outside the actual floor. What could be wrong in the definition?

    • Hm, it’s hard to troubleshoot without looking at the files, but I know Floor points can have issues if the slopes are too steep. I’ve never had issues with points outside of the Floor- the Floor will just discard those. I would guess it is possible to have issues with a thinner Floor, so you might try a different thickness and see if the problems persist.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s