Floor Openings, Floor by Multi Curve

Hi to all,

Can someone help me about generating a floor with double curve or opening an opening(like shaft opening)

I have a floor contour and inner core lines but can’t genarate a floor by these curves. It fails.

















Its ends with generating two floors.

Can some one help?

[caption id="" align=“aligncenter” width=“988”]


Hi Enes,

Seems that there are some imitations in Revit’s API for floor generations. I think I’ve got a solution for you. You will need to make it into a two step process.

If you group your floor boundaries by elevation (so that each sub list holds the outer boundary of the floor and the inner boundary of the “hole”), you could try something like this:

2014-12-12_103750 2014-12-12_103415

-Compare the areas of the polycurves

-Split them into big(external boundaries) and small( internal hole boundaries)

-Create the floors and terminate the transaction.

-Access the API and use the floor/roof “Create.NewOpening” method.


Thanks A lot, Its worked wery well

I think you should Share this as a Custom Node.

Capture Capture2


I’m only worried that the usage is too specific for it to be uploaded to the package manager. I’ve added the workflow above as an example file. Hopefully that will clear any confusions.

You can find the custom node under HostedFloorOpening.ByCurves



I am trying to do something similar to what was done here. I would like to get an opening from detail lines or filled regions and have them cut a hole in the floor. I am using the node “HostedFloorOpening.ByCurves” but get a null value. In the attached image i show that i have a list of floors and one curve to be the opening. Is it possible to get this to work? Floor Opening

Hi Shaun,

Could you try removing the “Floor.Type node” ? You need to feed the floor elements (floor instances) - the ones that will be the hosts of the openings, into the custom node.

Hi Dimitar, Dynamo Loading_SLCTRP Dynamo Loading_SLCTRPThanks for your reply. I did not get it to work so I recorded a video to help explain what I am trying to accomplish.

mp4 Video wont upload even though it is smaller than 5MB.

Hello Shaun,

I went through your workflow and have a few comments:


-The “FloorType.ByName” node does not create new floor types in your Revit file, but instead only selects existing floor types. You might need to create floor types that match your area load types beforehand.

  • When you pull all your lines with the “All Elements of Category” node, they are not ordered. You must think of a way to select only the lines that are inside the boundaries of the particular host floor (or in your case the area loads). I suggest “Tool.GetSurroundingElements” from SteamNodes or a similar way involving BoundingBoxes.

  • The HostedFloorOpening node will accept a list of curves similar to the “Floor.ByOutlineTypeAndLevel” ( or a list with sublists of curves), you could use polycurves if you extract their curves first with “PolyCurve.Curves”.

Hope that helps. Happy New Year and good luck! :slight_smile:

Nice post! Can we use a similar approach having a floor divided by model lines into additional floors (a floor inside another floor)?

This would simplify the process of editing the boundary of a floor creating an empty space inside, and then modelling another floor with a different characteristic inside that hole?

A post was split to a new topic: How to split floor plates into outer edge and openings?