Honeybee zoning - Solve Adjc interior/exterior issue

Hello everyone,

I keep running into a problem where shared walls between 2 different zone programs keep being reported as exterior walls. It is a perimeter and a core program for an office layout. The core walls are the issue, see pictures and file below. I played around with zone names and tolerances but nothing will do the trick. What am I missing?

Adjacency_Issue.gh (648.2 KB)

@FEng I’m pretty sure it’s the “donut” shape around your inner open office. If you divide your donut into a non-ring geometry it should work.

Indeed, that does it! Would you mind sharing background info on this?


The short answer is that most geometry methods struggle with donut-shaped geometries, and I’m not certain they behave well with EnergyPlus’s radiation and surface heat balance calculations, so you should always eliminate them in practice.

The longer answer is that honeybee-legacy SplitZone component is an unfinished version of this straight skeleton algorithm which can’t handle holes.

The zone splitter in the [+] libraries (which seems to currently live in Dragonfly[+]) will attempt to split holes correctly.

However, even for this version sometimes you get weird results just due to the algorithm not being robust enough to handle some edge cases. One (very hacky) trick you can use in such cases is to scale your geometries so that the bounding box sides are approximately 1 m, which seems to be a sweet spot for the algorithm’s point tolerances.

The only reliable method is to just manually get rid of donut geometries.

This is great, thank you for sharing and the advice!