January 28, 2026
Hot lamps, hotter takes
3D-Printed Mathematical Lampshades
Mathy lamps go viral — then the PLA panic starts
TLDR: A maker 3D-printed wavy math lampshades, ditching a failing design tool for Python and a huge file. Comments erupted over material safety—PLA heat and flammability—while tool debates (OpenSCAD vs Blender vs Onshape) raged, turning a cozy art project into a cautionary glow-up.
A home tinkerer turned wavy math equations into a glowing lampshade, sketching the curves in Desmos, struggling with Onshape, and finally asking ChatGPT for Python help to generate a massive 3D file. There’s even a live browser demo using Pyodide and marimo so you can play with the shape without installing anything. It’s nerdy, it’s clever, it’s cozy — and the comment section promptly burst into flames (metaphorically).
The strongest opinions? Safety first. Veterans warn the author’s plastic choice — PLA, a common filament — can warp with heat and even catch fire, pushing for sturdier plastics like PETG or ASA that resist higher temperatures. Cue the drama: some cheer the art-meets-math glow-up, others shout “fire hazard nightlight.” Tool wars erupted too: one camp swears by OpenSCAD (code-based modeling), another groans that Blender’s learning curve is a cliff, while Onshape gets side-eye for choking on complex curves. Python gets a hero moment — “if the app can’t loft it, script it.”
There were laughs: someone flexed a fancy Bambu printer, another dropped “r/OSHA vibes,” and a brave soul shared their own lamp built with a chunky 0.8 mm nozzle to keep prints from failing. The author even popped in, front-page cameo style, fixing links and hyping the marimo demo. Verdict: gorgeous math art, hot debate, and a community split between “wow” and “whoa.”
Key Points
- •A bespoke lampshade was designed by sweeping a 2D mathematical profile into 3D, inspired by viral 3D-printed lampshades.
- •The 2D profile was graphed in Desmos, exported to SVG, converted to DXF in Inkscape, and imported into OnShape.
- •OnShape’s loft operation failed with a complex 1,047-point profile, prompting a switch to Python for geometry generation.
- •A modified Python script generated a scaled profile transitioning to a single top point, producing a ~70+ MB STL now printing.
- •The project’s notebook was converted to marimo, enabling browser-based visualization via WebAssembly without local Python install.