Clean Zone Geometry

Hi everybody,

everytime I try to write the idf or osm file from the attached file, Rhino crashes.

Also, some of the boundary conditions aren’t being recognized properly… Does anybody have a clue how this could be fixed?

Cheers (1.24 MB)


Thanks for the clean file that recreates the error. Unfortunately, the error seems to be on McNeel’s or OpenStudio’s side of things and I don’t know if there is much we can do to help on our end. I checked the error log in VisualStudio and it seems the error is the following:

An unhandled exception of type ‘System.StackOverflowException’ occurred in RhinoCommon.dll

One thing I can say is that the GH script will probably run if you export the building in two steps (each with half the zones) and try to merge the teo files in the OpenStudio interface using the method posted here:

I know it’s hacky but let me know if you get the chance to try that out.


Since it happens both for idf and osm it’s probably an issue with Rhino. I’m going to take a look and report back if I could find why it is happening.

The issue seems to be very small surfaces that are created after the intersections because the model is not clean. Some lines are not aligned and are slightly off. After removing small faces I can export the model to OpenStudio but I don’t recommend this approach. How are you generating the geometries?

I have traced the pdf floor plans in Rhino and extruded them… thought it was clean though. I’ll check everything again.

Hi Albert.

I remember that I awe you a video on how generate geometries from floor plans! I put a script together that can help you to clean your file. I put the closed curve for each floor under a separate layer, and used ‘dynamic geometry pipeline’ from Human plugin to bring them to grasshopper. Then projected each group to floor plane. Then I used a script that I originally wrote for another discussion to find the points that are close to each other but don’t align.

I also projected all the curves to XY plane which you can use to check all the plan curves at different floors together. For editing the curves use plan view and set planar to True and then select control points and move them around to make sure the lines are aligned perfectly. Since I’m using Dynamic Geometry Pipeline component each time that you change a line it will recalculate the script. You can alternatively use Grasshopper’s Geometry Pipeline component but then you need to re-run the script after making changes in Rhino.

I attached both Rhino and Grasshopper files. You need to have Human plugin installed to be able to use this script.

Hope it helps,

Mostapha (14.1 KB)
hotel_projected_lines.3dm (336 KB)


Also 2 other suggestions that have made my HBZone geometry creation life easier:

  1. Use a relatively coarse Rhino tolerance of 0.01 meters when starting to trace the plans. This lessens my chances of making really small surfaces in the intersect masses component. This said, if you have zone geometries that you know are clean, DO NOT change the tolerance of the model. It just opens up Pandora’s box
  2. Make sure that you have object snaps on when you trace the plans such that you can snap to the lines that you have already drawn.

Hope this helps,


thanks for the advice! I’ll make sure not to mess with the tolerances…

As for the object snaps, I always use them but sometimes it can be tricky if there are tiny gaps in the underlying floor plan, so one has to be very careful not to snap to the line that lies a nanometer awway from the last one. Thus, when snapping to a neighboring zone it’s better to hide the floor plan in order to reduce the risk of not snapping to the geometry that’s already drawn. Can be annoying though…