algorithmic modeling for Rhino

[solved] is there a quick way to add a window to a surface of a zone without exploding the building mass geometry?

It seems that if you want to add an arbitrary window surface to a wall surface, you need to explode the building mass geometry and attach the window to a given wall surface, and assemble all individual surfaces (wall, roof, floor, wall with glazing) as a HB zone.

Is there a efficient way to add a window/glazing surface to a surface in a building mass or an existing HB zone?

adding windows in OpenStudio seems way more efficient ...


Views: 855

Replies are closed for this discussion.

Replies to This Discussion

Hi Grasshope,

This is a very good point. In general you are right and you can add glazing only to surfaces and not zones [which can get fixed by modifying the component. I think it totally makes sense to be able to add all the glazing to the zone at the same time]

At the same time, as far as you draw openings correctly on top of the surfaces (no gap between the opening surface and the wall/roof, and same normal direction), and know how to manage data in Grasshopper, you can do it all at once. check this example where I add a number of windows to two different zones. Honeybee_addHBGlazing component does the matching process inside.


As i said a while ago: Knowledge is power!!

Good one Mostapha :-)


Thanks Abraham! :)

I just made it one level easier. Now you can add multiple random glazing to zones all at once. Thanks Grasshope for bringing this up.


[Trying again! Grasshopper didn't publish it for some reason]

Thanks Abraham! :) I just made it one level easier. Now you can add multiple random glazing to zones all at once. Thanks Grasshope for bringing this up.


Hi Mostapha,

I am having trouble with this new wonderful tool that allows adding a group of windows to various zones. Everything seems to go well until I run the E+ simulation and it abort calculation because a lot of severe errors with the window geometry and zones recognition, so I guess the problem occur when adding multiple child surfaces.  

I tried changing individual windows for WWR and works well. That until I update the components of the file. Now is giving an error too.

Please, it will be very appreciated if anybody can give me a hand with this.

Find detailed explanations to the GH model; I tried to make it as clear as possible.

Although the geometry was internalised, I add the rhino model, just to see if you can give me an extra clue about how adding internal child surfaces with this new method (adding multiples child surfaces), since Chris’s method is not applicable in this example.

Kind Regards





Your file almost worked well for me. The main problem was with the materials that weren't found in the file itself. I used some ASHRAE's and then the simulation ran OK. You should look at the report of the HB_runEnergySimulation. Very useful info is printed there, specially when you have problems in the IDF definition.

I'm not sure if your materials/constructions are in your personal library, but (a word of wisdom) check twice you are using construction definitions for the geometry and not material definition. I have a feeling you are, from what i saw in the report i mentioned before.

After that your file needed a "serious" update, specially with the comfort mapping components. Your components were pretty much out of date.

I think is working fine now (of course, without checking the quality of the results).


Forgot to update one more component.



Hi Abraham,

Thanks a lot for your reply.

I opened your file and everything seems ok when using ASHRAE's materials. But when I try using my own materials E+ generates severe errors until it crush.

I realise there was a mistake in the materials settings, since I was using air gaps from glass into opaque constructions (wall and roofs). Now is fixed


Thanks for your support, everything is going well now.

Kind regards,



Thank you, Mostapha! I just got time to reply this old post.

I manage to use your approach to add glazing surface(s) to individual HB zones, using the following steps:

1. create geometries for zones, import into GH via Brep, and then intersect zone geometries

2. use mass2Zones to convert intersected zone geometries into HB zones, add zone program etc.

3. add glazing surfaces to HB zones individually

4. merge HB zones with glazings added

5. solve adjacency between HB zones with glazings

However, I don't quite understand the data structure in the workflow:

1. in your approach, the output of the addHBGlz is a list with two branches, each having one HB zone (see image 1 below)

2. However, the output of the the solve adjacency component in my workflow has only one branch with 2 items in it, if I leave the output data type as just "Simplify".(see image 2)

3. Only when I use both "Simplify" and "Graft" as data type for HBZonesWADJ node, will the output be come data with 2 branches, each having only one item, i.e. one HB zone, and this allows me to use the BANG! component to choose a given HB zone (see image 3)

May I ask why this is the case in my workflow?



It's because the input for findAdj component (_HBZones) flatten the branches into a single list. You need them in the same branch to find adjacency between zones. Generally speaking this won't cause any issue in your process. 

Thanks for the clarification, Mostapha!

May I ask if solving adjacency can be put before splitting the HB zones list so as to add glazing to zone individually?

Hi Grasshope,

Can you share a simple example and show what so you exactly mean but putting solve adjacency before splitting zones. I want to make sure I won't give you wrong answers.






© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service