Adjust shading panel depending on sun angle


My idea was to create a tent structure like this with shading umbrellas:

I try to adjust the umbrellas depending the angle between a vector of the normal of a panel and the sun vector.

On the bottom right of my canvas

are these angles, but they are all less than 90. There should be at least some with more than 90°, right?

You can here ( ) see that the umbrellas on the shaded side of the tent are open (they should be closed).

What do you think is the best way to achieve suitable umbrella openings on all panels depending on the sun ? What should I change in my script?

canvas screenshots:

revit family:

dynamo file:

I have used Dynamo version

thank you!


When you input the values to your elements, I noticed you divide by 90. Shouldn’t you instead be using the “Math.DegreesToRadians” node ? (angle in degrees * PI /180)


I divide the angle by 90 because the largest angle in the list is about 90 and my umbrella need a value between 0 (open) and 1 (closed). I don’t know why it is only 90. Where do u think I should use the “Math.DegreesToRadians” node ?



Sorry, I thought the umbrella family uses an angle input.


I’m not sure what’s up with the default angle between vectors node, but it’s not giving me the expected angles. Try the one from the lunchbox package instead:





Here’s my take on it: save_dev_21.03.15


thanks Dimitar!! what would u use to open all umbrellas with a bigger angle of 70 ? my attempt was not successful :confused:



Thomas, I’d try with a formula node. The syntax is pretty similar to the if function in excel - evaluate item, if over max, take max, otherwise take item:



thank you Dimitar =)