CompFab 3D Printed Fabric Ring

by jacquelinemai in Workshop > 3D Printing

254 Views, 0 Favorites, 0 Comments

CompFab 3D Printed Fabric Ring

final params perspective.png

For this project, we're trying to use GCode to get our printers to create objects in slightly unorthodox ways (basically giving the machine direct movement commands rather than generating the instructions by slicing a model). I wanted to try adapting Haruki Takashi's and Jeeun Kim's "weaving" technique for creating a flexible fabric-like structure with the 3D printer and see if I could get it to work on my own printer.

Haruki and Kim's paper, for reference: https://dl.acm.org/doi/10.1145/3332165.3347896

Supplies

Rhino 6 (Windows 10)

Creality Ender 3 Pro 3D Printer

The Starter Code

I started off with the Grasshopper file provided by Professor Jacobs for a simple example of the weaving technique. It creates a solid frame around a small number of pillars, then weaves thin strands of the extruded plastic around the pillars to create the fabric.

My plan was basically just to adapt this starter code to instead generate the pillars in a ring, and see if it would be possible to weave the threads around those pillars to create a small cylinder of fabric. The starter code has 3 main clusters: one for the pillars, one for the base, and one for the threads themselves.

Updating the Pillars

after circle pillar dist but not changed base shape.png

I created a circle in the Rhino environment with the "circle" curve tool, then modified the pillar generation cluster to take that curve as an input. Rather than calculating the placement of the pillars in a straight line from the numerical sliders, I now have the cluster divide the circle into equal parts with the DivideDistance unit in Grasshopper. A pillar is placed at each point of division.

Updating the Base

base and pillars, but still has rectangular frame.png
base pillars no outer mesh.png

Now I had a nice set of equidistant pillars around the circle, but I needed to update the base to match their distribution. In hindsight, I probably should've done this step first.

I updated the base cluster to take the same circle as an input as well, and used it to generate a base platform that the pillars would be printed on top of. This looked pretty good, but I still had the rectangular frame of the original base hanging out on the new circular base as well (the first screenshot above).

Since the shape is intended to be a cylinder, every pillar should have a pillar on either side for support, so I didn't think I'd need any sort of additional frame. With that reasoning, I decided to disable the OuterPillarMesh cluster, originally from the starter code. The second screenshot above shows the base and pillars at this point. I also removed the section pertaining to the OuterMesh in the GCode generator.

Updating the Fibers

div distance with pillar interval, hair not fixed.png
final params.png
final params perspective.png

After Step 3, the base and pillars matched each other perfectly, but there were a lot of issues with the fibers (shown in green in the first screenshot above). Since they were still using the parameters from the starter code, they weren't weaving between the pillars properly anymore. This was because the HairPoints cluster- responsible for generating the fibers- took in a fixed number of pillars to weave around (6, in this case). I needed to replace those parameters so they'd be based on the same circle I'd used for the base and pillars.

I passed the base curve (the same circle used in the other parts) as a new input to the HairPoints cluster as well. Instead of using the NumPillars input parameter, which was no longer be used in assigning the placement of the pillars, I divided the length of the curve by the PillarInterval parameter to get the actual number of pillars generated. This was then used to map the path of the fibers around the pillars.

My first few attempts yielded some fairly misshapen fiber meshes, so I messed around with the PillarInterval input value and scaled up the circle a little bit until I got a structure that looked pretty good. There are still some inconsistencies in the weave (you can see some "waves" are wider than others), but for the most part it looked like it would hold up. The second and third screenshots show the final structure from the top and perspective views. It's not a perfectly closed cylinder, but it's pretty close and it should definitely have the fabric texture I'm trying to achieve.

Once this step was complete, I passed all the elements in the Grasshopper to a GCode generator object to get a single file with all of the instructions for the machine (linked here as "fabric_cylinder-1.gcode").

Printing the Structure

in cura.png

It was finally time to print!

Unfortunately, since I finally was able to get my printer fairly recently, I ran into a lot of snags when trying to connect to it. I have been able to complete some test prints of samples from the SD card, but I ran into a lot of issues with the printer drivers and I wasn't able to print from the GCode files on my computer.

When I opened it in Cura, the overall structure looked pretty small but overall correct (though Cura can't show me all the details). My main concern in printing is that it might be so small that the fibers interfere with each other around the circle- I don't think it should require additional supports.

I need to look further into the specific hardware issues I encountered, but once I get it working I'll add an update here with the final objects!