Printing separated parts that can fit
by whitemousegary, published
Please refer to http://www.thingiverse.com/thing:52946 instead. That is a better solution. (2013-02-27)
Printing separated parts that couldn't fit has always been a problem to me. I tweaked the skeinforge engine in ReplicatorG to add an offsetting 3D model inward funtionality. Here is the result http://www.youtube.com/watch?v=ieMXp1h0iM0 .
Result0: http://www.youtube.com/watch?v=BKLQPbExpu4, inward offset (0.3mm, 0.3mm, 0.0mm)
Result2: http://www.youtube.com/watch?v=JbhVv7fzkfc, inward offset (0.15mm, 0.15mm, 0.0mm)
The plugin for skeinforge-35: http://www.thingiverse.com/download:95789
The plugin for skeinforge-50: http://www.thingiverse.com/download:95790
The 3D models downloaded from thingiverse.com (or internet) come with a variety of quality. Some are more thoughtful, and some are not. In case you got a less elaborated 3D model which having multiple parts that are too tight to fit, it would be intuitive to just have the model offsetting inward a little bit directly, such that parts can fit. (There are some good reasons why parts are likely to be too tight, see http://reprap.org/wiki/ArcCompensation and http://hydraraptor.blogspot.hk/2011/02/polyholes.html.)
I googled and waited for a such a solution. Finally, I went out of patience, and... here we go...
1) Download the file "skeinforge-50-carve.zip" in this post, and
replace "YOUR_REPLICATORG_FOLDER/skein_engines/skeinforge-50/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py" Please remember to backup the origin one, they are just python scripts, basically safe to be switched. (For skeinforge-35, please download "skeinforge-35-carve.zip" and replace the "carve.py" in "skeinforge-35" folder instead.)
2) Restart your ReplicatorG, go to MENU>Gcode>Edit Slicing Profiles, choose your profile and click Edit.
3) Go to Carve Tab under Craft Tab, you will now see a new set of setting "Offset model inward". In the setting, you have four choices. They are enable/disable, x, y, and z offsets (mm). X/Y offsets should be the same value normally, I separated them is just to make it more general. The Z axis is usually fine, so you can just leave it zero. In case you really want to change it. Do so. I'm calculating the z-offset correctly there. Be reminded that, the enable/disable state is disabled by default, please enable it before you use it.
In case you think it is too invasive to make change to the application, you can use the standalone version, shrinkmodel.py, instead. Download shrinkmodel.py in this page, put it in the folder "YOUR_REPLICATORG_FOLDER/skein_engines/skeinforge-50". Open it, you will see a dialog, choose your .stl file by click "Open file to shrink" button; A shrinked .stl file with name FILENAME_shrink.stl will be saved to the folder of the input .stl file.
This is it. Let's see some results now.
There is a .stl file "test.stl" in this page. It is a pair of hole and plug directly come out from Google Sketchup, edge to edge touching each other. Here is what I got http://www.youtube.com/watch?v=BKLQPbExpu4 , and they fit.
By the way, there is a bonus came with this plugin. The same adjustment is still valid after scaling. So, a design can be scaled freely, and a plug will still fit into its hole. For instance, http://www.youtube.com/watch?v=ieMXp1h0iM0 .
For the record, I'm using a MakerBot Mk7 with HBP, 0.4mm nozzle. The two models in this post were printed with model inward offset (0.3mm, 0.3mm, 0.0mm). If you want to make parts fits tighter, you can lower the offset values of X Y dimension to achieve it.