Find external surface area and orientation of cluster of blocks

I have a building which i have split in to different block elements based on the type of room (see picture below). Is it possible to extract the external surfaces and group them by orientation and block automatically?
image

As an example i want theese surfaces to be grouped since they are both facing the same direction and are a part of the red volume. As output i want to know the sum of the area and their orientation (0-360 degrees). I want this to be done for every external surface. In the example picture below i have converted the block to a mesh, exploded it, and selected the surfaces manually. i wonder if there is a way to do this automatically using grasshopper.
image

3. Attach minimal versions of all the relevant files

1 Like

Thank you. I already saw your post. it is very close to what i am trying to achieve. However i want to get the orientation in degrees and not “north”, “south” etc.

Like i said in the post i also need the surfaces to be split by block as well, not only orientation. with the sollution you provided all the surfaces facing one direction is extracted regardless of which volume the surface belongs to

here is an example file
Untitled.3dm (42.6 KB)

  1. Ignore faces that face up or down.
  2. Measure the angle of surface normal vectors relative to X (or Y).
  3. Create a set (CSet) of angle values to group faces in each “block” that have similar normal directions. It often works best to round numbers when creating sets.
1 Like

I made this in grasshopper based on your file. However i am sure there must be a smarter way to do this? with my file i will have to copy the string of calculations 360 times (one for each azimut angle) for every mesh that i am analyzing, and most of the azimut angles will have an area of 0.

And my solution still does not fix the problem of the “evaluate surface” counting the internal surfaces (where the faces of two meshes/blocks meet). Do you have any tips on how i can improve my calculations? This is my first week in grasshopper so i am happy for all the help i can get.

area by azimut.gh (9.3 KB)