3D-Printed Mathematical Lampshades

(hessammehr.github.io)

64 points | by hessammehr 4 days ago

7 comments

  • givc 13 hours ago
    This is awesome. I’ve also been playing with OnShape to make lamps and it’s been quite challenging. I also tried Blender but the learning curve is just too steep for me. I like this idea of using Python. I might try OpenSCAD too like someone else suggested.

    Here’s my lamp if you’re curious, printed with a .8 mm nozzle, otherwise it would fail https://imgur.com/a/mRqw1pI

  • hessammehr 14 hours ago
    Just noticed that this has made it to the front page, so just had a quick look through to see if there are any broken links, etc. (as I have a habit of forgetting them) and added the missing OnShape link to the LED strip diffuser.

    Also recommend checking out the live Marimo notebook linked down at the bottom. Incredible what you can do with Pyodide + Marimo these days. I only wish there was a webassembly version of jax to make it easier to share random numpyro experiments.

  • mlmonkey 14 hours ago
    In theory, one should be able to use OpenSCAD to come up with fancy surfaces to 3-D print, right?

    I'm just dipping my toes in 3D printing, with a recent acquisition of a Bambu P2S

    • Zarathruster 13 hours ago
      I was in your shoes about a year ago with an A1 mini, getting into OpenSCAD to make my own keycaps.

      If you're getting into OpenSCAD I'd highly recommend getting Belfry ASAP.

      https://github.com/BelfrySCAD/BOSL2/wiki

      I wouldn't really consider using OpenSCAD without it

    • hessammehr 14 hours ago
      I haven't used OpenSCAD much beyond combining primitives. Truthfully these organic shapes are more of a use-case for 3D modelling software like Blender rather than CAD, but I'd be keen to hear if you end up giving OpenSCAD a go.

      My Bambu A1 mini has been reliable despite the challenging geometry; pretty sure your P2S will work just as well if not better. Good luck!

    • givc 11 hours ago
      I used OpenSCAD to create a map of Manhattan. It shows the live location of subway trains. It was surprisingly easy, I struggled a lot with OnShape and Fusion360 trying to do this because there were too many polygons.

      I found that starting with an SVG and extruding from there is perfect in OpenSCAD, but I’m sure I’m underutilizing it a lot.

      I wrote a bit about it here if you’re curious https://hackaday.io/project/202488-manhattan-subway-map/deta...

      • dekhn 6 hours ago
        Cool project, but just how many polygons are you talking about? Also, my guess is you did meshes, instead of breps- they are far more efficient in my experience.

        The largest mesh I worked with in Fusion 360 is a digital elevation map of California, it has 2.8M vertices and 5.6M faces and it's still possible to get things done (like making a CAM to carve a 2 foot x 2 foot map with reasonable details).

    • dole 11 hours ago
      I was able to take the image of the star-shaped graph from OP, fed it to claude and used this for the prompt: "figure out a good formula or equation for this graph and use it to create the lampshade in openscad. use the graph as the bottom for a lampshade, and taper it all up to center point. leave a hole at the top big enough for a lightbulb fixture to pass through." It did a surprisingly good job of generating the OpenSCAD, STL, and preview renders in-browsers.
    • horacemorace 10 hours ago
      Yes. Claude is surprisingly capable in this area, maybe because the shapes are so simple. Using a slicer in vase mode should make it print quickly too.
    • aforwardslash 12 hours ago
      > In theory, one should be able to use OpenSCAD to come up with fancy surfaces to 3-D print, right?

      Yes, but it is painfully slow. Even perforated patterns are quite slow to generate.

      • dheera 9 hours ago
        OpenSCAD nightly using the Manifold engine is a lot faster than the CGAL crap the stable version ships with
        • nszceta 7 hours ago
          I am learning build123 and skipping OpenSCAD altogether
      • MengerSponge 12 hours ago
        Aside from Fusion360, is there a Free (or FOSS) cad package that uses breps and is scriptable?

        Fusion360 is just stupid fast at perforations and sophisticated modeling constructions via its python API. I use it because it works well, but I'd be happier if I didn't have to maintain that Autodesk dependency...

        • dekhn 10 hours ago
          freeCAD is brep based and scriptable.
          • embedding-shape 8 hours ago
            FreeCAD via AstoCAD (https://www.astocad.com/ - 4€/month) is quite more user friendly too, compared to the vanilla experience, for those who want to do CAD sometimes and forget things between uses. It's made by FreeCAD contributors who push things upstream too.
    • nomel 10 hours ago
      For this case, I'm not exaggerating when I say you would probably have an easier time generating the meshes yourself in python and something like the trimesh library to load the vertices into.
    • dheera 9 hours ago
      Yeah OpenSCAD would have made this a lot easier than the exported-SVG-DXF pipeline
  • Aurornis 13 hours ago
    Cool project. The author used PLA, but for anything near a heat source PETG or ASA would be a better choice. PLA will soften and deform at only mildly elevated temperatures. An LED light strip will generate enough heat to cause normal PLA to warp and droop over time.
    • JKCalhoun 13 hours ago
      Was going to comment similar. Definitely don't want to use these lamp shades with incandescent bulbs (too hot).

      As per drooping over time, perhaps for some of these models the "Persistence of Memory" might apply a nice transform to the shapes.

    • hessammehr 12 hours ago
      Good to know about the risk of deformation due to heat from the LED strip. Ours hasn’t visibly warped over the past few months of use, fingers crossed it will last a little while
  • nszceta 7 hours ago
    Author should consider going straight to G-CODE (skip the STL)
    • bschwindHN 4 hours ago
      I came here to comment this too - if your surface is entirely mathematically defined, converting that to what your 3D printer speaks is probably easier and gives better results than approximating it with triangles and then converting those triangles to G-code.
  • lambdaone 9 hours ago
    Great, but PLA is somewhat flammable.