Get a list of windows included in a space and create multi-level schedule with calculated window parameters

revit
dynamo

#1

Hello,
I am ultimately trying to achieve a schedule that would associate to each Space a number of parameters extracted (and manipulated) from it.

I would start from windows. As such, I would like to:

  1. for each space found in the model, list all windows located within the boundary of that space (I figured out Tool.GetSurroundingElements node does the job)
  2. for each window found, extract certain parameters, such as name, ID, height, lenght (fairly easy)
  3. for each window found, calculate the angle from true north
  4. for each window, get the area of the parent wall (more specifically, I am interested in calculating the internal wall area, i.e. the zero-thickness boundary surface that is used for energy models). This represent the window-to-wall area
  5. Collate one big list, where each window entry has all the parameters above PLUS the indication of the space that contains it.

#2

I’d recommend starting with one space and moving onto multiple spaces once you get everything working. It’s much easier to work out your list structure a parameter mapping for one instance.

Since your final goal is a schedule you might want to start there. Create a window schedule with all the parameters you need (you may need to create project parameters for the ones Revit doesn’t calculate on its own.) You should then be able to get Dynamo to find the missing information like Space, facing angle, and wall area. Then you just push it back into the project parameters and format your schedule however you see fit.


#3

Nick,
thanks for your reply. I guess I had a preference for keeping the list aggregation in Dynamo, but I see your point when you suggest to populate relevant parameters and create a schedule in revit. That is quite certainly the simplest way to do it.

However, the issue is I am developing a workflow for my colleagues in sustainability consultancy to operate on an added and ‘hidden’ layer, with respect to architectural design.For this reason, I am getting all my information from MEP spaces, which are meant to replicate the room data without amending rooms (this not causing any complaint from the arch designers/BIM modellers).
What you suggest would create custom window parameters which architects may not like


#4

OK, so you’re working from an MEP model with the spaces and getting window information from the Arch’s model?
Were you planning on creating an Excel schedule?


#5

@Nick_Boyts to you first question: yes, although my ‘MEP model’ has only spaces (same file, just an added layer of data). I could produce an excel schedule, or I could send stuff to Flux, which I have been using to update custom parameters for MEP spaces that contain sustainability metrics.

My main issue currently is that I am totally incompetent in list managements!


#6

Gotcha. Start with one space and see if you can get all the parameter information you need. You might want to write your data to Excel for the time being just as a visual check.

The only information that was a little tricky to get was the wall area, but it wasn’t too bad. See how far you can get with that and post back when you get stuck. I found it convenient to separate my space from my windows while keeping the same list structure.
image


#7

@Nick_Boyts see it is that Space element at index [0] of each nested list that bothers me. I would like to have one list ,which could be exported to a table, and where Spaces and Windows are all on the same list level. This would mean the space field would be repeated for each window item


#8

OK, that’s very doable. First part is to separate the two lists, Space and Windows. Count the number of windows in each sublist, then cycle the space for that many windows.


#9

@Nick_Boyts thank you, that worked brilliantly. I guess my issue is then matching those two lists into a table.
I figured out my way of thinking about lists is wrong, as I kind of imagined them as columns. Every nested list effectively correspond (if exported) to a new table column. Are these tree like xml or json or am I just talking rubbish?


#10

It can definitely get a little confusing when you have large amounts of data in a bunch of sublists. This is one of the reasons I suggested exporting to Excel. If I remember correctly, in Excel, each sublist represents a new row with each element in that sublist being a new column. So if you exported the space names to Excel as they currently are in my example you’d have Row 1 with Space 1 in four columns, Row 2 with Space 2 in six columns, and so on.

Keeping your data structure to one or two sublists (3 or 4 levels) will make things much easier to handle. From there, it’s always good practice to keep everything 1 to 1. For every one list of data, make sure your other lists have the exact same number of elements in the exact same structure - just like you did with repeating the space names for each window. If every list has the same structure with the same number of elements you’ll hardly ever run into problems. (At least when it comes to list structure. :wink: )


#11

Hello! Somebody would you like to help me to make a diagram that show something like this:
Room 01–>
Generic wall 01
Area wall 01
Generic wall 02
Area wall 02
window 01
area window 01
Generic wall 03
Area wall 03

I try somethings, but no sucess…