I hope you are excited to read this post as I think this post is showcases a lot of cool tech working together. The exercise has taken around 2 weeks with my deadline on Monday of which I have gains skills in excel functions and a recursion in Dynamo.
We have a rather large project (4x42 storey towers, single podium) under construction at the moment that I'm helping out with site co-ordination and 4D planning.
Now storing all these on site needs to be managed very carefully it's a day to pour a panel, then it needs to sit for a number of days to set before being installed onsite. So critical management of the pouring schedule and storage is critical to met our installation target dates, as well as be able to react to changes to ensure we are never short.
I was tasked with developing a simulation for our precast manager of the precast site, as well as asked by the precast manager to develop a spreadsheet that would enable him to manage the panels.
So to begin with I developed a spreadsheet that would address the following goals;
- Get the current panel types and numbers required directly from Revit.
- Get the installation tasks and dates directly from Microsoft Project
- Automatically calculate and develop a Just in Time pour/install sequence
- Allow the Pre-cast manager to override the Just in Time and update automatically
- Present all this information showing how busy each mold will be a week
- Show by Type each panel pouring and stacking locations as well as ready or not ready
- Automatically colour highlight errors, problems and issues for easy management.
However I managed to complete the schedule and it look quite pretty here is a week by week look at a Panel type, stacking optimizer and set out..
Orange means in storage but not set properly, green is set, installation numbers and setout all below. The entire spreadsheet is complete automated.
Once completed and the precast manager was happy that he could work with the data, I then started to try and figure out how I would actually show a week by week analysis of a pre-cast yard.
First we needed to model the yard with our anticipated requirements.
Firstly we needed a model of the yard layout, so we grabbed all the panels and dumped over the project and made it look pretty like below.
Then I went to Navisworks however the best I could make it do was a bunch of lies butcher the 5D pricing simulate whilst linking the schedule to show the total number of panels and putting an addition or subtraction option. Works great for the logical sequence of total panels poured, pretty useless for a pre-cast yard layout. Building a model that would actually show the proper number of panels, and update them to show whether they are ready or not wasn't going to happen, I then also tried Vico but again these tools are for construction install and complete or install and demolish, not install update remove install update remove etc.... I needed some parametric :)
So I had a good think and the only thing I could think of was Zach Kron's Dynamo solar optimization installer you can find out about it here.
The key thing this was doing was grabbing a Revit object manipulating it and saving/reading data from a file multiple times, which is basically what I wanted to do!!
The key was enabling Revit objects to be updated from each panel types stacking locations as well as show whether panels are ready or not ready. Now the stacking page in excel only shows one panel at a time so in addition to getting the values for a Panel I would then need to iterate through the panel types one at a time and then get the stack numbers and update the values for each stack of the panel types.
This would effectively give me a week by week view of what the precast yard will look like based on the updated Revit data, installation dates, actual to date and the pre-cast managers forecasting all in one. Plus I would be able to tag and print out if required the information!!!!
Dynamo to the rescue.... sort of.....
Before doing this exercise I considered myself an ok user of Dynamo, having given a talk at RTCAU recently however this exercise really made flex the legs of this powerful addon :)
First off I need to update my single Panel family into the stack Panel family. This involved making sure all the types were loaded in, an array and empty options where available and it had a value for the stack height. I have a quick API that updates the stack panel instance parameter with the name of the panel nested in for checking against the spreadsheet.
I started by downloading Dynamo 7.1 and getting stuck into it. I was able to pretty quickly develop something that would read a single stack and update it.
Delving into the world of dynamo recursion..
Next came the really hard part, now for those who don't know what the hell recursion is, basically it's software term for something that can call itself. If your familiar with Fibonacci sequences this is a pretty good example. This allows you to loop your Dynamo node to enable to check each stack 1 at a time rather then make 1 million nodes to counter for each variance.
To say I encountered difficulty would be an understatement, first was the dynamo examples of direct recursion simply don't work, and there's not alot of advertising that they don't work anymore. After a few hours of feeling like an idiot I emailed the Autodesk guys and they told me it's now broken has been for a while and they hope to have it back soon, however there are some clever ways to do it so go and check those out. Due to the lack of nodes, familiarity and examples in 7.1 I ended up ditching it and jumping back to 0.6.3 which had alot more examples including both the Solar Optimizer and nodes I thought I needed for input/out of excel files that were not in 7.1.
So I checked out Zac Kron's (yes Zac again :)) example on Fibonacci sequences and started to pull it all apart, completely rebuilt my 7.1 script in 0.6.3 which was no easy task doing direct translation and discovered that the AND node more works like the OR node (hint just use a formula to solve these problems in 0.6.3).
By this stage I was well into Saturday evening with my deadline and my wife both looming over me, neither extremely happy with my progress, considering I have to present everything at the coordination meeting on Monday to the team.
So I began Sunday morning with some new energy and armed with the Fibonacci example.
In order to get all the stacks ready for the panel type I need to iterate through all the stack numbers and update the values of each family. So with some push and shove I got this working pretty easily.
Now the hard part, in order to get the panel types to update I actually need to write data from Dynamo to excel with the number of each panel so it updates the excel stacking data and then goes and gets the information. This was also difficult :) in part do to the fact that Dynamo will actually override all the other data on that sheet when it updates a single value so be EXTRA CAREFUL I was actually working on my master spreadsheet when I did this and had to rewrite a bunch of formula's and lost an hour.
The end of the tale is I managed to complete the spreadsheet, Revit Pre-cast Planner 5000 with time to have dinner and write this blog update :). With a focus on using Revit and Dynamo to enhance a number of our planning activities utilizing part of the the 4D that aren't traditional build this or build that. I think it's has the ability to have great impact on construct works and producing live documentation.
The key with this moving forward is we now have a pretty solid tool for planning precast locations on this job and future jobs with precast being more utilized. Whilst some people will use a factory, buying the molds and DIY is cheaper as long as you can find the storage this, and I hope this tool will help our teams in the future optimize our spaces, and casting sequences.
Without further ado I give you Precast Planner 5000 the movie!!!
My first ever YouTube upload.
Don't expect high quality video editing thought :)
ps. Now I have completed it, I will try and build the updated version for 7.1 and see how difficult it would be.