And now for something with aesthetics as its primary function: A duck light. I started with the battery-powered LED lights imitating little tea light candles. These lights are widely available at very low cost from discount stores and dollar stores. My local 99-cent store sold a pair of lights for 99 cents.
The lights consist of the functional base, incorporating the battery, the switch, and the LED. It sits under the cosmetic shell, which is a cylinder pretending to be a candle with an unconvincing imitation flame above it. A little prying action should be sufficient to separate the shell from the base.
The unremarkable cosmetic shell can go in the trash. Then measure the diameter of the remaining base. Use that as a starting point: Go into Onshape and design a custom shell for that base.
My custom shell project started with a surface that describes a variant of the popular bathtub toy duck. It was not difficult to import the surface data into Onshape, but making use of the shape turned out to be more difficult than anticipated. Onshape surface manipulation tools aren’t robust enough (yet?) to deal with arbitrary surfaces imported from elsewhere. In theory I can use the “thicken” command to turn the surface into a solid, but it and many related operations fail with a generic error message.
After some trial and error I found that the split operation works: Define a large rectangular solid, position it over the duck surface, and split the solid block into two: the duck and its negative. After deleting the negative, I have a solid duck shape.
In theory I can use the Onshape “hollow” tool to hollow out the duck shape, but again I was stymied by the error messages. To work around this problem, I started crafting shapes to manually carve out the interior. It didn’t take terribly long to hollow out the bulk of the duck this way.
After sending the hollowed-out duck to my 3D printer, I was able to mate it with the LED light base and now I have a custom duck-shaped tea light!