Smart Geometry 2013: Developing the Interface

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.

Generative Spatial Performance Design System

It has been an intense 3 days so far at the Smart Geometry Conference. Here are some developments in generating and optimizing the design solutions. The spaces in the new generated designs have the same relationships as in the original high rise version with quantitative and visual feedback provided by the system. Looking forward to getting my 3D Printed versions of these tomorrow! Photos to come…



Smart Geometry 2013: Digital Intuition and Prediction

The theme for Smart Geometry 2013 London is Constructing for Uncertainty and I am a participant in the Digital Intuition and Prediction cluster championed by Mirco Becker, Stylianos Dristas, David Kosdruy & Juan Subercaseaux. The Smart Geometry conference is focused on a 4-day workshop where 100 international participants come together to develop ideas and techniques that are at the forefront of digital design. This cluster is particularly interesting for me as it relates to my PhD research. The agenda of the cluster lies in the belief that we can augment intuition by enabling prediction via computation. A framework for achieving this considers a design problem as a series of interrelated modules: design generation, analysis, evaluation and optimization.

The Brief

“Starting from a design context of a complexity that is either undrawable or unsolvable by parametrics, novel and specific descriptive systems must be found. Secondly, the design will be evaluated by building a custom analysis system or linking to existing frameworks / solvers. Thirdly, in the optimization phase we explore heuristics, AI, and simulation methods to balance equilibrium between desires and affordances. By this time we will have built a system that describes, evaluates and optimises the design context. Lastly, in the systems-design phase we interrogate this set-up by testing it for sensitivity and robustness, and conclude on its ability to augment intuition.”


My “unsolvable” task is related to architectural spatial design, which can be considered a wicked problem and can have a multitude of solutions for any given design brief. This is heightened at the conceptual stage of design, where a large number of solutions are created and need to be evaluated in a short period of time. This notion of a ‘solution driven’ design process is a common approach to solving design problems and provides expertise to resolve the complex interrelated design variables. Whilst this can be achieved, there is an argument that the repertoire of organisational patterns, design precedent knowledge and the precise criteria and computation of spatial evaluation required for generative exploration is more than what can be expected from the accumulated knowledge of an experienced architect. This project seeks to augment the designers intuition through the construction of a design support system focused on spatial performance. This Generative Spatial Performance Design System is described below:


Given a sketch design with an initial spatial configuration, the intent of the system is to have the capability to search a corpus of design precedents for comparable designs, and utilise the precedent knowledge to generate informed variations for conceptual spatial design exploration. The system can be decomposed into a series of inter-related modules: spatial knowledge capture, design filtering, generative design exploration and evaluation.


A key component of the system is the structuring of precedent / sketch designs into a specific format suitable for spatial analysis. This is achieved through the construction of a Parametric Spatial Configuration Rig composed of a series of spaces and a network graph identifying the building configuration.


Once the Parametric Spatial Configuration Rig has been constructed, the building can be spatially analyzed. A series of metric are calculated including standard room measurements as well as spatial configuration analytics derived from Space Syntax techniques. These analytics can be visualised on the precedent / sketch design for immediate spatial configuration feedback.

To make the system effective, a corpus of design precedents need to be captured and stored into a custom designed spatial database. This database can be interrogated for comparable designs which in itself is a multi-objective search criteria that can be tailored by a designer’s preference.


Once a design precedent has been determined as a suitable target, the system should be able to generate a series of alternate informed spatial configurations. Currently the system can achieve this through two approaches. The first compares a designers initial sketch to the target precedent found on the spatial database. The two buildings are functionally mapped together to allow the formation of a hybrid network which can be biased towards the source or target design. The image below shows an equally weighted hybrid configuration.

Whilst the first approach attempts to form a new novel configuration, the second approach assumes the target precedent to be the desired configuration and uses this as the source for generating new designs. The process for generating new designs involves a parametric rig that reconfigures the network into a new building footprint. This reconfiguration seperates out the spatial components into the new domain, however connects them with “springs” to ensure they have the same configuration topology. An optimisation routine is then applied that dynamically relaxes the new layout into novel design configurations that matches the target configuration in a new context.

IDDA Website Launched

The Institute of Digital Design Australia has a new website.

Focused workshops are now available in your preferred software, to upskill you and your team, ensuring that techniques do not limit your design potential.

