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
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
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!
Step 3: Exporting the Cut Files
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
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.