I have been intensely re-developing my system interface over the last couple of days. To begin with, I had a completely functioning Grasshopper file that acted as my interface to the system. I implemented some cool tricks in the file to allow me better control of the analytical display and relied heavily on clusters and groups to clean up the script logic. The below image shows that whilst it is clean and ordered – it is still quite extensive and is composed of groups, clusters and scripts.
I stumbled across value lists and filters which allowed me to switch display of the analytics in Rhino. By choosing a new value, Grasshopper would filter geometry, display text and colour ranges to display the chosen analytic. I also made extensive use of boolean switches to control the flow of the script.
Whilst the grasshopper script was working fine – I wanted to take the system to the next level and make it more robust, efficient and extensible. I have spent the last couple of days re-writing my whole grasshopper script as a Rhino plugin in Visual Studio 2012. It has been an amazing journey – and I have now been able to integrate a custom interface and can manage the script engine seamlessly within Rhino. The plugin uses Rhino’s display conduit to visualize analytics temporarily extremely fast in a similar method to grasshopper’s preview geometry. When you load a new file, the analysis can operate instantaneously with very minimal setup (allocating geometry onto layers). In addition to this, as it operates in real time, any changes made to your design will instantly update the analytics and the display so you can get spatial performance feedback as you design!
An important part of the system design is the feedback to the designer during optimization processes. The image below shows the optimization process and the attempt to reinterpret the original design into a new design alternative whilst maintaining the initial configuration. The system uses physics based spring systems to dynamically relax the new solution into an optimized configuration.