When designing parts that should either fit with external objects or other printed parts, what measures can one take to ensure that the dimensions of the final print are accurate and fit the other object?

To my knowledge, you at least have two options to account for printer inaccuracy and shrinkage:

  • Adjust the space around joints in your CAD model
  • Adjust dimensional offsets in your slicer software

Are there any good workflows one can use to design and print 3D-models accurately without resorting to trial and error?


I think the best way to go about this would be to calibrate your printer and slicer as best you can. One of my pet peeves is when people upload STLs that have been adjusted to fit their printer/material. There are many suppliers of material that vary in quality as well as many materials and different printers that the tolerances shouldn't be built into the part because in the end it usually just makes it harder for others attempting to print the model.

If you aren't sharing models then all I can say is you are still better off to calibrate your printer and tune your slicer to your material. You'll have more luck with models from other people and have an easier time designing your own.

If you still have trouble then modifying the model is probably the last option. I don't know of any CAD programs that can work with problems 3D printers have so experience is going to be your only help. I know in Inventor you can go around and Thicken/Offset individual surfaces of the model to compensate or if you had a percentage for your shrinkage you could get creative with formulas in the sketches.

  • $\begingroup$ So basically: set printer and filament settings in the slicer to achieve as accurate dimensions as possible, regardless of the model printed. Then assuming the printer is doing the right thing, adjust margins in the CAD to make the parts fit (hopefully) on any printer. Sounds reasonable! $\endgroup$ Jan 18 '16 at 17:44
  • 3
    $\begingroup$ +1 "the tolerances shouldn't be built into the part" $\endgroup$ Jan 18 '16 at 19:32

Unfortunately, different firmwares and different slicers require different calibration techniques! There's a lot of software-specific advice out there, like printing a single-wall calibration box and measuring the wall thickness. That's a good technique for Slic3r, but not for Simplify3D. It can be very confusing.

Here's the general outline of what you should do:

  1. Rough calibration check for printer steps/mm. Do the values in your firmware settings make sense for your linear motion hardware? For example, you can calculate what the theoretical values SHOULD be based on belt pitch and pulley tooth count. Print something moderately big (~100-200mm) and check if it's +/-1-2%. If it's off by more than that, your steps/mm is probably wrong.
  2. Check for mechanical backlash using a backlash-checking print like this one: http://www.thingiverse.com/thing:252490 Tighten belts and perform other printer-specific tuning required to eliminate backlash. Backlash will throw off other calibration steps, so make sure there's no slop!
  3. Follow the recommended extrusion volume calibration steps for your slicer. This starts with measuring your filament diameter with calipers and inputting that into your slicer. And then you will usually either "print a single-walled box and measure the thickness" or "print a series of 100% infill calibration boxes and adjust the extrusion multiplier to the largest value that looks good without bulging." By measuring filament diameter and then adjusting an extrusion calibration setting in the slicer, you will be able to measure future filament and prints will come out right. Giving the slicer fake diameter values will force you to recalibrate every time the diameter changes. Note that you must redo this calibration for each FILAMENT MATERIAL and EXTRUDER DESIGN. Different material/extruder pairs will have different bite depths and effective drive diameter.
  4. Precision calibration check by printing a variety of object sizes and PLOTTING "desired size" as X and "actual size" as Y. Then find a linear fit equation, y=mx+b. (Do this separately for your printer's X, Y, and Z axes.) The value "m" is your scale error. You can use your slicer object scaling to fix this. For example, ABS usually requires 100.3-101% scaling to account for shrinkage. If you have scale error with a low-shrinkage material like PLA, you can adjust your firmware's steps/mm value to compensate. The value "b" is your fixed width error. Assuming you don't have backlash, this is usually caused by the small amount that molten plastic bulges out to the sides, or by extrusion volume calibration error. You can improve this by fine-tuning your extrusion volume. Many slicers also have "horizontal/XY size compensation" settings that you can use to shrink/expand the part by b/2 to correct the fixed width error. Any residual fixed-width error that you cannot correct with slicer settings should be added as a tolerance in your part models.

If you follow these steps, you should get +/-0.1mm or better dimensional precision on your prints.*

*Deltas not included. That's a whole other ball of wax.

  • $\begingroup$ Great post! I do actually have a delta (the Kossel Mini), but I am sure most of your suggestions can be related to some degree. Either way, I think this answer deserves to stay for the reference! :) $\endgroup$ Jan 20 '16 at 21:34

