SLATTED FACADE: EXPLORING GENERATIVE DESIGN AND AUTO-DOCUMENTATION IN DYNAMO

June 9th, 2017 Posted by computation, Download, drawings, Dynamo, production 3 comments on “SLATTED FACADE: EXPLORING GENERATIVE DESIGN AND AUTO-DOCUMENTATION IN DYNAMO”

This post explores Generative Design in Dynamo using a Slatted Facade as geometrical test-case, and then examines some options for the automatic generation of documentation back in Revit.

The workflow has been annotated within the display graphics as well as the accompanying script – which is available for download at the bottom of this post.

Dynamo 1.3.0 was used for the generation of this script and all images.

SURFACE DISTRIBUTION GRID

In order to populate our design options, we need to generate a Surface Distribution Grid. This allows us to generate designs and and map them across many surfaces. Our options spread number will square itself in order to generate the grid.

We are left with a grid of vertical rectilinear surfaces propagated from their origin points.

SLAT GENERATOR & RANDOMISATION

The custom Atmos node (From my own personal package) contains all the code to generate a Slatted Facade based around a caveat: Vertical surface with four sides.

We can then feed into the Slat Generator a series of randomised inputs that allow us to leverage the power of computation to generate designs. The count variables here map back to our Surface Distribution Grid and will automatically update based on the chosen amount of total options.

The results are a series of Slatted Facades mapped to our distributed surfaces, each one uniquely built based upon the randomised criteria fed into our generation node.

CHOOSING OUR DESIRED OPTION

We will utilise the vectors we have captured as output from our Surface Distribution node in order to translate the geometry of a chosen option back into the correct location of the origin surface by simply reversing the vectors. This allows us to generate form back in the Revit environment in the correct location.

We pick our desired outcome via a GetItemAtIndex node that allows us to scrub through the options in (almost) real-time. Note that if you attempt to pick an index value that doesn’t exist – the graph will fail (i.e if you have 8x options, you need your slider to range from 0-8 only).

COLOURATION

We utilise colour ranges in order to give each slat a unique colouration. In this case, we are ranging from deep blue to mid grey-blue. In the future I will be exploring how to generate materials based on RGB values and map them directly into the generated families – the fallout of this system is that it simply uses ElementOverrideInView and as such can only work for 2D and 3D views – not cameras.

We colourise both in Dynamo for our background preview and into Revit after generating the slats as Direct Shapes.

REVIT GEOMETRY: DIRECT SHAPES

We use the Spring Nodes Direct Shape nodes in order to push our generated geometry back into Revit as individual components of the Walls category. During this process we also set their names and mark values.

This generates our individual Direct Shapes in Revit which allows us to then colourise them based off our Colour Range.

PLANE GENERATION

We generate then a Plane perpendicular to our slats which will allow us to later push the perimeter curves onto.

SLAT CURVES

We want to pull out the correct Curves that form the perimeter of each individual slat. To do so we will pull the Face topology and query the surface area of each face in order to correctly filter the elements (In this case being the largest of each areas).

This allows us to get the geometrical creation path for later CNC Routing of each slat. However, they are not quite in the correct location – we have yet to pull them to our plane. We do this after filtering the curves based on maximum length of each sub-list.

CURVES DISTRIBUTION SPREAD

After pulling out the correct perimeter curves, we want to push them to a plane. Firstly, we simply pull them onto plane, where they sit on top of each other.

However, having all our curves sit on top of each other is far from ideal from a visual standpoint, so we query our maximum dimensions of our Slatted Facade from earlier on in the graph in order to generate our spread amounts.

After creating our spread amounts we generate both horizontal and vertical spread lists based around the maximum sizes of the Slatted Facade and chosen offset spread factor and buffer amount.

This results in our Curves spread running perpendicular to our Slatted Facade, aligned with a chosen ratio between rows and columns.

RE-JIGGING THE CURVES

Now that we have our carefully created curves spread, we need to re-orientate our Plane so that it will function within Revit – in particular allow the propagation of lines into a Drafting View.

We need to rotate our curves spread from the YZ plane onto the XY plane, and then orientate it to the Y axis via a rotation so that the curves appear correctly in our Drafting View for Revit documentation.

After our curves appear correctly in Dynamo, we need to generate our Drafting View in Revit and use Dynamo to push Detail Lines back into that view.

The result is a series of detail lines back in our newly minted Revit Drafting View.

TEXT NOTE ANNOTATION

While the realities of the modern world mean that the curves are enough to send through to a CNC routing machine, or the direct 3D Geometry in Dynamo to be exported to STL format, we may want to look at pseudo documentation in Revit for aesthetic purposes: So we push a Slat Name out to each slat.

For this to happen we need to dictate where each of these names will appear. So we use our generated Dynamo geometry to query the Y-axis values, pick the minimum (The base of each slat) and offset by 300mm below.

We then simply set the text notes (Reversed due to baseline generation of slats) in order to give each series of detail lines (Demarcating individual slats) in Revit a title.

The result is our propagated curves distribution grid in our Revit drafting view, each uniquely named based on their position within the overall Slatted Facade system.

FINAL THOUGHTS

This system is not flawless, but does showcase one way that you might approach the generation of form in Dynamo, how to push that form into Revit and how to begin documentation of it. We are omitting dimensions within this post simply due to the fact that, as previously mentioned above, the intended use case would be CNC routing of the curves and the use of the geometric slats in the 3D Revit environment.

Note: Please use the Freeze functionality as saved within this graph. When running, it works fine in parts – but seems to hang when run it it’s entirety (If previous sub-sections haven’t been ran).

Note: You may also run into issues with multiple Drafting Views being created – if so, simply delete it out and run the graph again.

I hope this has been of use to people – it begins to showcase where Dynamo can start going as a holistic design tool that runs from concept right through to completion. Have fun generating funky facades!

Tags: , , , , , ,

3 comments on “SLATTED FACADE: EXPLORING GENERATIVE DESIGN AND AUTO-DOCUMENTATION IN DYNAMO”

[…] has posted a very detailed article on creating a slatted facade with Dynamo. Click on over to the DesignTech website to check it […]

F Lumpkin says:

Brilliant! I love your work, Sol. I thought your Atmos node might be the answer to my prayers but unfortunately Dynamo requires Revit, which I cannot afford on my retirement income. I’m playing in Fusion 360 and banging about the garage with my CNC router.

If only Fusion supported Dynamo.

Mark Thorley says:

Hi – did you know you can get a copy of Dynamo Studio which is the standalone software and doesnt require an install of Revit. I think its around £300 a year.
https://www.autodesk.com/products/dynamo-studio/overview

Leave a Reply

Your email address will not be published.This is a required field!

<small>You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes:<br> <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>