For our library I chose to use wire bakers' racks for the shelves because they were a lot more durable than the cheap pressed-wood shelves for not much more money. Also, I liked the idea that they would not gather dust. One problem with that plan is the difficulty in keeping books from falling over. I decided to design and print some bookends to help out with that.
If all you want is those bookends, just download the finished product from thingiverse and print what you like. If instead you want to learn how to use the free Blender 3d modelling program to engineer your own 3d printable things, then keep reading onward here. I'll walk you through from concept all the way to finished product.
Step 1: Measure Stuff
For this you'll want to get yourself a set of digital calipers. If you watch the sales you can get one for as little as $10 at Harbor Freight. I also recommend printing a set of inside/outside calipers. These can be invaluable for measuring difficult shapes. And, of course, you'll want a pencil and paper.
Your drawing doesn't have to be a drafting class masterpiece. You know what it means. Mainly you just need to get your measurements down on paper in a way you'll understand when you get back to the computer.
Step 2: Set Up Blender
In other words I'm making the assumption that you know how to navigate around, add objects and modifiers, switch layers, tweak points in edit mode, etc. If you don't, you may want to pause here and go get familiar with all that.
Anyway, Blender has an interesting quirk when it comes to exporting .stl files used for 3d printing. That is, Blender exports in "blender units" rather than metric or imperial units. That's not only annoying not having real-world units, but even worse, even a relatively small part will be too big for Blender to render a picture of. Blech! I'll show you how to get around that.
First, go to the scene tab on the right and switch to metric with a scale of 0.01. Now you can type in units such as 1cm and it'll do the right thing AND when you render out an image it'll be the right size.
Now there's a new quirk. When you export a .stl it will be too small. Not a big issue. You just need to remember to scale the part up 1000% before printing. (I'll show you how to do that later.) Since I may want to share this file, I switch the bottom window frame to text editor (using the icon in its top-left), and create a friendly note about what's going on so the next person doesn't get confused.
If you use Blender mainly for 3d printing, you can save all this stuff as the default scene so that it all starts up ready to go.
One more bit of housekeeping. You can organize things in your project the way you like, but here's how I do it: I use the top row of layers for the final parts and the layer directly below it for the sub-components of that part. Also I keep all my camera, lights, etc for rendering on the far right layer (number 0) so that it's out of my face while modelling.
Step 3: Model the Problem
You may or may not have to do this, but I always like to because:
1) You can use Blender's boolean modifiers to cut out mating parts.
2) You can see visual confirmation that things will fit and you didn't make a mistake.
3) You can render out a picture of your design and show how it all fits together.
Just a brief overview of how I did that (please don't be frightened off by the Blender-speak). I created cylinders the size of the shelf wires, and also a circle of that diameter. The circle I told to follow a spline path to make one section of the wave pattern on the front of the bakers rack. Then I added array modifiers to that and the thin/middle wires to duplicate them.
Step 4: Engineering
What I came up with was the idea of hooking around the shelf wires. That way when the books press on the top of the bookend, it'll try to lever instead. The more weight the tighter the hook will "grab" the wire.
I created a simple model to test this. Not much more than a wedge with some hooks on the bottom. I also sized this such that I could saw a prototype out of scrap 2x4.
Oh yeah. I also came up with the height by taking about 2/3 the size of the tallest books. That seemed like it could hold pretty much anything back without being excessively large or out of proportion.
Step 5: Prototype
Step 6: Make It Pretty
While thinking about possibilities my mind wandered in to the realm of concept art (like for movies and tv). I thought about how I always liked the bronzy intersecting-curves motif in Star Trek Deep Space Nine. (Example pic.) Okay, so it wasn't my favorite series of the franchise. Really the only redeeming part of that show was Quark, who was awesome! Dax was fine too, I suppose, for a gal who's really an "old man", who's really a big cockroach. But mostly Quark.
Where was I?
Oh yeah, so, remembering that the force is coming from the book side, I kept the same wedge idea only cut it down into a pair of mirrored arcs. I also rounded the clips on the base to match better.
Even after all that, I want to emphasize that designing for 3d printing is a little more than just letting your imagination run amok. You have to think about how the machine works and what are its limitations. The biggest one is that it builds up plastic on top of the layer beneath it. What's that mean? Well, you can't just print out into open space. You need something beneath everything you print. In other words, no steep overhangs and you probably want a good, flat surface to start with**.
For this reason, I'm actually not planning on printing the bookend as I modelled it, but I'll rotate it so that the book-side is laying flat on the build platform. From there I'll take care to not have anything floating and it should print nicely.
(** Most 3d software can generate temporary "support structure" to hold up overhangs, but it can be annoying to remove, leaves a scar on your model, and is very wasteful. Better to start with a good design than to lean on that crutch!)
Step 7: Make It Prettier
You know what's so interesting about the new world of 3d printing? Physical things are now little more than ideas, floating out in the ehterwebs. Enough philosophy. What I did is run over to thingiverse and grab a plaster fresco thing of a lion somebody had uploaded. Maybe it was the "classical" feel, maybe it was a literature / Narnia reference... I don't know. I just thought the lion would look cool, okay?
Normally when you import an .stl file into this blender environment you'd need to type 0.1 in the x,y, and z scale boxes. That makes it "actual size". This time I actually needed to scale it down even more than that because it was so huge originally.
I added a thin pancake of a cylinder around the lion to make it a sort of medallion and then hung it from the rest with circular rings. Again, when you design stuff, keep in mind the limitations of the tool. I made sure that the medallion, the rings, and the bookend would all sit flat against the build platform.
Step 8: Export From Blender
All you have to do is select everything you want and do file->export->stl. Done!
Note that if you don't have that option in your menu, you need to go file->user preferences and enable the stl export addon.
Step 9: Fix Up in Netfabb
Fortunately there's software called netfabb where even the free version is capable of both detecting AND FIXING 3d idiosyncrasies that would mess up your print. (P.S. I'm not affiliated with these guys and I get nothing for plugging their software. I only use it and like it.)
Here's the workflow I use. 10 easy steps:
1) wait for the annoyware license to time out and hit "Later" to enter the program
2) click project->add part and import the stl you are fixing up
3) if you want to print in a different direction than you modeled in (remember, I do. I want the book-side to lie flat on the ground) hit part->rotate and flip it whichever way you need.
4) IMPORTANT: Don't forget that this is too small! Click part->scale and type 1000% in one of the boxes. The other fields should change themselves.
5) Now the part ~looks~ too big. If that annoys you just hit view->zoom to->selected parts and it'll look like before
6) Now for what we came in here for. Fix up the model by clicking the red cross icon.
7) It's got a lot of doodads in there, but the easiest way to get what you want is just click the "Automatic Repair" button and execute the "default repair". Usually its pretty fast, but it can take awhile and look "frozen". Just leave it. It'll be back.
8) Once that's done click "Apply repair" and then "remove old part". (It's easy to miss that, and if you do then your repairs are all lost and you're no better off than when you started.)
9) The last thing to do here is go part->export part->stl. It'll automatically name it "whatever (repaired),stl" so you can keep the original. Or just click on the name of the original to overwrite.
10) Sometimes it'll bring up another "do you want to fix?" dialog. I've never worried much about what it's jabbering about. I just always say "yes".
Step 10: Print One!
As you can tell, it wasn't perfect. The top corners decided to lift while printing, and the lion emblem did not attach properly. I'll show you how to recover this print, then we'll tweak the stl so it won't happen again next time.
Step 11: Clean It Up
You can actually "solder" plastic with a regular soldering iron with a flat tip. Just use adequate ventilation! ABS is much nastier for fumes than PLA, which smells like burnt popcorn and that only if it is, in fact, starting to burn. A termperature controller to turn down the heat on your iron could be a good idea as well. Otherwise, just work fast and don't keep the heat on any one place for too long.
I filled in some gaps with melted plastic and then hung the lion medallion back on with the filament directly. Where it lifted I stuck it back together with plastic, but that was by far the ugliest part of the repair job.
Step 12: Try It Out
Also, even with the crude patch-job it looks great at one pace away.
Step 13: Fix the Problems
By the way, I would've noticed this problem (and not have had to repair the botched job) if I had only looked at the print preview before printing it out. Probably a good habit to always look at that before printing a new model. That'll be my New Years Resolution.
I eventually had to use a boolean modifier in Blender to "union" everything before exporting. (This was no fun as Blender's boolean modifier is a really finniky in and of itsself.)
The other issue with the print lifting is a plague common to all 3d printing. People use special ABS glue (for ABS plastic), heated build plates, blue painters' tape, even hairspray to try and prevent it. Though this particular build did lift a little, it wasn't horribly bad, so I decided to add "mickey mouse ear" rafts to the tips. With any kind of luck, this should solve that problem completely.
Step 14: Done!
I'm happy with that! :)
Step 15: Share With Others!
There are plenty of sites for sharing 3d models, but probably the most appropriate one is thingiverse. If you don't already have an account there, they make it pretty obvious how to create one.
To add your thing to thingiverse, click on "create->upload a thing" at the top of the page.
You drag and drop your stl files and blender file onto the "files" area of the page. (BTW, I always like to export extra stl's people might want. For instance, I exported one without the lion.)
Add some final pics of the item you printed and make one the first image. People are much more likely to download and enjoy your thing if they can see that it actually prints and works. Also, you don't necessarily need to add renderings of your models Thingiverse will generate them automatically from the stl files. I chose to upload a few renderings anyway to show people how its supposed to attach to a bakers rack.
Give it a (brief) name and description.
There is an optional area for instructions. I decided to mention that the ears are meant to come off after printing and sometimes I describe how the Blender file is laid out so people can modify it.
Don't forget to give credit to anybody else's work and change the copyright for how you would like to be credited.
Hit OK, and enjoy the fun!
BTW, Thingverse uses the Amazon S3 distributed database. What that means is that once you upload/chance something, that particular database needs to sync up with all its little database pals around the world to update what changed. What that means to you is don't expect all your images and changes to be available instantaneously. Don't be all, "Oh no, my pic didn't upload!!!". Just relax a couple minutes and give it a chance.
(Here's the thingiverse link for this thing.)