This instructable describes how to create triangulated lampshades (or, I suppose, any triangulated form) from a simple mesh. This is a little trickier than it might first appear, because while each triangle joins to its neighbors with no thickness in a digital mesh, any built version will need to account for the thickness of the material being used. The connection geometry to ensure the proper angle is maintained between adjacent triangles is also generated in the script and all parts are laid down and outlined so that they're ready to be cut. If you're interested in trying to make your own lamp you'll need the tools and materials listed below:
The code and model files on github
Rhino 5 for Windows (sorry, the code's in VB, not Python, so this is a Windows-only project)
Access to a laser cutter or CNC, or an incredible amount of patience, a large format printer and an exacto
A material you can cut on that laser cutter or CNC (I used 1/8" plywood)
Optionally, a thinner translucent material for the interior of the shade (I used translucent yupo)
A glue appropriate for your materials (I used UHU extra)
Some knowledge of 3D modeling is helpful, but shouldn't be incredibly necessary. The code is also fairly simple and should be modifiable by anyone with basic programming experience. This project can vary in time and cost based on the materials you choose, the complexity of your mesh and the digital fabrication technology you use. I spent about $40 on materials and, of course, quite a bit of time writing all the code :)
Step 1: Preparing a base file
Open the base file you downloaded from github (lamp base.3dm).
You'll see three layers: mesh, edges and armature.
The mesh layer contains the base triangulated mesh. If you'd like to make your own lamp, this is the layer you'll put your mesh on. Your mesh can be drawn in nearly any modeling program and then imported using an stl, dxf or any of the other formats Rhino can import. The only constraints are that the mesh must be triangulated (this can be ensured using the TriangulateMesh command) and that the normals must all point in the outwards direction (do this by using the UnifyMeshNormals command combined with the Dir command to check the normal direction). Also, keep in mind that the largest triangle in your mesh must be smaller than the size of your material or the bed size of your digital fab machine, whichever is smaller. Once you've created your mesh to your satisfaction make sure that it is the only object on the mesh layer.
The edges layer contains line describing each edge of the mesh that needs to be joined with an adjacent edge. In practice, this means every non-open edge in the mesh. These lines can be easily created using the DupMeshEdge command and clicking on the edges you want to create. Once you've created all the edges you want, make sure that those lines, and only those lines, are on the edges layer.
Assuming you are, in fact, making a lamp, you'll need some geometry to connect the lamp form to the lamp shade threaded connector. You can use the one I've modeled as a guide, but you'll need to measure and figure out what will work for you. When you're done, place the polysurface you've created on the armature layer. After the script has been run, you'll also need to add an outline of this piece to the cut file by hand.
Step 2: Running the script
Type the EditScript command to launch the script editor. Load the script file you downloaded from the git repo and run it. Choose your material thickness and the width you'd like for your frame. Those values will depend, of course, on the material you've chosen and the overall size of your lamp. It's important to actually measure your material thickness and not to rely on the value it is spec'd at.
Your model view will remain the same (updating the model view is disabled in the script for efficiency) but you'll see a bunch of output written to the console. Eventually this will stop and your view will update to show the completed lamp!
tri lamp rotate.mov(516x396) 25 KB
Step 3: Exporting the cut files
Switch to Top view to see the laid down pieces to be cut.
Arrange these pieces as appropriate for your material and digital fab tool and export. Chances are your tool can use a dxf, but there are other options if that's not the case. You may want to code them by color or layer to score the text and cut the edges. This is also the time to create the cut line(s) for your armature piece and include them with the frame and connector cut files.
If you want to make a filled in shade, export a second set of cut files using only the exterior curves of the triangles.
Cut your frame and connector pieces out of your thick material, and your shade pieces out of your thin material.
Step 4: Assembly
If you've created the triangle infills, begin by gluing those to their appropriate triangle frame. You may want to leave one unglued on two sides to help you access the attachment point to your lamp hardware and for ease of changing bulbs later. I used two small magnets, on on the frame and the other glued to the back of the infill panel to keep my free corner down.
Then, using your digital model as a guide, slowly assemble the lamp by gluing the connector wedges to the triangle frames. Add your armature piece as soon as you can. If you wait to add it, the armature may become impossible to wriggle into place properly.