Learn contemporary design software including Rhino, Grasshopper and Revit; digital design techniques including Parametric Design and Scripting; and software integration.

Algorithmic Design Elective

Offered for the first time in 2011, this class is an introduction to algorithmic design techniques for the generation and analysis of architectural organisations of space.  Through a series of lectures and practical examples, we will theoretically investigate recursion through l-systems and fractal growth; non-linear dynamics; and complex systems such as cellular automata, autonomous agents, self-organisation and adaption.  We will accomplish this through high level research and the development of custom software in Rhino.

With the release of Rhino 5.0, we now have access to the Python programming language within Rhino.  Python is a modular, object-oriented language with the potential to move beyond scripting into developing custom-written software for architectural design and development.  It is cross-platform and software independent.

Instructor: Rob Beson website design

I have been recently working on a number of website designs including the new UTS Architecture website. This has become a portal for allowing staff and students to upload the latest work and news happening within the School of Architecture at UTS. This website will continue to evolve and content is being published daily, so be sure to keep your eye on it.

Smart Geometry 2011: Improving the Interface

There were several stages of development today with the C++ software interface. There has been an improvement to the user interface, allowing better visualisation of the inputs with ability to manipulate them. This can graphically be seen clearer in the geometry window.

Now that the input data is quite flexible through image maps, we focused on the base geometry – as this was still limited as a 2D plane. We wanted to improve the versatility of this by allowing the importing of geometry from Rhino. In addition to this, we added code to check if the file has been updated to allow for a realtime update as we progressed.

Smart Geometry 2011: Creating Variable Behaviours

Now that I have customised the software control and the relationships of the hyperbolas, I have an easy method of creating variation. The methods of altering the surface texture involves modification to the quantity of cells, inner radius and angle of hyperbola. These controls have a direct impact on both the porosity and depth of the surface. The development of thinking has progressed from porosity to texture to banding to ridges and finally decay.

Development of User Interface in Visual Studio C++ w/ Open Cascade and QT Designer






Smart Geometry 2011: Development of Parametric Rig

Day One at SG 2011, Copenhagen was a productive day. I am a part of the Responsive Acoustic Surfaces cluster.

We began with a series of introduction lectures from Mark and Jane which introduced the background to the project, essentially identifying the opportunity for further research into the acoustical properties of doubly ruled surfaces. This research was introduced in response to the feedback being received from the Sagrada Familia regarding the positive acoustic behaviour leading to the hypothesis that the complex surface detail may lead to sound scattering, essentially reducing the effect of echo’s in the space. From my understanding, plaster is typically a hard material that reflects sounds readily. The task of this workshop would be to explore the possibilities of introducing variation into a flat surface in an attempt to understand if this contributes positively to the sound scattering – something that is quite difficult to measure typically.

We were then introduced to the sound testing equipment by Tobias which in turn partly setup the strategy for how we were to proceed with the workshop. We have access to an acoustical chamber that will measure the scattering coefficient of sound through a series of calculations. The type of analysis for sound scattering is quite limited in comparison with those available for absorption. With this in mind, we were set the task of designing options to test in this chamber.

This led onto the start of the design process. We were introduced by Alex to the software we would be using. Basically we combined the Open Cascade geometry library with QT interface tools through the C++ programming language. Open Cascade allows the construction of complex geometry and calculates intersections and booleans very accurately. We were provided a template that allowed an initial experimentation into setting out a grid of hyperboloid revolutions onto a surface. The controls allowed the manipulation of spacing, count and angles. These were linked into an attractor which allowed to distribute variable parameters across the surface.

As with any parametric setup, the constraints and relationships allow you to manipulate the design which allows flexibility, however it is also constraining and forces the designer into a certain mode of operation. Part of the workshop is focused around exploring the software interface and allowing the construction of new parametric rigs to control the surface apertures.

An initial way to modify the parametric structure would involve modifying the positions of the hyperbolas. The demo rig sets up a grid topology and instantiates geometry based on that. I attempted to modify this system in two ways:

  • The first approach was to open up a new method that would allow the placement of points on the surface via UV coordinates rather than a grid. Essentially this would open the option to construct grids or point placement through various algorithms rather than be limited to a grid. I constructed a test rig that would divide the surface evenly in one direction with a variable division in the other direction. This sets up a grid that has a variety of bands. The spacing could be used to determine the radius of the hyperbolas and hence add banding variation into the wall apertures.
  • The second approach was to control the radius variation graphically rather than algorithmically. This idea was suggested by Ralf and involved reading the gray values from an image and encoding that into values. Basically this allows the control of the system to be understood graphically through the construction of grayscale maps. This makes it quite easy to gradient patterns and even combine multiple logics through layering up logics in photoshop.

