Extracting ceiling height by point coordinates

Hi all,

I’m using dynamo for over a week now and loving it! But…

I’ve places families by point coordinates (z,y, that I have extracted from dwg blocks). For the offset I want to use the ceiling-height at that coordinates. So is it possible to extract ceiling height at the point coordinates at a level? and if yes, could someone help me with the nodes please…

Any help would be great…

Hello, are the ceilings in the same revit file or in a linked one?
Are you placing elements one floor at a time or all together?

Do you mean something like this? Creating a line by shooting up your point(s) along Z direction and find the lower intersecting point?

hi Greg, thank you for replying. the ceilings are in a linked model. And I would like to place the components level by level (gives me more control to dubbel check), unfortunately dynamo doesn´t like that. When I place the components level by level, it deletes (undoes) the previous placed components. So I guess placing them at al the levels would be great.

Hi LazyBIM,
I think thats EXACTLY what want. Let me try it out…wil keep you updated… btw… tnx for replying

Sure thing. Let me know how it goes. Also, if your building doesn’t have a crazy number of floors, you can still consider placing components floor by floor - just close the script and open it again after each run.


I can’t select my ceiling elements from the linked files, any suggestions? as you can see the list is empty


Try the “Get Linked RVT Documents” from Bakery, it should work

Hi Greg,

I still can’t get ceiling elements… don’t know what I’m doing wrong…
Is it because of multiple linked files>


You need to select the linked file that contains the ceilings with 'GetItemAtIndex" (or a code block) and then feed that into the “GetCategoryFromLinkedFile” node.

Or use “select revit element” if you wish.

Or as T_Pover said:

1 Like

Exactly, but I think you need to use 'GetItemAtIndex" on the Link Doc as well.

Maybe it’s easier if I tell you the reason why I want to do this. I have 150 linked models, 100 of these contain ceilings. I need to place more than 1000 components on each level. I could do this the traditional way, where I place them on the planview and adjust the height through the section. But as you can imagine my model is very big and very very slow… so I thought maybe dynamo would make some changes in my workflow …right now it still not working, maybe because of to many ceiling geometry…

I though dynamo recognizes my curve and pick the geometry where it intersects with. But I think it doesn’t work that way. Do you have any suggestion where I can make progress with the issue that I have?

tnx in advance…

I think you must intersect each line with each ceiling…
I do not know if there is a “light” way (maybe with list.map?) but here is my take on it (even if I had to deal with existing components, while you will have to place them with some node like FamilyInstance.ByCoordinates) :
(Excuse me but some parts are not in english, famiglia=family, livello=level)

I am afraid however that this way your computer will explode (:

Greg is right in that your computer will probably expode with that many links and objects…
Another approach you could take is by using the ‘RayBounce’ node. It’s a lot faster than creating all that ceiling geometry in Dynamo. Downside is that it doesn’t recognize the elements through the links, it just reports a clash with the linked instance.
Here’s a workflow that shows what the node does: https://sites.google.com/site/bimstallatie/dynamo/set-ceiling-height-to-room-parameter
You might be able to create something with that.

1 Like

GregX & T_Pover tank you for replying,

I tried to recreate the workflow with the nodes, instead of rooms I have selected my components. Unfortunately all my lists are empty. Is it because of the linked models?


Oh sorry, I was confused, I thought it would bounce off linked instances as well. I’ve got a python node somewhere that does about the same but also returns bounces with linked instances. I need to look it up, will get back to you :slight_smile:

You can try this node, the only downside is that you can only use it on a single linked file at a time, so I don’t know if it’s any use to you.RayBounce with Python.dyn (7.9 KB)

It returns 2 lists: the first with the objects it encounters (nothing or the linked instance) and the second list returns the distance from the given location to the object from the first list.

1 Like


Tnx for the node, unfortunately still nothing.

I think I have to do it the old fashion way…anyway… tnx guys for you patients and help.

Hi @shahrasa ,

here’s a suggestion :

once you get the ceilings from the linked file, join their geometry into a unique solid, then project your points on it. It should run faster . I hope this helps


Thanks Mostafa,

But still nothing…