Sunday, June 24, 2012

Torus Knot Table - Design and Fabrication

I designed a table based on the geometry of a torus knot. I wanted to make the table from hardwood. This design was meant as a study of CNC cut wood joinery as well as achieving a high degree of curvature in a table made by 5-axis CNC milling.

I did it as the final project for my Master of Science in Digital Technologies degree from Taubman College at the University of Michigan. Tabuman College has a fantastic digital fabrication lab where I had access to the 5-axis router, abrasive water jet cutter and, CNC bed mill.


A torus knot is a curve which lies on the surface of a torus (think donut shape). Here is an example:

I wrote a Python script inside Rhino to generate the geometry. It starts with a single curve like the one above. This post provides a Rhino Python script to generate torus knot curves.

Depending on the input curve a great many tables are possible. Here are some 3D printed models showing different forms. The table I choose to fabricate is the one in the middle.

You enter a variety of properties such as the number of pieces, the length of an edge cross section, and properties of the dovetail bit that'll be used to cut the joints.

Once you've answered the questions it generates all the required geometry for toolpath setup. Everything is layered separately for an easier time assigning toolpaths in the toolpath setup software - Mastercam. Each part is exported to a separate file if you like.

Here are all three versions of the table run through the script: 

Data about the table is stored in the Rhino file as notes. Here you can see the max sizes, board feet required, and the size of the required block of wood for each piece. 


The prototype table was made from a single piece of 16/4 Yellow Poplar. The board was 4" thick, 10" wide and 16' long.

Each piece is CNC machined in two phases. The first phase cuts the sides, top, back, front and make portion of the dovetail joint. Each surface is left with 1/8" of extra material. This allows the wood to move a bit after the internal stresses of cutting have occurred. The final 1/8" is removed in the second phase.

The first phase is cut on a pair of 6" high pods and held to the table using vacuum pressure. The wood is glued to an 3/4" thick MDF spoil board which can be cut into to accommodate the curvature of the part. Here are all the parts glued to the MDF. The MDF board is larger because the extra surface area was needed to get enough vacuum pressure to hold very securely.

Here's a part sitting on the pods. It's necessary to put them up on pods so the router head can reach the end to cut the dovetail and so it can swarf mill the top surface.

After the first phase is done the dovetail is fully milled. Each side except the bottom is milled to within 1/8" of the final surface.

Before the part can be milled in the next phase it has to be band sawn free from the MDF plate it was glued to. It's okay to leave up to 1/2" on the bottom of the piece - that'll be removed during the final milling.

The second phase of cutting involves holding the workpiece steady using an aluminum fixture. It holds the part using the dovetail joint. I designed and modeled the fixture in Rhino and made it from off-cut aluminum plates. I waterjet cut out the parts, then milled them on the CNC bed mill.


The assembled fixture allows the dovetail to be tightly clamped against the vertical plane of the fixture. A metal dowel pin is run through the fixture to ensure proper vertical alignment and prevent the part from sliding in the dovetail bracket during cutting. 

Here a part is clamped in the fixture and is ready to be cut. As you can see, every face is accessible except the dovetail which is fully milled during phase one.

The dovetail bracket which holds the dovetail end of the workpiece was cut with the same carbide tipped bit used to cut the dovetails. That, and correct setup, ensures a perfect fit.
The alignment of the fixture is critical. The milled front face of the base is carefully aligned with the grid in the table. Then the exact position of the fixture is measured using a dial gauge.


Those measured coordinates are entered as the "table origin" - so the CNC thinks that's the 0,0,0 point. This matches how they were exported in Rhino and imported into Mastercam.

Once held in the fixture the part can be milled on all five remaining faces. Here is a part prior to any cutting:

First the endgrain is cut back 1/8" and the dovetail socket is cut. Then the bottom is milled to the final profile. Then the sides and top are cut.

You can see that the final edges of the part are only 1/8" away from the aluminum fixture.

Careful simulation inside Mastercam is required to ensure that the bit will never strike the fixture. The 3/4" solid carbide bit used to do the swarf milling is over $500 and hitting the fixture would destroy it. Yikes. The image below, taken looking down the tool axis from above, shows how close the cutter comes to the fixture. The screw near the cutter is smaller than the others - that's because the simulation showed it would hit!

Any surface that turns yellow during the simulation is cut -including that screw.

Of all 30 parts only one could not be milled correctly. That's because the sweep from one part to the next is too great and would have resulted in a collision with the fixture as the top of the dovetail was cut. So the top of the dovetail (just a 3/4" wide strip) does not match the neighboring part in this single case.

That extra material had to be removed with a gouge and then sanded smooth.

Here are all 30 parts cut prior to assembly.



The parts are glued up in pair. Then those pairs are glued up and so on...


The table is sanded to remove any tool marks.

Walnut Version

Later I built another version of this table out of Walnut. It's discussed here


  1. I think this is really amazing! Thanks for sharing your amazing creation! Is there any chance to get a copy of the rhinoscript? I would love to try it out! Thanks! -Dave

  2. That's a really cool table. I love the concept and it turned out beautifully.


  3. Great job.You can ask for a script to Reno? Please.