The final development was a technical improvement on the code. Basically the original demo code would generate the complex hyperbola surfaces when any slider was moved. As the model became more detailed, this would create a strain on the computer and often crash. In order to resolve this, I developed a method that would only display a graphical representation of the surface (a basic circle with a changing radius) that would indicate the behaviour of the system. The system can then be explored and a search for a solution is not limited to computational power. Once the solution is determined, this can then be exported into the IGES format which is then taken into Digital Project for further refinement.

The refinement in Digital Project involves thickening each surface and splitting it with its neighbour. This is completed using a macro developed by Alex and allows for the quick propogation of booleans to construct a solid ready for 3D Printing. The model is then split into four quadrants to meet the manufacturing limits of the 3D Printer.

Grasshopper – Reading Values from Excel: Part 2

This is a two part tutorial on how to read values from Excel into Grasshopper.

Part 1 will describe a technique for reading excel data through a CSV file and extracting the various values into data lists for you to work with.
Part 2 will apply this to a parametric bench example that has variables to control several profiles.

I have attached a grasshopper file and a CSV file for this demonstration. In the second part, I will demonstrate a method of having a user friendly interface in Excel.

Download source files.

The basic process:

  1. Read CSV files and extract each variable set as a branch
  2. Graft the variable lists to allow each profile to use its related variables
  3. Construct profiles based on moving points and variable values
  4. Loft to form bench
  5. Update Excel > Save as CSV > See changes

I have included two grasshopper rigs – The parametric bench with sliders and the parametric bench with excel link.

With the Sliders, you can link in to Galapagos if you have a fitness function. You can also tweak and sculpt the bench on the spot.
With the Excel, you may apply macros and functions to provide mathematical control over your profile shapes. Also a slight tweaking of the grasshopper file will allow the number of profiles to be dependent on how many entries there are in Excel. (Calculate number of rows in Excel, bring that in as a value, divide a line by that number to get your profile origin points).

Grasshopper – Reading Values from Excel: Part 1

This is a two part tutorial on how to read values from Excel into Grasshopper.

Part 1 will describe a technique for reading excel data through a CSV file and extracting the various values into data lists for you to work with.
Part 2 will apply this to a parametric bench example that has variables to control several profiles.

I have attached a grasshopper file and a CSV file for this demonstration. In the second part, I will demonstrate a method of having a user friendly interface in Excel.

Download source files.

The basic process:

  1. Read CSV File
  2. Split the values by ‘,’
  3. Flip the data structure so that each column becomes a branch
  4. Extract the branch you want
  5. Shift the list by 1 to remove the header

Python Bootcamp: Defining a Class

As part of the Skills Bootcamp conducted at The University of Technology Sydney, I have developed a series of Python Examples that step through the generation of a twisted tower using Classes. The source code for the example is attached below.

- : Basic Structure of a Python Class
- : Defining a Basic Slab Class
- : Adding rotation property to Slab Class
- : Defining a series of slabs using a For Loop
- : Extracting the Corner Points and creating Corner Columns
- : Adding a Core
- : Adding multiple rotated slabs per level and Boolean Commands


This is intended to be an intro into using Python, Classes and Rhino 5.0. If you have any suggestions to improve the code or want to develop the example further, please do so and feel free to email me the modifications!



Self Organising Spaces

An initial script in development that explores the embedding of type or function into particle systems and allowing them to self organise over a grid. Once I can improve the self-organising behaviour and allow more designer input, I will let it loose on some more exciting generated floor plans and hopefully setup a good workflow between processing and generative components or grasshopper.
Click to see the processing animation. (Seems to work better in Firefox – some issues with IE.)

Grasshopper to Multiframe Link


I have uploaded a Grasshopper to Multiframe link that I developed for my students this semester.  The new components can take your linework, apply loads in Grasshopper and transfer it into MultiFrame. Although it can’t do everything at the moment, it allows you to take advantage of the Rhino/Grasshopper modelling environment to setting up basic structures in MultiFrame.

Feel free to download it from the scripts page.

Grasshopper to Multiframe Link Script


