RIR parse interior vs exterior side of external wall

Hi guys

I would like to use RIR for daylight studies. In this connection, I need to assign different reflectance value to interior and exterior walls respectively. I have managed to extract interior and exterior walls separately using the following commands.

However, I still need to be able to assign different values to the exterior and the interior wall surfaces. So to clarify, the end result should look like the following, where all surfaces on an external wall is considered as interior walls (grey) except for the one surface facing the exterior (orange).


I was hoping that orientation given by the AnalyzeWall component would give the exterior facing surface normal, however, that does not seem to be the case in all instances

Anyone got a good trick up their sleeve?


Hi Mark, Are you using Rhino or Revit for the daylight study?

Assuming the the Interior Wall / Exterior Wall Types all had the correct function assigned, you would then need the Exterior Walls to have their Compound Structure Analyzed for the Interior/Exterior… if all are assigned properly you should get all the correct info.

To get the normal you can cast the wall to a surface or plane.

1 Like

Hi Japhy

Thanks for the quick reply. I’ll use Ladybug Tools for the simulation, so grasshopper. My hope is that I will be able to do all necessary configurations directly in Revit which having to bake elements into Rhino, as this will make it easier to make adjustments e.g. changing window size etc. I will only use Rhino to colour code the imported geometry to verify that the correct values are assigned to each construction.

Using the Deconstruct Compound Structure component as you suggested I have now identified the exterior structure layer. However, I still can’t seem to figure out how to convert the layer name into a geometry. Here are 5 of my failed attempts haha

Hello @MarkLabrosse ,

You can use the “Element Parts Geometry” shown below to extract the layers of the wall, where the top most (first) geometry is the Exterior and the last one is the interior layer…

Hope this helps, check it and let me know.

Hi Mohamed

Unfortunately, it seems like it is only possible to select a single surface at a time using your method rather than selecting the exterior surface of every external wall of the given category :confused:


Grafting didn’t solve the issue either.
I also receive this error, when I insert inputs to Element Parts Geometry. I think that there are a few walls in the Revit sample model that only consist of concrete and hence does not have multiple “element parts”. My best guess is that they cause this error.


So unfortunately, we’re not there just yet.

Mark, So two issues.

I don’t believe that error is from the Elements Parts Geometry component.

The second issue is going to be tricky if you are trying to do this on multiple wall types at one time.

The Parts Geometry is output by the Compound structure index, the first being the Exterior, the last being interior. The actual index will vary depending on how complex the wall is.

Second you only need the Exterior and Interior of the Compound Walls.

Hello again @MarkLabrosse ,

In the following you will find how to select and differentiate between wall layers/surfaces according to their exterior and interior orientation within Revit.

First steps is querying all walls, getting only exterior walls.

Second, getting walls parts geometry for each wall and splitting walls into walls with single layer and others with more than one layer.

From here, you can easily easily classify the multi-layered geometry by getting the first item in the layers (the exterior layer geom.) and getting the last item in the layers (the interior layer geom.).

Now with the multi-layer walls out of the way, we only have single layer exterior wall left to sort its surfaces, so we get the wall geometry… deconstruct the faces and compare each face’s normal vector against the wall orientation to get the exterior surface (your orange color) and the rest of the surfaces interior or (your grey color).

Hope this is what you were trying to achieve, if you have any doubts feel free to ask.

Wall_LayersGeometryByFunction.gh (30.1 KB)

1 Like

Hi Mohamed

I finally found time to look at your script. It works perfectly!
Thanks a lot mate. You’re a grasshopper wizard :wink:

1 Like

Hi again

Just a little update. I found that the Element Parts Geometry component made the script extremely slow when working on large projects. This makes sense, as the component sub-divides all the wall geometry into its respective sublayers. So a wall with 5 layers would mean an approximately 5 times larger model.


Luckily I found that I could modify the “single layer walls” part of your script slightly and apply it to all external walls in the model to parse exterior from interior wall sides. This approach seems to work just fine and I makes the script much faster.

1 Like

Hi @M.Tarabishy, @MarkLabrosse,

Does Host Faces not return what you need here?

1 Like

Hey @kike ,

Actually that gives the same result :sweat_smile: