Patterned Grid

by qiu0717 in Workshop > 3D Printing

972 Views, 2 Favorites, 0 Comments

Patterned Grid

Screen Shot 2021-04-05 at 11.26.50 AM.png
Screen Shot 2021-04-05 at 11.27.25 AM.png

This tutorial is about how to make 3D-printable ornamental grid object with Rhino and grasshopper. The example made with this method is shown above.

Assuming you have some knowledge of Rhino and Grasshopper, I am explaining the workflow of creating these 2.5-D object.

The 2.5-D object is basically created by extruding a 2D pattern along with the Z-axis(vertical). The entire process is done within Grasshopper, and can be divided into four steps:

1. Using Python code and built-in tools to generate a 2D mesh of desired pattern on the XY plane

2. Using Pufferfish plugin to thicken the edges and vertices of the 2D mesh, because the edges in a 2D mesh has zero thickness

3. Using Boundary module to add the boundary of the thickened 2D mesh so that it become a extrudable 2D shape

4. Using Extrude module to extrude the 2D shape along with z-axis

Choose a Base Grasshopper Code

I was given 5 different Grasshopper code to play with. They are development checkpoints of a complete complex Grasshopper project, so they are incrementally more complicated. I started with the gridv5, which is complete code with most functionalities. However, after many rounds of trial and error, I realized it does not work for me. Firstly, it is too complete so the output maintain certain inherent type of style. I find it difficult to create novel patterns that are interesting to me. Secondly, there is a double-loop computation to connecting points between which the distance is smaller than certain threshold. The threshold is extremely sensitive and the computation takes a long time. Both element make the tweaking process frustrating. Thirdly, the code is already developed so I can't make too many changes without breaking it down.

Instead, I choose to develop my own version based on gridv3 code. It has only the most essential parts and I can understand everything about them. Moreover, I already saw some interesting patterns were generated by the v3 code during the instructor's demo. I think I can continue improve on them. However, the v3 code only generates a 2D pattern, which is only the first step of the entire project. I need to finish on my own the rest part of the mesh thickening, making boundaries, and extruding the boundaries into 3D objects.

Tweak the V3 Code and Generate an Favorable 2D Pattern

Screen Shot 2021-04-05 at 10.53.08 AM.png
Screen Shot 2021-04-05 at 12.24.52 PM.png
Screen Shot 2021-04-05 at 12.24.45 PM.png
Screen Shot 2021-04-05 at 12.24.35 PM.png
Screen Shot 2021-04-05 at 12.24.25 PM.png
Screen Shot 2021-04-05 at 12.24.19 PM.png

The V3 code begins with filling many points within a rectangle area defined by the diagonal two points. Then, it uses Delaunay Triangulation to connect points into triangles. There are several parameters to mess with to explore different patterns.

1. The location two points to change the area of points, which is also the boundary of the 2D pattern

2. The point density along x-axises, which will also control the point density along y-axis.

3. The mod number and the mtype, the different combinations of which generate different patterns.

Solve Non-symmetric Issue

Screen Shot 2021-04-05 at 12.24.59 PM.png
Screen Shot 2021-04-05 at 12.25.21 PM.png
Screen Shot 2021-04-05 at 12.25.32 PM.png

After generating different shapes, I found it is difficult to get an geometry that is symmetrical along the diagonal axis. I checked the code, and determined that it is due to the ry is not always equal to rx, so I changed the code.

Now I can generate symmetrical grids with the same patterns, which are more favorable to me.

Adapt the Later Process From V5 Code Into the Current Code

Screen Shot 2021-04-05 at 12.42.56 PM.png
Screen Shot 2021-04-05 at 12.36.15 PM.png
Screen Shot 2021-04-05 at 12.49.05 PM.png

The v5 code inspired me that once curves of the 2D pattern mesh is acquired, the later process should be the same. So I added the modules in the red rectangle according to the v5 code, and made all the connections.

The curves(edges) of the 2D mesh are now thickened by pufferfish plug-in, and enclosed with be boundary module, then extruded with the extrude module.

What was missing from the v5 code is the constants of those modules. For example, the extrude module does not work by default because there is no vector input in the "D" port. This is found by referring to the documentation of the extrude module. So I add the vector module as an input to the "D" port, which controls the height of the extrusion. The same work was done for other modules.

Import Into Ultimaker Cura for Object Slicing

Screen Shot 2021-04-05 at 12.51.25 PM.png

Bake and export the generated model into .stl file, and import it into Ultimaker Cura.

After adjusting the size to the proper, the estimated print time is 6h29mins.