I have been working up a custom tool in Grasshopper that can take your linework, apply loads in Grasshopper and transfer it into MultiFrame. Although it can’t do everything at the moment, it allows you to take advantage of the Rhino/Grasshopper modelling environment to setting up basic structures in MultiFrame.

There are 4 Files:
- BC_Custom.gha
- Interop.Multiframe.dll
Put These in ..\Rhinoceros 4.0\Plug-ins\Grasshopper\Components

- AnalyseFrame.3dm (Rhino Example File)
- AnalyseFrame.ghx (Grasshopper Example File)

I have created two new components in Grasshopper under the extra tab – MultiFrame and Load.

The Load takes in several arguments
C – Curves
P – Load Points
M – Magnitude

The Multiframe takes in several arguments…
C – Curves (Must use same curve set as above)
F – Fix points that touch Z = 0
E – Load Members (Get From Load Component)
S – Position on Member (Get From Load Component)
M – Magnitude (Get From Load Component)
U – Update. (Default to False, Once everything is connected, switch to True to activate Multiframe)

Once update is set to true, Multiframe will launch and start constructing your Rhino Geometry with Loads and Load Cases – Fixing anything that is touching the ground as a fixed support – ready to analyse.

Download – 101008_GH_MultiFrame Link

Australian Computational Design Group in Architecture

Last Monday was the first meeting for the Australian Compuational Design in Architecture group. An excellent initiative by Ben Doherty, BVN Architects, the lineup of speakers included Sarah Benton (USyd), Sean Ahlquist (ICD), Gabriele Ulaco (USyd), Jeremy Harkins (UNSW) and Sam Yasseen from S.C.R.I.P.T.

The group is set to meet at 6 week intervals, so if you are in the field and have some interesting work to show, visit for the latest news.

Photo by Ben Doherty.

Sean Ahlquist Masterclass

Over the last two weeks, the Masters of Advanced Architecture students participated in an intensive Masterclass with Sean Ahlquist from the Institute for Computational Design at the University of Stuttgart in Germany.

Here is an excerpt from the brief describing the task at hand.

“The challenge in designing tension-active systems (where that application of tension force defines a material’s shape) is that their forms do not follow simple mathematical geometric descriptions. This does offer an advantage, though. By avoiding the discreet definition of geometry, and concentrating on the simulation of how force influences form (defining material behaviour), we can more thoroughly investigate the different formal and functional possibilities of tension-active structures – we are not locked into a particular geometric strategy. This is what we can call “form without geometry.” Utilizing a program that has been developed with Particle Systems and Springs in Processing, we will investigate, in this workshop, the variation and manipulation of the fundamental relationships between form and force.

This workshop will involve a series of experiments in developing computational and physical models for multi-capacitive tension-active architectural systems. The functionality will emerge from a system comprised of tensioned textile (termed ‘membranes’) and tensioned mesh (termed ‘cable-net’) elements. As a tension-active system, the form and arrangement of these materials elements is dictated primarily by the application of tension force. We will also concentrate, beyond the formal qualities of these translucent lightweight structures, on the ability to apply photo luminescent materials to the membranes so that they may act as energy gathering and light emitting surfaces.”

The masterclass resulted in the installation of two tension-active structures, one suspended in a four-storey atrium. The students were required to experiment with physical models and computational models before assembling the final works. Feel free to visit the Faculty of Design, Architecture and Building UTS on Harris Street, Ultimo to see the installation.

I would like to thank Sean for coming down to Sydney – His extensive knowledge and enthusiasm was well received by the students and staff at UTS.

Generate Mesh

An example script for my students this semester for an architectural studio focused on the integration of parametric structural design systems. Go to the scripts page to get a copy of this Grasshopper script that takes a generic curve and generates a primary and secondary support mesh around it.

Generated Mesh GH Script

Generated Mesh Grasshopper Script

This grasshopper script (0.6.0059) will:

  1. Take a generic curve
  2. Divide it by Distance
  3. Create a field of random points around each joint
  4. Connect each joint to its closest mesh point
  5. Generated a minimum distance connected mesh

The parameters that can be adjusted include joint spacing, maximum mesh displacement from joint, number of mesh points per joint. Adjusting the X Y Z sliders will allow you to generate a variety of designs.

Certified in Revit Architecture 2010 and AutoCAD 2010