I think it's important to remember that a 3D printer is both an R&D tool and a piece of manufacturing equipment. As such, we should treat it and it's process similarly to other pieces of manufacturing equipment (ie mills, saws, etc.). Other (albeit traditional) manufacturing methods such as a mill will typically require post-processing to parts to remove any burrs and clean the parts. Since tools like a mill are a subtractive technology, it can already hold tight positional/dimensional tolerances. However, as 3D printing is additive manufacturing, it's difficult to hold the same tolerances directly out of the machine as compared to traditional tools.

For this reason, I would suggest planning time for a more traditional process after the print if tolerances and connections are a concern. This could be as simple as using a Dremel or using a mill/lathe. I would recommend increasing your shell/floor/roof settings in your slicer to accommodate the subtractive process though.

  • $\begingroup$ That is some very reasonable advice! I usually forget to add that extra shell/floor/wall when designing, and end up fiddling with some dremel tool on a model not fit to the task. $\endgroup$ Jan 18 '16 at 18:04
  • 2
    $\begingroup$ Glad to help. I've often screwed myself over during post-processing like reaming a hole to size and end up cutting too deep into the part and reveal the infill. I'll typically decrease my hole size in my CAD model by about 0.010" and increase my shell to about 5 or 6 to ensure I can ream the hole without this issue. $\endgroup$
    – tbm0115
    Jan 18 '16 at 18:25

A few suggestions I haven't seen explicitly stated in the other answers.

Export resolution

When you export your STL files you can increase the resolution. If dimensional accuracy is extremely critical, you'll want to confirm that the STL conversion process hasn't altered the dimensions of curved surfaces outside your max min tolerances. I.e. open your STL file in you CAD program and then re-measure the resulting surfaces. STL conversion for holes makes the wholes slightly smaller, and external curved surfaces slightly larger.

Material Swell

I've noticed on my printer that parts are typically slightly larger when printed. I've managed to account for this in my CAD model by shrinking certain dimensions slightly in CAD prior to exporting them. My dimensions are typically off by about 0.1-0.2mm in XY, which if you're making something with close fits it's worth tweaking the file prior to printing.


If I've got a part that needs to be perfectly flat, I'll use a raft with an additional ring (or two) of helper discs surrounding the part. For the flattest side I'll also print this on the build plate. If you've got two or more, best judgement.

Angled Flats

If i have a part with flat surfaces that are at angles to the the build platform I'll slow my extruder way down, 10mm/s is my go to speed. Keeping the extruder moving slowly will help to ensure that your edges and walls will be relatively smooth and with the least amount of distortion.

Calibration and setup

Everyone has said it, I'll say it again. Check your printer prior to a critical print. Any sag in your belts will cause drooping, Print a test part to ensure that your temperature settings are good for your filament, and that your extraction distance will minimize stringing.

I do a few test prints with a new filament and again about half way through a roll to ensure everything is still working properly, and if needed I'll tweak things as needed.


I print several pats that use 2.5mm "Pogo pins" which are spring-loaded electric contacts. I've found that many variables will influence the size of the holes I have in my design. Flow, temperature even different brands of filament will change the final size.

I create a profile for each part and specific filament. That way I can make changes without changing other parts/projects. Then I print a test piece with some 2.5mm holes and a few that are a few tenths of a millimeter larger and smaller. I also make holes in the test piece that are vertical and some that are horizontal as I've found that orientation to the layers makes a difference.

I then fit the pins in my test piece and note which orientation and diameter fit best.

After that, I lock down every variable I can think of! I added some desiccant beads to my filament storage bins and found even that increased the diameter of the printed holes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.