OK, it seems there is a problem when using the the overlapping polygons. I thought there would be, since for instance this line (in cyan):
... is created twice. However this is what happens in the attribute table:
The LEFT_FID and RIGHT_FID will be the same, joining the same building height for left and right and the height difference "H_DIF" will be 0, so the surface will be 0.
In 3D the situation looks as follows (using the building polygons and extruding on the field HEIGHT):
In case we are interested in the surface of the walls of the green building we can define the minimum height (left or right) of the neighboring buildings as base height and use the height difference as extrusion:
This looks almost OK, but there is a part of the wall that should not have been included:
If you look at it in 2D you will see that it created 4 lines from the neighboring polygons (see cyan line):
Looking at the attributes of selected lines:
It learns us that it should ignore 3 of the 4 records and only include the one with the highest HEIGHTs. When there are two polygons with overlap composing a single building, the polygon with the highest HEIGHT should not start on the ground, but on the HEIGHT of the lowest polygon. Although this will complicate the analysis, it is possible to derive the surface of the exposed walls.