Will Patrick

How to make almost anything


Week 1

"DNA Synthesizer"

 

In our first assignment, Neil tasked us to laser cut cardboard into a press fit kit. A press fit kit is simply a set of discrete, “lego-like” 2D blocks that can be joined to create 3D shapes.

This semester, I’m also taking a course on designing DNA nano structures where I'm designing DNA nanstructures using a couple of software tools (NanoEngineer and CaDNAno). The programs are great but as a biology novice I don’t have an intuitive understanding of the three-dimensional geometry of DNA. So for this week's project, I decided to make press fit DNA double helices which I could then physically move and play with to get a better understanding of DNA.

My initial paper design of the helix

First sketch

Grasshopper + Rhino

For this assignment, I wanted to learn a new piece of software: Rhino with Grasshopper. Rhino is a surface modeling tool popular with architects and industrial designers. Having been a Solidworks user for the past several years, I’ve always heard that Rhino is more intuitive and easier to generate surfaces. Grasshopper adds a lot more power to Rhino; it’s a visual scripting language that can be used to create anything in Rhino. Using Grasshopper, one can create parametric designs. For the double helix press fit kit, I wanted to vary inputs like the thickness of the material and the size of the press-fit notches, so I thought Grasshopper might be a nice way to do that.

To get started, I got a few tips from my officemate John Klein (like to John) and also watched a couple of the tutorials on the plethora project .

Here's the first thing I ever built in Grasshopper

first attempt

Script development

The hardest parts of building this grasshopper script were (1) retraining myself how to build solid models in a "Grasshopper mindset" and (2) calculating the geometry of each surface based on the overall structure.

Making the phosphate joint

phosphate under construction

Finished script

This is what the script looks like:

grasshopper code

The script is obviously a mess. Again, it was my first time using Grasshopper. I'm sure there are ways I could have organized the space better and used the functions more efficiently. For example, the huge cascade of functions to create each base pair should be replaced with a looping function.

Here's what the output looked like.

top view of laser cut piece

To create the 2D curves, I took each surface and oriented it to the XY plane and then spaced them out on the X-axis.

The real power in using software like Grasshopper is setting up a few parameters which you can use to dynamically change the structure. In my code, I set up a number of different parameters on the left side of the script (see below). Hopefully, the script could be used to create press fit helices that are tens of centimeters tall or meters tall. Also - you can adjust the base pairs per turn to visualize a wound or unwound helix.

Parameters used to build the script:

Grasshopper parameters

Laser cutting and assembly

Next, I moved on to cutting the shapes so I could assemble the helix. I went to the CBA lab to begin working with the Epilog laser cutter. The real challenges began there. Here were a few of the biggest challenges with laser cutting and assembly:

Example of the joint:

a joint that caused trouble 

I waited to the last minute to laser cut the piece, so I didn't have time to redesign the joints. I used a couple of props to help the structure resist gravity. Below are a couple photos of what one turn of the helix looks like.

Top view of the assembly

top view of laser cut piece

Side view of piece

side view of laser cut piece

Next steps

I would love to get this working. So, in the next few weeks I hope to tweak the design of the joints to make them more structurally sound while retaining the geometry.

Downloads

GenerativeDNA.gh — Grasshopper file for parametric generation of DNA helices — Updated September 17, 2013