Developing Project 1 using Dynamo Visual Programming
By: Azeemuddin Gulam Mohammed
In this post I will explain the procedure and enhancements performed on my Project 1 i.e. AT&T Dallas Cowboys Stadium using visual programming. I was fascinated by many extensive features which Revit's Dynamo application can append to my Parametric Revit Conceptual mass. However, I'll be focusing only on the modifications that I made on my Project 1.
The features that I explored using Visual Programming are as follows.
- Adding Tension trusses to my roof (Conceptual mass).
- Image Override using sun direction.(Project)
- Changing model parameters by changing sun direction(Project).
1. Adding Tension trusses to my roof:
Quickly jumping into my first application, adding Tension trusses to my roof . Before in my project 1, I explained the methodology behind my conceptual mass in detail, however I left the insertion of trusses for my roof with an idea that it can be effectively placed using Dynamo Application.
The truss family that I intended to place in my conceptual was a conventional truss family which can support the Dome. These trusses provide lateral buckling support to the Arches as well, so they have to be perpendicular to the Arches at any point.
This is the Truss family: ( I borrowed this family from BIM curriculum Module 2: Part 3 dataset.)
Fig 1: Adaptive Truss family
As you can notice that there are 3 Adaptive components. Hence I should be able to find that 3 points combinations to insert the family as intended. Just an heads up on the dome that I created in my previous project; I had the dome created by joining 3 surfaces. I open the Dynamo Add-in in my conceptual mass family and select these three faces of my dome.
Our objective is to find the combinations of 3 points for placing our truss families. I have decided to go with these three points
- Starting point of face 1
- Mid point of face 2
- End point of face 3
Let's figure out ways we can extract the co-ordinates of these points.
For the co-ordinates of points along the middle face.
use the Getisoline node with iso direction 0. This will result in the curve parallel to the longer side (x-axis) of the face. Putting the parameter as 0.5 will give us a curve parallel to longer side and passing through mid point of shorter dimension of the face. Use the point at parameter will give us co-ordinates of points along the selected curve. Using code block for array of parameter is quite useful here. I had to use flatten here because for some reason the curve resulting from Getisoline was a nested list. So the use of flatten made the list simple. Apart from the points at the parameters, I need planes at those points. Later I will find the points on my other two faces by intersecting them with the planes. We got what we wanted i.e. co-ordinates of the points on mid points of the face.
Coming to the other two faces. Remember that we have to make these faces into surfaces by using polysurface node. After the surfaces created, I use intersect all node to find the intersecting curves with the planes I created on a curve on middle surface. using curve start/end point we find our the first and third points for our adaptive component.
Create a list with 3 points in each list and insert the adaptive component. The result was. (Roof was hidden).
Video:
Conclusion:
Fig 4: Intersect all and list create
Create a list with 3 points in each list and insert the adaptive component. The result was. (Roof was hidden).
Fig 5: Mass with truss adaptive component.
2. Image Override using Sun direction
One of the exquisite real life features of the AT&T stadium is that the external facade changes with the time of the day. So we can explore this feature very effectively using Dynamo. We can call the sun settings from Revit using Dynamo. Sun settings can be transformed into a vector by simply using a node called Sun direction. So we will be using this vector to assign a color to the element in achieving our objective.
We have our curtain panels placed in the mass family and the family uploaded in our project. (Color override works only at Project level). To begin with, we select a curtain panel on our facewall using 'select model element' node and we retrieve all the instances of the same curtain panel family by using 'Element.Allinstances' node (Install 'clockwork' package for this node to be available in your Dynamo). Extract the faces from these elements using Element.faces node and since there are six surfaces in our curtain panel family, there will be six surfaces in each element. However, we are only concerned to find our the surface facing outward. Perform trail and error to figure out the index of the surface facing outward (Index number 5 in our case). Pay attention to the data management. There can be unusual nested list outputs. Try to manage those lists by flatten and transpose nodes. Find the normal vector of the surface using 'SurfaceAtParameter' node and using U and V values as 0.5. Find the dot product of the surface normal vectors and Sun direction vector and use those values in deciding the colors using color range and Color override.
Fig 6: Creating surfaces of the curtain panels of Facewall.
Fig 7: Finding the dot product and sun settings.
Fig 8: Assigning color and overriding the color in view.
3. Changing Model parameters by changing Sun directions:
In the stadium family, I managed to create a Retractable roof by using adaptive components and I will be using sun direction to make the roof open and closed as and when required. The basic idea is to keep the roof closed when the sun is at or near zenith.
So we select the roof face and find the normal to the surface at a parameter mostly at mid point. We find the dot product of the surface normal and sun direction and setup the model parameter that makes the roof open and close accordingly.
Fig 9: Setting the model parameters by changing sun directio
Fig 10: Results of parameter changes
Notice the changes in the roof with the change in sun direction.
Video:
Conclusion:
Apart from the features of Dynamo I have explored, there are many other uses that can be applied to the Revit at project level like creating Parametric project. i.e. making parametric changes in the project with a change in single parameter, creating floors, roofs etc...,
I ran into some bugs, few of the nodes behaved not as I expected them to be, which game me some trouble and I expect the developers will be resolving in next few updates. Keep looking for the update packages which will provide you with more sophisticated nodes to achieve your objective.
I am very grateful to Dr. Wei Yan for his unceasing support. He was so patient and active in helping me through this project and course and resolving all my doubts promptly and efficiently. This couldn't have been done with out his help.