Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

@jugonzal07 I think by intersect here you are referring to two surfaces which share a common edge, as opposed to intersect surfaces related to surface matching, where you have to split a surface into two more elements to be able to match it to the adjacent zone.

We have a method to calculate building perimeter by story that works very much as you describe. It does have some limitations but it works in most cases. It creates an array of edges in a space and then store surfaces that use that edge. It finds an edge which has an exterior wall, and also has a ground or interior exposed floor. It then adds these together. This is in the openstudio-extension gem which is included with OpenStudio much like the openstudio-standards gem. https://github.com/NREL/openstudio-extension-gem/blob/5518fbdbc2faf3746dce3947a33556f3be82acef/lib/openstudio/extension/core/os_lib_geometry.rb#L1134

An alternative approach I have played with is using method in OpenStudio that merges multiple polygons into a single polygon. Then you can just sum the length of the edges. I have used this method to create a geojson footprint from an OpenStudio model. There were some issues with this so it was not stable enough for me to want to use to calculate perimeter yet but if you want to explore that I can find a link to it.