My printer is a Flashforge Creator Pro, using ABS plastic. I used .15mm layer heights, and the print only took a couple minutes.
I use the "ABS Slurry" technique to get my prints to stick without a raft or brim. ABS plastic dissolves in acetone, and you can lay down a thinner-than-paper layer of it on glass printing beds by letting solution evaporate. It really works great for me.
The key looks and feels really nice.
Next to the real one, the dimensions look almost perfect! They're offset for comparison in the image, but they're really identical!
This is after 4 or 5 iterations of printing and gently trying it in locks. I even broke off one key deep in the lock and had to disassemble it. Luckily, with this kind of lock a few minutes of disassembly gets you down to the tumbler and housing. Unfortunately, I didn't think to take photos of inside the lock. I still couldn't remove the key so I had no choice but to remove the cylinder, exposing the tumblers, springs, etc.
In an exciting coincidence, a magic marker is just the right size to poke out the inner cylinder of the lock, but keep all the spring and pin nonsense in place. I did mange to spill the lower part of the tumbler pins, the ones that rotate with the key.
Fortunately, this level of teardown granted me enough access to extract the broken plastic key. As for the disorganized tumbler pins, inserting the correct key into lock and finding which pins laid flush with the outside of the cylinder was a no brainer. Put the lock back together, put the handle back in the door, no problem!
Luckily, this fail is not associated with the images above - the key pictured was a later attempt that was successful! The key opened and closed my lock once, was carefully removed in-tact, and placed on the victory shelf.
So, the verdict is - Yes! You can 3D print working copies of real keys. I suspect a new, tight lock might not work as well - mine is worn and it certainly helped.
If anyone wants the OpenSCAD source files, you can find them in the project's files. As you can see in the previous entry's screenshot, the code defines a key() function that generates the model. It takes a single parameter - a list of the 5 tooth heights, values 0 through 6.
Actually, it takes other values too, that change the geometry and dimensions of the key, a la parametric design. With more options implemented, it's possible to expand this code to generate models of other key types. However, at present, you can really only change the size of the handle or add length to the key you don't need anyway. But hey, that's a project for another rainy day.