Calculate door area of all doors within the same room

I will try to be as specific as possible…

Fx. I have a living room with 3 doors. I want the total area of these 3 doors and list it to this specific appartment and its room.

I use Crumple’s schedule importer, where I need to combine room schedule informations with door schedule information.

From the door schedule, I multiply height and width. I have the Room calculationpoint listed, with the appartment nr. and the room nr. but how do I merge this new information from all 3 doors back to this specific appartment and its room? I have done this many times in excel, where I pick a column as ID, and merge/line up two excel sheets perfectly. How can I do this in Dynamo?

This should end up with a CSV export - not back to revit.

List.GroupByKey and/or Dictiknary.ValueAtKey would be a good start. Can you post an image of your graph so far to help identify where they would slot in?

1 Like

Cheers for using Crumple!

I’d do it like this maybe. It’s better to try and associate the elements at model level and then export data from the model versus keep some in/out of the model ideally. Usually for apartment based rooms I’d associate a parameter to them as well so they can be grouped in schedules and/or Dynamo workflows.

script.dyn (29.6 KB)


test model.rvt (1004 KB)

1 Like

Hi Jacob,
Its a pretty complex graph. Its not only for doors, but also for tiles, casework and windows.

Quick explanation: If I need a price for sanding the floor in kitchen, i need to subtract bottom from kitchen casework. Or a price for painting the walls, I need to subtract backside of casework from wall area (wall area calculation is room perimeter * wall height). this is for each appartment, so I have room calculation point, on every buildingpart. I totally understand if it doesnt make sence : )

Hey Gavin,

Thank you for all your tips and tricks, they are all very usefull. As I understand, there is only nodes for windows and doors with room calculation. I also need casework and tiles (as wall category), thats why your schedule nodes become very handy. As I tried to explain above to Jacob, its a quick complex graph I am creating, and I understand if it doesnt make sence.

Again if they are in rooms this is possible using intersections. Both rhythm and archilab should have nodes to get elements in a room and vice versa.

1 Like

Here is a list with rooms, and a list with doors. Red is a combined ID (appartment nr. + rum nr.). I want to merge all list, based on the combined ID. How is this possible? In Excel its possible. Thanks!


This is how I’d do it in Revit. Ideally all rooms in the model know their apartment number, I’m not working with Excel data in tandem here - the model is the source of truth.

One script gives each room their cumulative door area, then there is a schedule available in the model with areas per apartment as well as a script that can take apartment door area in total.

DOOR BY APMT.dyn (14.2 KB)
DOOR BY ROOM AND APMT.dyn (36.9 KB)
FORMWORK.rvt (352 KB)

2 Likes

Sorry for my bad explaining and understanding. Are you saying that data from schedules could give me problems, because its not from the source directly?

What I am trying to do is to export a CSV file, that I can upload directly in our business system. So we have appartments with different rooms. In these rooms we have different buildingparts.

Fx. in the Hall, we have a quantity 5,26 m2 of doorplates (3 doors in all). The CSV you see I have actually build a graph, but the quantity givee med challenges - maybe have to start all over.

Thats why I need the from/to room information, so I can insert the quantities in the right room in the right appartment. I have combined appartment no with room no. as ID, but is this the wrong way to do it? Sorry for interrup you again. Thanks again.


I guess my point is that the model is where the doors, rooms and apartments spatially reside. It would make more sense to get the model generating and outputting these figures to an external data source rather than pushing them in from an uncontrolled data table. I appreciate that often the authors of these tables aren’t Revit capable, so it’s easier to handle data outside the model, but it can be counter intuitive and discrepancies easily emerge this way (I’ve had many bad experiences with similar cases, and the BIM team always gets the blame if the source of truth isn’t actually true). I am assuming the data you have in excel/csv came from a model originally, or has some bearing to it.

I would suggest storing apartment number in the rooms (assume you have multiple rooms forming an apartment), and then their room number is their number. If their number is repeated across apartments, use a shared parameter for that and then jam them together to form the number using Dynamo. Moreorless how the sample and script I sent works, please have a look at it if you haven’t yet.

If you must work with a schedule, then the groupbykey node is what you should use. Filter down the part(s) you need, then group them by their apartment+room no as keys. How you line this back up to the model depends on what your data in the model looks like - ideally a room has a matching Id or number to excel and you can use that to find the index of where it occurs as a room, then set your chosen values in excel to their respective storage parameters. Dynamo has no way of matching data to rooms if no data is align-able between them unfortunately.