Tuesday, April 10, 2018

Patterned, Extruded Ceramic Vases

This post documents some new methods I've been experimenting with in making vases made by extruding clay. This work is built on previous projects documented here and here. I've been using a new algorithms to generate the forms and applying decorative patterns to the surfaces.


This is the clay extruder. It is sold by 3D Potter. It's their 2000ml model. Really simple: a 3" diameter tube, a stepper motor, gear box, acme screw, piston and a nozzle.

The clay needs to be softened a bit for use by adding 16 ounces of water to 25 pounds of clay:

Here's the first test of extruding clay:

A wood fixture holds the extruder, fixed in space. The robot moves a flat board beneath the extruder to generate the form. Another stand holds the electronics and computer.

The motion of the robot follows a 3D modeled form, is a continuous helix. This is the actual speed of the robot:

Early Forms

Some of my early work was straight forward geometric forms. These are modeled in the CAD software Rhino.

Code Generation

The code for the robot is generated generated directly out of the CAD software. Rhino has a feature called Grasshopper which let's you program geometry visually. That is, you don't need to write code - you can simply wire nodes together on the screen and that creates the program. There's a plug-in called Kuka|prc that generates code for the robot and simulates the robot's motion in the viewport.

To contour a form and have the robot follow that path is very simple. You can see the overall complexity below:

New Form Generator

Some of the new forms are generated using a simple but interesting algorithm. The basic idea is to have a polygon sided cylinder, make a circular array of these such that they overlap a bit, union them together, then twist and taper the final form.

The parameters are listed below:

Here are some computer renderings of type types of form you can generate:

Here's a sample prior to bisque firing:

Pattern Methods

There are several pattern methods used:
  • Generating random, but repeating perturbations to the surface
  • Bumping out the surface at repeating intervals
  • Bumping out the surface using an image
  • Sculpting a high resolution mesh and using that as the form to extrude

Random, Repeating Patterns

Another technique involves using "noise" to randomly bump out the points, but then repeat those bumps so they produce a noticeable pattern. If you look carefully you can see the pattern swirling around this form:

Bumping Out the Surface

This technique involves bumping out points on the surface at controlled intervals. You can bump out every N points on every N levels. The vase below has every 4th point bumped out on every 2nd level.

There is also a "basket weave" effect. This one uses a sine wave to push the points out and pull them in. You can control how many repetitions of the wave occur in each level, and how many levels to skip between pushing points out. And you can control how far they push out. In the example below it is every other level. Note how the algorithm shifts the pattern alternately between levels. That's what gives it the basket weave effect.

Image Based Alterations to the Surface

You can use an image to map onto the surface. The lighter the pixels the more the surface is pushed out. This one was made by Taubman College student Julia Hunt using an image of a leaf.

The image map can be combined with the bumping. So areas which are white are bumped a lot and area which are black are not bumped at all. The following vases were created by Taubman College students Jasmine Almomar, Teruaki Hara, Jad Ismail, Akshay Srivastava:

By slowing the robot motion as the bumps are pushed out loops of clay can be generated:

Time-Lapse Video

Here's a time-lapse video of the process. The people in the video created it. They are some of my graduate students in Arch509 Robotics at Taubman College. This is the work of students Jasmine Almomar, Teruaki Hara, Jad Ismail, and Akshay Srivastav:

More Updates

I frequently post new work on Instagram. Here's a link.

Other Work

I came across a presentation by Tom Lauerman and Jonathan Keep titled Clay, Computation, & Culture. It was presented at the National Council on Education for the Ceramic Arts conference. The video is well worth watching.

Sunday, March 25, 2018

5-Axis Router Toolpath Setup

This post documents getting 3D geometry ready to cut on a 5-axis router. The two methods covered are 3+2 Milling and Swarf Milling. The software discussed is Rhino for modeling and Mastercam for toolpath programming. The issue of holding the work during cutting is also addressed.


First, a few terms are defined:

3+2 Milling

In this form of programming the 5-axis router is treated like a 3-axis router which is operated on an arbitrarily rotated plane. That's where the name 3+2 comes from, functioning like a 3-axis with 2 additional degrees of freedom for orientation of the cutting plane. In the images below the end of the work piece is 3+2 milled. It's consists of a pocket and a contour but at an odd angle.

Swarf Milling

In this form of milling the 5-axis router is cutting with the edge of a tool, following a surface. That surface needs to be a ruled surface. Simply put that's a surface defined by sweeping a line through space. If you visualize the edge of the tool doing the cutting as the line, and the motion of the router as the sweep, you can picture why that geometry is what we are dealing with.


A key element of using the 5-axis router is how you hold the work for the milling to take place. The work piece must be held securely but must also allow freedom for the router to move around the part to mill it. The process of holding the work is called fixturing.

There's another term which is sometimes (mis)used: Jig. However, a jig implies that the work is held and the tool is guided by the jig. In the case of a CNC router the tool is guided by G-Code. So the term fixture is the more correct one.

