It's been some years, but I still remember when, during my second year of Architecture school, Carlo Bughi, a good professor I had the chance to meet, thought me about Solar Axonometries*. Since then, I always liked this way of performing daylight analysis but somehow was not as well known as I thought, and the majority of people prefer to have classic axonometry with shadows clearly cast.
Well, with this post I take the chance to thank again my professor and show you all an interesting and efficient method of performing daylight analysis, automatizing the creation of such views!
Solar axonometric: Axonometric perspective from the sun's point of view
easy, extremely easy, maybe too much... we condensed it all in a single Dynamo node that is asking you just to provide the view(s) whose cameras need to be oriented so to match the sun's point of view.
Amazing, isn't it?! In all the views above, the shadows are clearly cast and, as soon as the view turns to be a Solar Axonometry, they don't disappear, they are simply beyond the object represented from the exactly Sun's point of view!
Deep down in the code
Independently if you like or not the solar axonometric, you might find interesting how to reorient a Revit 3D view... so here is the step to step through the python code:
The steps are relatively easy and have been all coded with #Python
Considering that the sun position definitely depends on the true north, the first step is to get the true north angle. For this purpose I created a function that might be used later or simply copy-pasted into another code:
Once we have the north orientation, it starts the interesting part of the code which is looking for collecting the Azimut and Altitude angles for each view and creating two transformations that will go to rotate the simple Y-axis vector.
Yes, indeed an interesting part of the code is the creation of transformations that can be applied altogether to the same object (the Y-axis), returning the expected vector in one single shot readable at line 17.
You might wonder why the .UpdateAllOpenViews() at line 28. Well, this is because, as you can see, everything happened outside of any Transaction! Yes, that was possible because no edits have been performed to the database, though something happened and this something is concerning the User Interface*.
Curiosity: without updating it, you would have not seen any changes, until you were moving something on the windows so to let it update/refresh.
With that said, shared and showed... people that like the classic axonometric view with the shadow, what do you think now? Am I really the only one in love with these views?
Yes, you read it well, in love... this is the reason why I'm sharing this content for St. Valentine's day, and this is the mood I want to cheers you, love and sunshine!