Introduction: Grasshopper - GCode Generation - Clay Printing

Goal:

Create a 3D printed clay object with GCode generated in Grasshopper.

Create a functional mug or cup (or set of cups). Note: design should aim to be water-tight (i.e. it includes a base)

Supplies

CLAY!

Step 1:

The first stage was to prep the clay (Potterbot) printer. I removed the clay tube as seen in the photo. This tube is what stores and feeds the clay through a nozzle during printing extraction. I removed the old clay from the tube and added my new clay. To do this I created a cylinder shape with my block of clay. The diameter, wider than that of the tube. I then slowly pushed it in trying to avoid any air bubbles in the tube which could ruin the quality of the print. I then added the nozzle to one end of the tube and the motor power extruder which will extend into the tube and clay and push it out like a syringe.

Step 2: First Model for Printing

The first (trial) model was made using Mert's differential code example. The sliders settings can be seen above.

Step 3: Printing First Model

The process of printing involved putting the syringe-like clay into the printer setup and then calibrating the setup for the model. This consisted of setting a home height on the z-axis, about 2mm of the print bed. And also extruding clay until a smooth flow formed.

This first model printed relatively well. The base was too thick, and hence in the future, the base layers can be reduced from 10 to something around 5. I think the design could be improved by making the print bigger and smoothing out some of the more 'jaggedy' elements of the side walls so it looks less random and more purposeful and flowing.

Step 4: Design Devlopment

The next stage of the task was to develop the design into something more complex and composed of my own coding/grasshopper flow. I created a hexagon stack as seen above. I took the foundational code from my Week 3 - Lamp Shade progress. This is an original polygon which is simultaneously translated in the z directions, whilst it is rotated around the z-plane and shrunk/increased in size around the origin. I struggled with the concept of converting my 3D object seen in the final result of the lampshade, into some working g-code for the printer. After consulting with Mert he described how I could instead move away from a loft and extruded external face as previously dealt with, and now focus on creating a set of points that could then be translated into a working path for the printer. I then had a nice set of Vertices that I could concentrate on turning into a set of 3D points that the printer could follow.

Here I found another problem. Since all the layers and the same height and the same number of points, there was no continuous path for the printer. Hence the result would be a seam on each layer where the printing extruding jumped up a level. You can see on the image on the right that each layer is separate and at an evenly staggered height.

After consulting with Mert again I looked at his python code from his basic cylinder for clay 3D printing. I realised that I had the necessary parameters to create a height increment for each layer. Therefore each point on each layer would gradually increase in height until the final point began on the start Z-coordinate for the next layer, hence providing a continuous path print.

Step 5: Continuous Print Path

I had great difficulty implementing this plan. The 'explode' block in grasshopper gave me a tree, with all my point coordinates split between the layer they are on and then the vertice face they belong to on the polygon. In the python block, it seemed almost impossible to deal with the individual coordinates of each individual point separately. I, therefore, create a list of points chronologically by 'flattening' this tree. I realised that since every layer had the same amount of points and the same layer spacing, I could add a progressively increase increment to each layer depending on its chronological position. In the python code above you can see a for loop which adds the increment to each point's z-coordinate, each loop adding 1 extra increment.

Now you can see in Rhino, that each point graduate increases in height from the next, creating a smooth continuous tool path with gradually increases in height.

Step 6: Full Flow

Here you can see an outline of the full code flow. Firstly creating the geometry, converting it to a list of progressive 3D points and then converting it to g-code.

Step 7: Previewing & Creating Gcode

The next stage was to convert the list of edited points (now on a continuous path) into a functioning g-code for printing. To do this I used Mert's code from this example since this dealt with the same format of listed points as I had created. I then copied the output g-code and pasted it into Textedit and saved this as a g-code file. The problem here is that Mac's Textedit has an unfamiliar line ending when transferred over to Windows. Instead, I downloaded Visual Studio and used its text editing functions for a more transferable file.

Step 8: Printing

The file was then printed using the process described in Step 3. Instead of using the printer to create a base, I create a clay base by hand. Flattening a sphere of clay on the centre of the bed using a flat block. I then printed it directly onto this clay bed. As seen above the clay base/bed was intentionally made wider than the model being printed. The adhesion directly on the clay was very good and printed successfully first time.

Step 9: Trimming Base

The base was then trimmed off carefully leaving the processed result ready to dry. The pot is very small as I did not have long to complete the printing during my 1 hour time slot. Next Monday I plan to return and print a larger model which will be detailed in the next step.

Step 10: Design Improvements

I hope to firstly print the model much bigger next time. I have also decreased the number of vertices on the polygons. This should hopefully emphasise the effect of the rotating polygon pattern which seemed quite faint in the print above. I also reduced the layer height to hopefully also create a smoother external finish.