When translating complex Rhino/Grasshopper architectural massing models into Honeybee rooms for Radiance daylighting or OpenStudio energy simulations, tiny sliver faces and inverted window normal vectors frequently cause rtrace ray-leakage or OS_PortList adjacency mismatches.
Before serializing rooms to .hbjson, running a strict coplanarity and outward-normal check in Grasshopper Python prevents broken aperture intersections:
import Rhino.Geometry as rg
def validate_brep_room(brep, tol=0.001):
if not brep.IsSolid:
return False, "Open B-Rep shell detected"
if brep.SolidOrientation == rg.BrepSolidOrientation.Inward:
brep.Flip()
return True, f"Valid closed volume: {brep.GetVolume():.3f} m3"
For teams exchanging BIM geometry across IFC, STEP, and DXF pipelines before environmental analysis, we also maintain an open schema reference at CADGuide.tools ISO 16739 IFC & CAD Interoperability Reference.
What tolerance threshold are folks using in Rhino 8 when running HB Intersect Solids on curved curtain-wall facades?