Example 5-Axis Projects

This section provides links to a few furniture design and small object scale projects cut on the 5-axis router at Taubman College. 

Rhombic Triacontahedron Fabrication - This simple project uses swarf milling to cut the parts. The fixturing of the work piece is done using vacuum pressure.

Origami Side Table - The joinery for this table was cut with swarf milling. Some material clearing was done with 3+2. The fixturing was done with double-sided carpet tape to hold the part to an MDF panel which was held by vacuum pressure.

Torus Knot Table - This project uses both swarf and 3+2 milling. Several fixtures were needed to cut the parts for this table.

Hexagon Table - This project used both swarf and 3+2 milling. The fixturing was all done with vacuum pressure. Simple MDF fixtures were made to allow the vacuum pressure from the table to be transmitted to the surface of the part to hold it.

3+2 Milling Geometry

To program a toolpath using 3+2 milling you first need to define a plane that the cut will take place on. You can use the tools in the Planes tab of Mastercam to create and manage your planes.

Use the + icon at the top left to create a new plane.

It's easy in Mastercam to use the normal of a surface to define the plane. Or use the From line normal... menu item to do so from a line drawn perpendicular to the plane. In Rhino use can use the Normal option of the Line command to easily create such a line.

After you define the plane you can set it as active in the toolpath setup dialogs. Here's a Contour toolpath example. Select the Planes branch in the tree view on the left. The Tool plane name is shown in the middle column. Click the circled icon to change it to one of your defined planes.

Once the planes are set you can program just like 3-axis routing. For details on those toolpaths see Mastercam Toolpath Setup.

Swarf Milling Geometry

To set up a toolpath in Mastercam for swarf milling you need either two rail curves or a surface and a lower rail curve. The bottom edge of the tool will follow the lower rail. The edge of the tool will ride along the surface or the other curve.

In Rhino you can use the ExtractSrf command to extract or copy a single surface from a solid (polysurface). You can use the DupEdge command to create a new curve from the edge of one of your surfaces.

From the Torus Knot Table example the geometry was generated with a Python script. It output each part and the surfaces used for milling:

Each part was put in its own file and moved to the origin for cutting. Here is all the geometry for a part including the bounding box of the wood. Note that the front face of the wood is the 0,0,0 point:

What's required is just a subset of that. Minimally you need edge curves to swarf mill. For example, the three side surfaces which don't have dovetail components are swarf milled. The required lower rail is the lower curve and the corresponding upper edge is upper rail.

Inside Mastercam you can create Swarf Milling toolpath using the toolbar in the Toolpaths panel:

Inside the dialog presented you can choose the geometry to follow:

As you would expect controls are available to manage the lead-in/out, direction of cut, step-down and step-over, etc. These are set up in a similar way to the three axis milling.

Fixturing Parts

Holding the work piece steady during milling is critical. Here are some work holding examples from the projects above.

The Origami Table uses MDF spoilboards and heavy duty carpet tape to hold the parts. The tape can be cut through and doesn't affect the wood or the finish.

In the Rhombic Triacontahedron Fabrication project the parts are very small - about 2" x 4". They are held by vacuum pressure and two tiny pins. Without the extra friction from the pins the parts wouldn't hold. With them, they usually hold. Every 10th one would still fly across the room while cutting! The pins could have been pushed further into the wood to completely eliminate that but it would involve more work to remove them (deeper sanding or planing). I chose to leave them.

The Hexagon Table uses milled MDF fixtures with rubber gaskets to hold the work pieces:

Here you can see the MDF held to the pods. Some suction comes through the MDF onto the work piece to hold it to the MDF.

The Torus Knot Table also uses MDF held on pods. In this case the stock block is glued to the MDF.

Once 5 sides have been cut the 6th is cut holding the part in another fixture - in this case by the previously milled dovetail:

In the Wolff Sleigh Bed large MDF fixtures were used to hold curved parts:

Here the faceted part was smoothed on the other side:

You can also simply screw larger boards to the spoilboard. Note that you don't have an automatic tab generator as part of the swarf milling toolpath programming. So you'd have to create those with your own modeled geometry.

Part Origin / Router Alignment

Another key to successful setup is having a consistent and measurable origin point. That is, you tell the router using a work offset where the 0,0,0 point is located in space. That's the point that matches the 0,0,0 point in your Rhino and Mastercam files.

When the part is cut from a large block, as long as you are fully within the block, the accuracy is not super critical. Just make sure you are within the block!

When the parts are already milled and you need to match up to them then more accurate measurement is required. In this case a dial gauge is used to measure the exact position of the fixture to 4 decimal places.

The coordinates can be read off the router screen:

These are then entered as a work offset and the router position and the Mastercam positions are perfectly coordinated.


Here are some links to other related blog posts:

Taubman College 5-Axis Router Operating Procedure

Mastercam Toolpath Setup