Mini 3D Printed Hammock

by jayleenli in Workshop > 3D Printing

2323 Views, 18 Favorites, 0 Comments

Mini 3D Printed Hammock

PXL_20210427_094435045.jpg
PXL_20210427_094252623.jpg
PXL_20210427_093213047.jpg
PXL_20210427_093157276.jpg
12oc-pawleys-island-single-cotton-rope-studio-xx.jpg

Welcome to the next installment of CS291I assignments! This week we were exploring ways to generate GCode without using a slicer like Cura.

GCode is a programming language used for CNC machines. In this project, we used Marlin GCode.

The professor had introduced to us the paper 3D Printed Fabric: Techniques for Design and 3D Weaving Programmable Textiles by Haruoki Takahashi and Jeeeun Kim. In this paper they were able to create a textile like material by using a 3D printer using PLA. The effect is similar to weaving and the final structure is a flexible yet strong material.

The professor also provided to us a grasshopper file that recreated the fabric mentioned in the paper and when I printed it out, I got an idea to make a mini hammock where the size is wide enough to fit a baby turtle. I have two ready subjects :)

Although Jennifer mentioned that the focus of this assignment wasn't to make a final "object," I decided I wanted to take this path because I really wanted to make the mini hammock.

Supplies

  • 3D printer
  • Rhino
  • Grasshopper
  • Gorilla Glue (for assembly)
  • 3D pen (for assembly)

Printing the Programmable Textiles With Some Modifications

no base.PNG
rounded pillar.PNG

Originally the programmable textile has rectangular bases. However, to make the hammock I wanted to change these to cylinders. I went into the code and changed the base columns to resemble a hammock. I also modified the base so that it would be thinner. I had issues removing the print from the base with the original design so I figured thinning the base would make it easier to to remove.

I also changed some of the parameters given so that it would be as wide as I was trying to make it to be (around 2in x 3.5in).

Programmable Textiles Prints

PXL_20210424_033740974.jpg
PXL_20210424_034752231.jpg
PXL_20210426_182940450.jpg
PXL_20210426_183001681.jpg

With the original example, it was very difficult to remove the base. I had to use pliers to carefully remove the plastic to try not to break the plastic.

With my next iteration, I thinned the base and make cylinder poles instead. However, there are a lot of artifacts once the print started going higher up. I believe this is because the print started to sway as slices got added. This also caused another issue where some threads and pillars got merged together, causing parts of the fabric to be unbendable. There are also a lot of artifacts in the cylinder columns because the ends of the thread slightly went outside the columns.

I manually fixed as many artifacts as I could with my pliers and instead printed as much of the textile I could before it started to merge again. Then I would stop the printer. This created two pieces that could be combined to create the hammock size I desired (around 2in x 3.5in)

Playing and Getting Frustrated With Gcode

PXL_20210426_045502493.jpg
PXL_20210426_050216899.jpg
PXL_20210426_051049634.jpg

Next, I went to experiment with GCode.

I started small and tried to understand the example simple slicer code Jennifer provided by experimenting extruding a circle in GCode.

The example code only had linear movements (G0 and G1) and it took me a long while to figure out the arc command (G2).

  1. Attempt 1
    1. I just put some sample GCode I found online in GCode file. Nothing printed and printer behaved weird.
  2. Attempt 2
    1. After looking at the GCode output from the simple slicer example, I noticed there was a series of GCode commands to head the nozzle and bed. I added those in. (first set up lines you see in the file) That would probably help.
  3. Attempt 3....20? not sure
    1. I did a lot of trial and error because for the longest time I could not get any filament to print out. Some occasions the z axis also started drilling into the printer.
    2. I got some lines to print after copy pasting some code from the output of the simple slicer, but could not get the circle to print
  4. Attempt 21?
    1. Finally I figured out that for some odd reason, GCode on a particular line will NOT get executed on my printer UNLESS there is some line of code after that line. I do not know the reason for this, but I finally got the circles I wanted to print.

Final GCode used to test making a simple circle

M140 S50 ; Set Bed Temperature
M105
M190 S50 ; Wait for Bed Temperature
M104 S195 ; Set Nozzle Temperature
M105
M109 S195 ; Wait for Nozzle Temperature
G28
M83
G90
G1 F300 Z0.4
G1 X50 E8 F800
G1 F1200 E-6.0 ; Retraction
G0 F9000 X50.40 Y50.03
G1 F1200 E10.0 ; Extraction
G1 F300 Z0.200

G2 I20 J20
G2 I20 J20

Making the Hammock Hinge

