[OpenSCAD] Engineering Fits and Tolerance

Hugo Jackson hugo at apres.net
Wed Oct 30 00:57:00 EDT 2019

> On Oct 29, 2019, at 8:40 PM, shadowwynd <shadowwynd at gmail.com> wrote:
> If you are printing a bulbasaur, slop in the printer doesn't make much
> difference.

I know what you mean, and let’s face it, the world can always use another bulbassaur if it’s cute! :)

> If you are building parts that have to work with other parts - there is a
> dizzying array of variables.  Filament type / brand / color, humidity, flow
> rate, print/bed temperature, layer height, Z-Offset, edge curl/elephant
> foot, slicing algorithm, and even the infill percentage and support
> structure can subtly alter the print.  There are days when I marvel that any
> of this FDM stuff works *at all*.

Indeed… but the machines ARE getting better… more reliable, more repeatability and as I mentioned
With the advent of affordable DLP machines, we’re starting to move to some impressive precision.
But as mentioned in this thread I think there’s a clear division of responsibility of the machine to print
objects to the specifications it is given. All the factors you mention are relevant to getting a machine to 
print a part, but the goal is ultimately to get as close to the design specifications as possible, is it not?

If I specify I want a part that’s 30 mm wide +/- .05mm then that IS what I want… if my machine isn’t capable of
accomplishing that then I need to either find a machine that can produce those kind of tolerances or rethink my

> I can easily get 1mm+ difference between prints if I start changing
>> easily tweak a hole diameter by 0.2mm and it can apply to every hole in my
> model at the same time.

> diam = 10; // Ideal Diameter
> thickness = 1;  //Height
> // Fudge Factors - Printing on MakerGear M2, 0.2mm layer height, brown
> UltiMachine PLA 
> diam_e = 0.1;
> thickness_e = 0.04;
> /*  // Fudge Factors - Printing on Makerbot, 0.3mm layer height, Hatchbox
> white PLA
> diam_e = 0.0;
> thickness_e = 0.2;
> */
> //Create Model
> cylinder (d=diam+diam_e, h=thickness+thickness_e);

Personal experience shows me that I can get dimensioning of +/- .03 on a MakerGear M2, Prusa i3 Mk3 and a Monoprice mini-select and an XYZ DaVinci 1.0 Pro, for my
larger formbot I can get around +/- .07 tolerance. But that involves a lot of time intensive measurement and tuning, but as I’ve identified, I’m not
talking about Engineering Fits to address untuned printers, I’m just talking about incorporating tolerance dimensioning at a low level in OpenSCAD objects.

I confess that when I’m doing development I actually use a second dimensioning assist that is all about compensating for an untuned printer, I call it $slop. But when a project is finished $slop gets set to 0 (or [0,0,0] actually… one for each vertex) and I work with the printer to get it to printer objects of the dimensions I’ve specified rather than
having created a model that will only print accurately on the untuned printer I have sitting in front of me.

As I say, engineering fit is NOT about adjusting an untuned printer, it’s just about the clearances we want our interconnecting parts to have.

More information about the Discuss mailing list