Direct sunlight hours, points

Hi everyone!

I have used the DirectSunHours-component for quite a while now and it is a great component, thanks!

The building code in my country has however got updated so I’m going through my grasshopper file and adopting the code to it. Earlier I have been looking at how much sunlight each window gets so I have used breps of windows as input to the DirectSunHours-component. Now instead I need to have a specific point of each window as input. The component doesn’t accept points as input. Do you have a workaround to this?


Hi Julia,

A few ideas, hopefully one is useful to you.

If you use the Honeybee direct sun component you can create a HB sensor grid and run it that way using Radiance.

Another option would be to try to mesh each of your windows as quads if they are rectangular, and input those meshes (each with one face per window) as geometry into direct sun hours. Then you should get one result per window out.

Alternatively, if you double click on the LB direct sun it’ll open the code, with a bit of python interpretation you can see how the analysis points are being generated from your input geometry in your code. You could modify the code slightly to accept points and vectors and skip the initial geometry meshing done in the code.

Hope that makes some sense, feel free to follow up.



Hello Julia,

In my opinion the simplest solution is to insert the point you are interested to analyze (focus point) and after the analysis (with the grid), you just need to use the GH closest_point component, to read only the minutes of the direct sun hours of your specific “focus point”.

Hope it helps


Thank you for your input! I tried a different solutions and based on my limited knowledge LaFleur’s answer seemed to be the easiest and fastest solution to me.

I used the window breps as input for the analysis (382 trimmed surfaces), as output I got 791 points. So then I used the closest point component to get the index of the points that were interesting which seemed to align really well with the desired points. It was practically the offset distance that was the difference.

After that I used the LB Deconstruct matrix and matched it with the desired branch indexes. Then I got the result of every timestep for each point.

Another bonus is that I could use a flattened list as input geometry and get grafted output per point with the LB deconstruct matrix. I havn’t been able to do this before with the old components. This way it decreases the compution time drastically.

Thank you both again!