Check by Rooms if a Wall is External

Hi all,

i was wondering if its possible based on rooms to check if a wall surface is surrounded by 1 or multiple room.
Because when a wall only has a room on 1 face then it’s External, but if it has rooms on both side then it could still be external, for example a balcony or something (but i can filter those out as an exception)

I tried to use the node Tool.GetSurroundingElements (but this node doesnt check the interior / exterior face of the wall but the element in common. (So i get to many results)

Why i want this is only to check if all the elements are coded according to our standards (we have different Assembly Codes for internal / external walls and loadbearing or not)

Kind regards,
F Verwoert

You will rather need to show your first attempts with Dynamo and ask about your specific issues in building it. Please use the search tool, you will find a lot of information about rooms that could help you to get started.

First of all i search the Forum and as i described i tried a method, but it didn’t gave me the result i was hoping for.

I was only wondering if other people tried the same thing and no im not asking for a complete script or solution.
Just a direction which node i could probably use.

The downside for any programming is the limitations of the user making the program. As well for searching, maybe i want this, but someone created something similar what i can reuse and make it work for my script. I’m new to Dynamo and my problem is that i dont know what is out there. And i see this forum as a tool where people share their thoughts and a reply like that doesnt make sense to me at all.

So as far as i’m concern, if you dont got anything to say that adds value to my question then maybe you shouldn’t even bother.

kind regards,
F Verwoert

Please send what you tried so that we can quickly understand what you are talking about, and read the forum guidelines first if you did not already:

It’s possible

You do this based on the fuction of the wall, because if so that’s not what i want. The draftman can make a mistake by picking the wrong wall at the location.

So based on what criteria you make the selection?
What i made so far is that i check the rooms which elements it connects to, if it’s connected to more then one room it’s not external. But this doesnt work because wall can go over multiple rooms as well external.

That’s why i need to know on which face a room is connected.

Kind Regards,
F Verwoert

You could check that by creating a line between the room location points and intersecting that with the wall’s location curve. If there is an intersection the rooms will be on opposite sides of the wall.

I do think, though, that you should rethink your overall approach. Walls can (and will likely) be adjacent to many, many rooms. It may make more sense to create a curve loop from the location lines of all supposedly exterior walls and check for rooms outside that polycurve with a containment test. Computationally, this would be way faster (and probably much simpler to code, too). Based on the results of such a query you could go further and test only the room bounding walls of the rooms that failed the containment test.


First of all thank you for a decent response to my question.

Im quite new to Dynamo, i understand where your going…
Like i posted before that is my limitation in programming? I can make a selection of my elements based on parameters that are filled in what suppose to be the External Walls of my building. How can i make this polycurve based on elements?

So my issue is still which nodes are best to use to get to a simple and good result.

It’s up to you to find the best nodes for your own task. If you read carefully the answer that has been given, you will see the keywords that you can use to find related posts through the search field, and make some tests with that. If you are very new to Dynamo, this exercise is probably too difficult: the best would be to divide it in simpler tasks and share your graph systematically while exposing your specific issues.

This may be one of those times when it is simpler to draw a set of room boundary lines outside the project and place a room named ‘outside’ there. This room would allow for rapid selection of exterior walls once t exists (room.boundaries node), and could possibly even be placed programmatically.

Also, I’ve yet to see a project where an exterior wall has the same construction as an interior wall - can you get this info with wall types?

1 Like

I know where you are going, sometimes we get models from external architect or whatsoever and we cant tell them how to make their models. But i could try make it into a script like you said.

And for you second question about different wall type i agree with you, only we draft single element and not full exterior walls. For example: Brick outside / Insulation / Limestone are 3 different walls, not 1 wall with 3 layers.

This is for the best way to get the right quatities. Hope it makes sense?

At least thank you for your thoughts and input.

So none of them can be both external and internal?

Hey @fverwoert ,

I’ve got a question! What happens when a wall separates multiple rooms? For example. An external wall which acts as a separator for multiple rooms would end up in the list for internal walls. Of course this could be easily verified visually, but you could achieve the same with a filtered view.

I’m asking this because for the script to work it seems it would be at least as important to find a way to validate if the draftman has split the wall by room. (i.e. each wall has acts as a bounry for 2 rooms or less)


Indeed thats is the issue i have at the moment if you read my previous post, so i will have to go from a different approach what @Andreas_Dieckmann or @jacob.small suggested.

No in theory they cant be the same wall if the drafsman works extremely accurate and dont make mistakes.
But unfortunately this doesnt happen, because we are all humans. Thats why i want to make this script in Dynamo so i can highlight if walls are used at the wrong location.

In general we give each object in the model a certain classification, based on that classification we take off the quantities and add a recipe with €. So if my quantities arent accurate there is no point. So we are trying to build in tools in Revit that can do this check before making an export to IFC.

@fverwoert You could lalso consider suggestions I made at this discussion. There are shortcomings though.

1 Like

@fverwoert Sorry 'bout that, shoul’ve read more carefully. Anyway, i tried @jacob.small his method. By making a boolean-parameter (e.g. RBN2.0’s InteriorOrExteriorSpace) you’d be to filter walls acting as boundries for external spaces very easily. It’s not a fullproof method, but it might do the job for the most part.Check by Rooms if a Wall is External.dyn (27.3 KB)

1 Like

That is kinda bad practice for many reasons (significant increase in production time, significant rework issues, significant database bloat, though it likely makes wall joins a bit easier…), so you may want to re-consider this approach holistically across the workflow. There are other more efficient ways to get material takeoffs which don’t require individual modeling efforts.

In this specific instance you’ll get only partial results with my method (and likely @Andreas_Dieckmann’s method as well), meaning that as an automation solution it will kinda fail. This is because only one element can be the room bounding one, so everything from the interior room to the exterior face of the wall won’t be selected. You also can’t just select walls with no rooms associated as they will exist inside and outside the building. If you are ok with the partial results and having to manually check what was tagged as exterior or not, test out my method; but If you want all of the mini walls which make up the exterior walls, you’ll likely have to come up with something else.

I think that likely selecting all walls by type (all WRB, all brick, all limestone, all gypsum sheathing, etc) will get you most of the way there, and you can then create a hull of the interior rooms, and do a polycurve containment test to remove the interior exterior walls (if that makes sense). Lots of geometry calculation will have to occur a result of this (again another drawback to the many walls approach is the significant increase in number of walls to think about). Hopefully your building is a very simple construction.


Looks good i will give a shot for my project see if i end up with good results. Thanks for your suggestion

Thank you @rubenvduijn, i will look at it more closely, but i can see that the some walls are green (interior) but for us they are exterior.

I will give a response later on after doing some testing

@jacob.small i understand your concerns, but our company is leading in BIM and we use our models for other software. And we have a simple 20:80 rule, which means if it cost me 20% more input and it saves someone else 80% of their time its worth it.

And we make models as-build. Which means you first make your interior limestone, then attach the insulation and then the bricks around. And the wall joins are indeed better under control and if you do it properly it isnt that much work, you can copy offset and change the wall line and so on.

I think im heading on the right track and might have a solution i thought about it over night. I will test and try it out and come back on it.

At least thanks for your time and effort.