Ceiling (Room) Tag

Hi everyone! I’m trying to solve a classic problem in my office but let me start by telling you what the goal is. Our reflected ceiling plans have room tags and ceiling tags. The box for the room number is the same size as the ceiling tag such that they stack nicely. Hence the problem: you can’t snap or lock them together in Revit. Inevitably they don’t line up or worse, one covers the other. I thought Dynamo could help solve the problem. Here was my thinking: First of all I should say I’m very new to Dynamo. After considering several different approaches I thought the best would be to have a ceiling tag that can pull the room name and number into it. Essentially, room parameters to custom ceiling parameters. Easy right! Maybe for most but I had a hard time with it. At the moment, I think I’m very close. The attached image should tell the story but I think the problem is that I’m flattening a list that shouldn’t be flattened, I’m just not sure what else to do. You’ll see below that room 005 has 2 ceilings, in the first watch node you can see it extracts them nicely, however, after flattening I no longer have any way to distinguish which ceiling is in which room. As I’m typing this I’m realizing that there is likely a similar problem with rooms without ceilings. To sum up, my Filtering group needs a little work. Any suggestions?

Hi think you just need to remove the flatten node and use list.map instead so that you maintain your data structure

Thanks Paul. Because I’m new, I’m not familiar with the possibilities of the List.Map node. What would you suggest I put into the f(X) input? Thanks.

Hi ,


I would say use your filter.bycategoryname node as f(X) , and map your list before it’s flattened .

Perfect, thanks Mostafa!

Last step (hopefully). I need some way to match up the list of ceilings with the list of rooms as shown in the attached sketch. That way I can extract room parameters and set them to custom ceiling parameters. Any thoughts?



Maybe you already solved your problem… If not, you can get your lists to match this way:


Interesting approach. The downside, like all of the annotations tricks, is relying on someone to update it before print. I’m looking forward to when the team can get this to auto trigger from with Revit.

That looks promising. Is the Count node from a custom package? I’m not seeing it in my core nodes.

Count is a BuiltIn node in Dynamo 0.9.0. I recall seeing it in earlier versions, as well.

Thanks David but I had tried that node but didn’t get the same results as Mostafa. His has an array input so I was wondering if it was custom.

Sorry, I missed that subtlety. I am not finding a node like that in 0.9.0. I see that node is also has its lacing set to longest. I was able to get the same result, using the “list” Count node, when setting its lacing to longest. The List.OfRepeatedItem node also has its lacing set to longest, to get this result.

That worked. Thanks all for the help!

hi B_Derrick

I am trying to do the same thing, would you be willing to share your script or at least tell me where to find the filter by category name node.


Scott, here is dyn file. I ended up not using that node.

Ceiling Tags with Room Information3.dyn (29.0 KB)

1 Like

thank you so much for sharing, i will test it out today.

what package is the List.FilterByString from?