Press-Fit Triangle Geometries
A press-fit kit consisting of all triangles that allows joint at multiple angles to create different geometries using the triangles as faces.
Supplies
- Rhino
- Grasshopper
- Ultimaker Cura
- Ender Pro 3
- Filament
- Sandpaper
Generating Test Connectors
First, start by generating slots that start at a minimum tolerance of 0.066 mm and increasing the tolerance by 0.065 mm for every additional slot. The shafts are rounded with BlendEdge at varying radius in order to test the connections. Since I want the connection to add more like a hinge where the connection can happen at different angles, I figured that rounded edges on both the shafts and the slots will help make more degrees of rotation possible.
Testing Connectors
After finding out which slot fits the shaft better, I printed a slightly larger version of the shaft realizing that the original dimensions are too small to have the details I needed (e.g. the nice, rounded edges).
I printed a few more slots with minor adjustments around the tolerance from the slot with a better fit to try to narrow down a good tolerance to use.
Note that the thickness of the pieces should be roughly equal to the width of the slot so that a 90 degree joint doesn't overly protrude.
Creating Press-fit Triangle Pieces
It is important to note that Python trigonometric functions take in angle parameters in the unit of radians. I had some trouble trying to get the third point of the surface to form an equilateral triangle because I assumed radians. My bad.
Once we have the triangle, we can find where the surfaces for the shafts and slots are supposed to overlap the triangle by using the property of similar triangles to shift the 2 points of each surface along the edge of the triangle.
Make the shaft surfaces and slot surfaces different output from the Python Grasshopper component so we can conveniently BooleanUnion the shafts and BooleanDifference the slots.
Refining Triangle Pieces
Once we bake a triangle piece from Grasshopper into Rhino, it is important to BooleanUnion the entire geometry in Rhino again. For some reason, the shafts were detached from the triangle from the bake.
Now, we will use BlendEdge to created rounded edges in order for the triangular faces to rotate against each other. My pieces have a thickness of 5mm so I used a radius of 2.3mm for BlendEdge
Testing Edge Connections
To further ensure that we are using a proper amount of tolerance, I printed the edge of the triangle specifically. The first print wasn't particularly successful as the tolerance was not high enough. Subsequent prints showed that not only do the edges fit together, but they are also able to form joints at different angles.
Testing Triangle Connections
Now we can print the 2 whole triangles. They fit together as intended.
Assembling Geometries From Triangles
With multiples of these triangular faces, I was able to assemble a hexagon, a tetrahedron, a hexahedron, and an octahedron
Changing Up Triangle Angles for Different Geometry
By manipulating the angles passed in as parameters into the Python Grasshopper component, we can generate equilateral triangles as well as 45-45-90 triangles. 45-45-90 triangles enable us to form square surfaces.
By combing a square surface with equilateral triangle surfaces, we get a pyramid.
Refining Geometry Connections
Sometimes I would get a triangle print that has good tolerance on 2 out of 3 edges but not enough tolerance on the last one. An incredibly manual solution is to use sandpaper to slightly sand down the slot or shaft.