Orientation Study

I recently received multiple questions about the orientation study and I hope this discussion answers the majority of them.


Orientation study is a feature integrated to the analysis components (radiation, sunlight-hours and view analysis) which let you study the effect of the orientation of your building and the analysis result. When you come to a question similar to “what is the orientation that the building receives the most/least amount of radiation?” is probably the right time to use this component.


I’ll try to explain the steps using a simple example. Here is my design geometries. The building in the center is the building to be designed and the rest of the buildings are context. I want to see the effect of orientation on the amount of the radiation on the test building surfaces from the start of Oct. to the end of Feb. for Chicago.

First I need to set up the normal radiation analysis and run it for the building as it is right now. [I’m not going to explain how you can set up this since you can find it in the sample file (**[Download the sample file from here](https://www.box.com/s/06t7b2yfhg0gjhedybbj)**)]

Now I need to set up the parameters for orientation study using orientationStudyPar component. You can find it under the Extra tab:

At minimum I need to input the divisionAngle, and the totalAngle and set runTheStudy to True. In this case I put 45 for divisionAngle and 180 for the totalAngle which means I want the study to be run for angles 0, 45, 90, 135 and 180.

[Note1: The divisionAngle should be divisible by totalAngle.]

[Note 2: If you don’t provide any point for the basePoint, the component will use the center of the geometry as the center of the rotation.]

[Note 3: You can also rotate the context with the geometry! Normally you don’t have the chance to change the context to make your design work but if you got lucky the rotateContext input is for you! Set it to True. The default is set to False.]

You’re all set for the orientation study, just connect the orientationStudyPar output to OrientationStudyP input in the component and wait for the result!

The component will run the study for all the orientations and preview the latest geometry. To see the result just grab a quick graph and connect it to totalRadiation. As you can see in the graph 135 is the orientation that I receive the maximum radiation. Dang!

If you want to see all the result geometries set bakeIt to True, and the result will be baked under LadyBug> RadaitionStudy>[projectname]> . The layer name starts with a number which is the totalRadiation.


orientationStudy_SampleFile.gh (66.5 KB)


I’m new using Ladybug, i just download the orientation study sample file and i get the following bug, not sure if this is because i’m using the password protected version or a win 8 problem, any thoughts? thanks its a really powerful friend this ladybug

Hi Jose,

Welcome to the camp! :wink:

Locked version and unlocked version are the same code. It’s a Windows 8 permission issue. Can you try to sign in as Administrator and let me know if that solves the problem?

Another option is to change the working directory to a folder that you have the full permissions.

I’m running Ladybug on Windows 8 on my laptop with no problem. It’s going to be a common problem thoughand I should probably find a way to run the batch files in “Elevated Mode” or re-write GenCumulativeSky in Python so Ladybug doesn’t have to run it as a batch file. I added this as an issue.

Thank you for reporting and let me know if any of my suggestions solves the problem.


Thanks for your options, i gave permissions to the carpets (image), and ran rhino as administrator but appeared the same problem. Will check some others possibilities and keep you noted.



Hi Jose!

Have you tried to run it manually by double clicking on the bat file? Go to c:\ladybug\SANTIAGO_CHL and try to manually execute the SANTIAGO_CHL_cumulativeSky.bat file. If the same error pops up then I assume GenCumulativeSky.exe hasn’t been fully downloaded on your system. You can download it from here, copy it to c:\ladybug and retry. I hope it solves the problem.



It works perfect!!! Thanks, will give it a try this night.



Jose Miguel

Cool! Thank you for letting me know. Good luck with your studies. Cheers! -Mostapha

Hi everybody,

I’ve just completed the OrientationStudy’s definition… but as soon as I’ve connected the OrientationStudy component to the Radiation Analysis, it happened this:

The balloon says: "Solution exception:index out of range: 6"

I think I’ve used the same parameter shown on this tutorial… so I can’t understand the reason.



I know that it’s probably a very stupid problem… but I can’t solve it… Help!

Not so stupid Leonardo. There is a problem with the orientationStudy component.

The whole problem says:

Runtime error (IndexOutOfRangeException): index out of range: 6
line 595, in readLegendParameters, “<string>”
line 217, in resultVisualization, “<string>”
line 390, in main, “<string>”
line 440, in script

The solution must be very simple. Right Mostapha? :slight_smile:


mmmm… I’m not sure I understand. Is it a coding problem? If it so I’ll wait for Mostapha :wink:

Others will call it a bug :slight_smile:

If you don’t mind me asking, could someone of the developers tell me if this bug will be fixed?

Hi Leonardo, I’m taking a look at this. It looks like a bug.

Leonardo, Check the attached file. It is fixed now.

orientationStudy_fixed.gh (364 KB)

Now it works perfectly! Thank you indeed Mostapha :smiley:

Hi Mostapha

Can you document what was wrong and/or update the component? I’ve copied the new orientation study node into my document where I am running a sunlight hour analysis and there is still the bug. Same error. So presumably you only updated the radiation analysis component.


Hi Paul. You are right. SunlightHours analysis should have the same issue and also the view analysis component. Here is the changes:


It would be great if you can get it fixed and send a pull request on github.

Hi Mostapha

I had a look at the gitHub code. I tried to fix it but couldn’t get it to work. Are you able to take a look? If/when you update, are you just updating gitHub or are you creating a new version in foor4rhino?

The other thing that I would like to do (but can’t), is for the sunlight hours analysis component to not join/weld the sunlightHoursMesh output. It would be great if they could be color coded based on all the faces (so legend applies to all meshes) but that separate colored meshes are returned. Otherwise its near impossible to split meshes in Grasshopper. Basically I have rooms (surfaces) and I want to know which rooms comply and which don’t. I think to fix this, its the ‘ladybug_ResultVisualization’ function?

Thanks for your help.

Hi Paul,

I fixed the bug. We only update the files on food4Rhino for every release so you need to download it from github (or use update component).

Back to your question for each surface, the results are grafted for each input surface. So if you already break the test surfaces for each room you only need to average the results and you will have a single number for each. You can match them with original input surfaces or use “analysisMesh” output which is unjoined meshes.

I hope it helps,