I am now an official Autodesk Certified Professional / Associate in Revit Architecture 2010 and AutoCAD 2010. Autodesk Certification represents a qualification that gives creditability about your Autodesk competency with particular Autodesk software.

Authorized Rhino Training Centre.

The Institute of Digital Design Australia is now an Authorized Rhino Training Centre.

We will be providing Rhino workshops specifically for the Architectural / Design industry allowing you to take advantage of this powerful software and integrate design workflows into your documentation software for non-standard building solutions.

The Institute of Digital Design Australia

The Institute of Digtial Design Australia has now been launched

Our mission is to upskill the design profession by teaching contemporary design software, digital design techniques and software integration, in order to build the design intelligence of architects, engineers and designers. Focused workshops are now available on site in your preferred software (Revit, Rhino, Grasshopper, AutoCAD, Processing, Sketchup, Digital Project, Adobe Creative Suite + more) to upskill you and your team, ensuring that techniques do not limit your design potential.

Contact for more details.

CAADRIA 2010 : New Frontiers

The CAADRIA conference for 2010 was held at the Chinese University of Hong Kong. Two of my papers outlining recent research were accepted and published in the conference proceedings “New Frontiers CAADRIA 2010″.

The first paper, titled “Scalability: Parametric Strategies from Exoskeletons to the City” outlined initial research into an overall framework for working with parametric systems across multiple scales. It proposes a breakdown of the digital design process into methodologies for data storage, geometric relationships and the search for solutions via a series of parametric case studies using Generative Components. This paper received the Best Presentation Award out of the 59 papers presented over 11 categories.

The second paper was co-authored with Anthony Burke, Dan Hill and Jason McDermott, titled  “Urban Micro-Informatics” outlined a case study into the aggregation of high resolution urban modelling through aggregating public information sources via data mining techniques.

Both papers can be accessed via the cumincad database, as well as my previous paper from the 2008 CAADRIA conference “Erosive Fluidity”, for which I was awared Young CAADRIA of the year.

Deep Surfaces

Smart Geometry Workshop 2010

Smart Geometry 2010 Workshop

The Smart Geometry conference involves a 4-day workshop and then 2 days of talks. This year, the workshop held at the Institute for Advanced Architecture of Catalonia integrated digital manufacturing with the theme of working prototypes – an unprecedented move in the history of Smart Geometry. The results were quite amazing, clusters of students, architects, engineers and mathematicians working towards innovative design methods and construction techniques.

I was in the Deep Surfaces cluster with Achim Menges and Sean Alqhuist which explored the design and construction of an intricate multi-layered tensioned fabric structure. The workflow was divided into multiple areas…

Topology Design and Form Finding Simulations
Using Rhino we constructed the space and explored various anchor points. In doing so, we could determine topological features of the structure such as the introduction of holes. The data could then be transferred into Processing to run form-finding simulations which would then output information to setout the calculated pretensioned cable net and the geometry for each fabric element.

Cable Net Construction
The output provided a map for how to construct the cable net. Basically we had to fix the net at specific points to ensure that when we attach the fabric, it will be pretensioned correctly. We then drilled the anchor points into the appropriate locations in the wall and floor and pretensioned the net, awaiting the fabric elements.

Fabric Unfolding and Constructing
The unfolding of the doubly surface fabric elements proved to be the most challenging component. This was tackled in Generative Components and we came across issues regarding the elasticity of the material and correct methodology for unfolding such complicated forms. The technique involved splittling each element in half, and unrolling them taking into account angle and length of curvatures multiplied with a stretching factor. After unfolding the panels, we were able to cut them out from fabric and stitch them together using sewing machines. They were then ready to be connected to the outer cable net.

Finally after many sleepless nights (we finished at 7am on our final day), we were able to tension the fabric into its final form for the Smart Geometry Reception.

Smart Geometry 2010

I will be attending the Smart Geometry Conference ‘Working Prototypes’ in Barcelona over the next week. The event consists of a four day workshop, shop talk, symposium and reception.
Stay tuned for some images!

Fibre Structural Systems

Masters of Digital Architecture

Urban Proximity Analysis

Masters of Digital Architecture

Parametric Massing Tool

Masters of Digital Architecture

Vertical Ecologies

Masters of Digital Architecture

Watching The Street

Masters of Digital Architecture Masterclass

24 Plus 1

Bachelor of Architecture

Erosive Fluidity

Bachelor of Architecture Launched