3D Central
Paperclip Figurine
Let's get this out of the way straight off. I acknowledge that Clippy was a Microsoft idea and that "he" did not have feet! This is my reinterpretation of a paperclip figurine, and mine has feet so he can stand up on his own. I suppose that also means this isn't Clippy and Microsoft will not care. Either way, I don't intend to manufacture these for sale. My creation was primarily a design challenge.
The feet are technically an afterthought. There is nothing too tricky going on, a couple of cylinders for the sole and some squashed spheres for the "upper" of the shoes to which a couple more cylinders were added as legs. And I did them near the end of the design.
It was the paperclip itself which took most of the effort in this design. The straight sections are easy, just cylinders. The curved segments took me a lot of trial and error to get them lined up, but each curved section is pretty straightforward. Each curve is half of a rotated extrusion of a circle which is sized to match the straight section of the paperclip. Here, using difference() lets me keep just the part not overlapped by a cube.
My stable version of OpenSCAD does not offer restricting a curve extrusion, but new, testing versions would let us specify any part of a curve. I look forward to using the new versions when they become stable. If you are bold enough, you can download the fresh versions to try.
module end1(){
// large outer end
difference(){
rotate_extrude(convexity=10)
translate([10.5,0,0])
circle(r=2, center=false);
translate([-25,0,-3])
cube([50,50,6]);
}
}
The little curve at each end of the clip "wire" was not done with difference() like the half curve. It was done using intersection() which is sort of the inverse of difference() in effect. This time only the place where the ring and the cube overlap is retained. In either case, the next steps are the tricky ones.
module hook(){
// small hook segment
intersection(){
end3();
translate([10,0,0])
rotate([0,0,-30])
cube ([10,10,10], center=true);
}
}
There are three half loops of three different sizes to make the complete paperclip. Getting those three loops into place and then adding the straight sections AND the little hook curves took me a lot of fiddling. When I thought I was finished, I ran the compile step (F6) only to find that there were issues of "non 2-manifold" errors. That typically means that two surfaces are too close, sharing a common plane, as I understand it. In this design, there were EIGHT such locations. The correction demanded that the faulty locations get an overlap instead of just barely meeting. Each paperclip loop intersects twice with a straight section of "wire". Moving a loop or lengthening a straight part fixed one connection, but also sometimes broke an earlier fix. Many tries were required before the errors were all fixed. That's not unusual for my projects. It isn't exactly "fun", but it is part of the challenge of doing 3D designs!
The eyes are fundamentally a bunch of squashed spheres added to or deleted from one another. Then a little tilting and twisting makes them gaze upward but not quite the same way for the left and the right. The same is true for the feet which are set at different angles to try to give a more "natural" stance.
I was able to get away with no support for the original size at about 65mm tall. Standard (though optional) grid support is provided by Cura, my printing slicer software. Cura's support will support parts which overhang all the way down to the print platform. In this situation the eyes are the main overhanging parts. Unfortunately, the eyes need support right above the feet. Standard support does not work in that case. My solution was to make my own supports which you can see in the next illustration and by examining the code of the SCAD file. I'm also posting two versions of the STL file in case you have an issue. One has the supports which cut away easily after printing. The other does not have the supports and worked fine for me when printing small versions of the project.
Available Files:
SCAD files for study/modification and STL files for quick prints
clippy01.scad - clippy01.stl - version with (improved) supportsclippy01-nosupport.stl - version without supports if you can get away with it.
GPL3 License