Selecting doors and windows from room X to room Y

This screenshot doesn’t have enough info. Post the dyn and a simple rvt and I’ll try to review tonight.

test4.dyn (225.3 KB)

Revised Revit (made a few edge case conditions and removed unnecessary geometry/elements so it’d post to the forum):
FloorByRoomAndThresholds-ComplexifiedGeometry.rvt (3.8 MB)

Revised dyn:
FloorByRoomAndThresholds - AnotherMethod.dyn (101.3 KB)

Might be able to simplify that a bit more if you spend some time on it, perhaps using some in-line design script in place of some of the longer strings of nodes. Key aspect was remembering that you’re working with rooms at first - so collecting ALL the doors on a level adds some additional time since you were just filtering most of them out - you wouldn’t go get every spice out of the spice rack if you knew you only needed salt and pepper. Also by querying parameters and properties of the doors it reduces geometry calculations. Some examples:

  • No need to build a vector by the wall’s start and end point as the door already has a FacingOrientation.
  • No need to build an offset point from the door’s location and see if it’s inside the room, as the door already knows which room it’s moving from.

Another thing that helps is reducing the number of long, untraceable wires in the graph. I know it takes time but you had a few duplicate efforts which I don’t think you would have come up against if things were a bit cleaner.

I did delete your UI as it was adding a degree of complexity I didn’t want to get into at the moment. You can open the old graph, copy the nodes, and then open this graph to reinsert it quite quickly.


@JacobSmall Thanks, I understand the graph now!

I’m trying to insert the UI and I’m trying to get the same output-lists as you, but I have no clue on how to change the list-levels. (I tried reading up on list-levels-for-dummy’s-manuals on the internet but I think I’m to dummy)

When the UI is attached I’m also getting this error:

Has to do with the list levels I assume?

Okay, never mind! A simple list.flatten worked :slight_smile:

Now the trick is to also take in account the free standing walls and/or columns.
I’m gonna check these 2 threads first:

After some digging and reading, this node should be able to make the openings but I can’t really find good examples on how to use it and get the boundaries of the freestanding walls…

I guess the floors I created earlier are the hosts, but I don’t know how to get the geometry of the inner free standing walls/columns and match that to the list of floors…

Also a new issue came to the surface:
When I generate floortype X for room 1 and room 2, it’s fine.
But after that, if I generate a floortype Y for room 3 it deletes the floors in room 1 and room 2… :sob:

Topmost group ends with a List.MaximumByKey. Might ha e the node wrong as I am on mobile and can’t zoom enough it’s the last node though.

Swap that for a List.SortByKey (you’ll need to add a Surface.Area as the key), a List.Reverse, and a List.Decompose. List levels will matter for all of these. The first items are the larger polycurves which make up your outer boundaries. The rest are interior loops.

You should be able to figure out where to go from there.

This is element binding, and only an issue if you let it be.

Not sure if there are any spots left, but I am giving two bigger dives into this topic at AU Vegas this year. Search for Pandora’s Box if you’re interested.

1 Like

Great, I completely understood your article about element binding and fixed it by deleting the bindings in notepad and now I can create multiple floor types for different rooms.
Unfortunately I don’t think I’ll have the time or money to go to Vegas any time soon (I’m from Europe). But I’m taking a local dynamo-class next month. :joy:

I’ll try out the suggestion for floor openings and get back to you if I’m stuck!

1 Like

So far, I only managed to cut out 1 freestanding wall.
I don’t really get why it’s not doing both…

Likely list levels - also I am not sure if this will process two openings in the floor.

1 Like

If you have rooms (you have) in the model it will follow the contours of the walls, thats a good start .

It was the list levels, I messed around with it a little bit and this was the solution:

Now it generates openings for all the freestanding walls! :slight_smile:

1 Like

I wanted to try adding 1 more thing, to create a floor at the room level but with a (negative) offset. But this node seems to not accept a negative offset like for example -200…

Solved it with this:

1 Like

@JacobSmall Just 1 last thing (I promise)
I also wanted the threshold of the windows that are sitting on that floor level…

I modified the ‘get threshold from doors’-part, but I don’t really know how to connect it to the List.AddItemToFront-node in the group called ‘Adds the room surface to the threshold surface’… Do I just double that group and in the first I add the door threshold and the one after that I add the window threshold? Because merging the 2 lists is probably not going to work…

Also the trick is selecting the windows by room, since the windows are not hosted in the wall bounding the room, but in the outside wall that is separate (but they are joined)… (that’s how our office models) Any idea’s?

Icky iky ick ick. That’s like bubblegum under a table at a restaurant for me - avoid at all costs… I know why some do though, so let me see what I can come up with.

Can you post the current dyn which shows how you are currently working with the windows. I’ll also need a .rvt that has stuff modeled per that two wall standard. You can just say ‘the old one is how we model stuff’ if that’s accurate, but then again my old method did grab windows in the rooms so I am guessing not.