hinge.PNG
gxode.PNG
PXL_20210426_181314560.jpg
PXL_20210426_183404349.jpg
PXL_20210426_202725607.jpg
PXL_20210426_200946242.jpg
PXL_20210426_205755580.jpg
PXL_20210426_224930306.jpg

The goal was to create a hinge like in the first image. The example simple slicer inputs a brep geometry and through Python it creates GCode to build the outer shell. The way it does this is by slicing the geometry to make layers and then creating points for the edge of the geometry that the printer follows to create the object.

I decided to build off this and create a slicer that takes in a list of Rhino Curve objects and then using the helper functions from the example slicer, create printer paths from the curve points. I also added a number slider that would specify the number of layers to create the curves. It is basically a 2D -> 2.5D slicer.

I created the curves for the hammock hinge and then put it into this new slicer.

Some issues:

  • Print going out of bounds
    • My first print started at (0,0), so some lines ended up being out of range of the printer. However, the printer is smart enough to not print these off the printer base. Later iterations I changed the location of the curves.
  • Circle curve not extruding
    • Took me a while, but it was because of a few reasons.
      • (1) printer speed too fast when making the circle.
      • (2) After speed adjustments, realizing GCode uses relative values, as any values not specified GCode will just use the previously defined value. Thus, the circle would print at extremely high speed.
      • (3) Needed to extract a bit before actually printing.
      • (4) Needed retraction before moving onto the lines. From the later pictures you can see a line being drawn in the middle of the circle. This is because without retraction, filament got dragged as the nozzle was trying to move. I added a line to retract the filament and this issue was solved.
G0 F9000 X30.00 Y35.00 //Movement to where circle is, notice high speed
G1 F1200 E6.0 ; Extraction //Problem (3) Added line to extract a bit or else nothing will come out of the actual nozzle since just retracted.
G1 F200 Z0.6 //Problem (2) when I did not have the F defined, this line would use F9000, which is too fast for anything to print.
G2 E6.0 I5 J0 //Making circle
G1 F1200 E-6.0 ; Retraction //Problem (4)

Making Hammock Poles

PXL_20210427_001510527.jpg

To make the poles, I created the geometry in Rhino and passed to the example simple slicer to obtain the GCode. So the poles are actually hollow inside.

Making the Zig Zag Base

base.PNG
params.PNG
base_zig_zag 2.PNG
PXL_20210427_020543534.jpg
PXL_20210427_075855660.jpg
PXL_20210427_020944229.jpg
PXL_20210427_014926337.jpg
PXL_20210427_050559618.jpg

Using the Slicer I made earlier that can take in curves, I thought it would be interesting to modify it so that I can create interchanging layers defined by two curve objects to make a base for the hammock.

The first pattern I made was two zig zag curves going opposite directions from each other while stacking.

With the first print, I noticed my code made a prominent diagonal line because of the order curves affected the GCode that was generated. So I stopped that print early on which actually created a cool bendable shape.

I went back to resolve this and printed it for about 15 layers. (No diagonal line)

Making the Hexagon Base

hexagon.PNG
hexagon2.PNG
hexagon3.PNG
hex.PNG
PXL_20210427_051820274.jpg
issue.PNG

The previous zig zag base was very strong however a bit boring. I saw a hexagon pattern online that layered on each other so I decided to change the curves to make a hexagon tile. I couldn't make everything into one curve but I hoped it would be fine as I just changed the code to loop through curves instead.

But it kinda killed my computer :( It took almost 2 minutes to calculate the entire GCode output for 15 layers. I just hoped for the best and printed it but I see some issues. But I don't think my computer is a great state to debug it at the moment, so just letting it be.

A very noticable issue that you can see from the GCode visualization and actual print is that the path generated is not optimal. Curves are printed that are not close to each other, causing some artifacts. You can see this through the resulting hole in the print. I think I also messed up the retraction somewhere, further worsening the hole in the print.

Assembling the Hammock

PXL_20210427_060155411.jpg
PXL_20210427_081857300.jpg
PXL_20210427_090651802.jpg

Now came the time to assemble the parts together. I created a short timelapse!

Finished!

Screenshot_20210427-025337_2.jpg
PXL_20210427_094209716.jpg
PXL_20210427_094252623.jpg
PXL_20210427_094256364.jpg
PXL_20210427_094321297.jpg
PXL_20210427_094322079.jpg
PXL_20210427_094323296.jpg
PXL_20210427_094324631.jpg

Now we have a mini hammock made of GCode made without a slicer the perfect size for my baby turtles!

Not sure if they appreciate it though :'D
No turtles were harmed in the creation of this hammock

Rhino, Grasshopper, and GCode files: Link