[OpenSCAD] Engineering Fits and Tolerance

nop head nop.head at gmail.com
Thu Oct 31 14:19:52 EDT 2019


I think you completely misunderstand what g6 tolerance means. It is isn't a
clearance that you add to the nominal size and it certainly isn't 0.5mm.

A g6 5mm shaft has to be between 4.9960 and 4.9880mm. Good luck with that
on a 3D printer with 0.2mm accuracy.

On Thu, 31 Oct 2019 at 18:05, Hugo Jackson <hugo at apres.net> wrote:

>
> > On Oct 31, 2019, at 4:28 AM, Alex Gibson <alex at alexgibson.net> wrote:
> >
> > Going back to your original question Hugh, and your example:
> >       cylinder(d = 5, h = 2, $fit = “g6”);
> >
> > The way I've seen a lot of machine parts (usually 3D printer) programmed
> in OpenSCAD is this:
> >
> >       cylinder(d = g6, h = 2);
> >
> > ...and above this at the top of the file...
> >       fit_tolerance = 0.5;
> >       machine_tolerance = 0.2;
> >       g6 = 5+fit_tolerance+machine_tolerance;
> >
> > Rather than being 'piecemeal' I think building up layers of tolerance
> like this can be very helpful and reduce confusion and repetitive typing
> within the body of your design code.  Every time you want that size hole in
> your project, you just use d= g6 by name.  You can tune the tolerances
> after the initial design without re-coding.
> >
> > The idea of a global $fit variable seems nice, but you would have to
> have it associated with a big table which defines what g6 and many other
> tolerances are, which you'd need to remember as you are designing the
> part.  Also it could not take into account multiple fudge factors, and to
> me that's the real beauty of OpenSCAD for this sort of thing.
>
> A very big table is exactly what I have,,, and it’s the table lookup and
> syntax parsing that would be nice to have handled faster and more
> efficiently by the core.
>
> I guess it just comes down to personal style and one’s personal
> understanding of the OpenSCAD zeit. I think much is made of OpenSCAD’s
> parametric ability for resizing and substitution of dimensions and as
> different printing methodologies start being added, I think that the
> OpenSCAD core would benefit with a nod to ‘parametric’ tolerance.
>
> In the example you sight, you identify g6 as a calculation involving the
> nominal dimensions, the fit tolerance and the machine tolerance… and to my
> way of thinking what’s going on would be clearer and more easily amended
> with the scheme I use… rather than:
>
> >>      fit_tolerance = 0.5;
> >>      machine_tolerance = 0.2;
> >>      g6 = 5+fit_tolerance+machine_tolerance;
>
> >       cylinder(d = g6, h = 2);
>
> I think:
>
>         cylinder(d = 5, h = 2, $fit = “g6”);
>
> Is more straightforward, particularly if one declares the fit itself as a
> value, such as:
>
>         runFit = “g6”;
>
> And so:
>
>         cylinder(d = 5, h = 2, $fit = runFit);
>
> Provides the same opportunity to quickly amend all geometric constructions
> that use the runFit tolerance. This is particularly relevant to resizing as
> the ISO and ANSI standards reflect the reality that a 5mm hole requires a
> different tolerance than a 10mm hole to effect the same fit.
>
>
>
>
> >
> > Have you tried a similar method, defining named dimensions?
> >
> > One think I've started to do in my recent bigger projects is to break
> out dimensions and specific geometry modules into their own separate files:
> >
> > 0_dimensions.scad             <named dimensions - for example
> m3_bolt_hole = 3.2;                     < this is where I do all tolerances
> etc.
> > 1_geometry.scad               <for example Nema 17 mount pattern holes,
> as a 2D pattern
> > 2_component                   <say a 3D printed mount for the motor
> > 3_subassembly                 <say the mount with motor, screws, pulley
> etc
> > 4_majorassembly               <say the whole axis
> > 5_render                      <the whole project for rendering.
>
> Yes, good idea. I think as our projects get more complex we all start
> creating a fistful of files… and I’m also hoping some day that OpenSCAD
> will allow for use, include and import to use non literal string values…
> but that’s another topic. :)
>
> >
> >
> > This has really helped me to improve version control and ease of
> navigation around complex projects - and made it easier to recycle code and
> incorporate scanned or downloaded parts.
> >
> > Cheers
> >
> > Alex Gibson
> >
> > admg consulting
> >
> > edumaker limited
> >
> > • Project management
> > • Operations & Process improvement
> > • 3D Printing
> >
> > -----Original Message-----
> > From: Discuss [mailto:discuss-bounces at lists.openscad.org] On Behalf Of
> Hugo Jackson
> > Sent: 29 October 2019 22:00
> > To: OpenSCAD general discussion
> > Subject: [OpenSCAD] Engineering Fits and Tolerance
> >
> > Has any thought been given to incorporating engineering fits and
> tolerances into OpenSCAD? As I understand it, OpenSCAD was originally
> conceived for the creation of STL files for a 3D printer and I’ve been
> thinking that the base functionality might be improved by a little more CAM
> in the CAD.
> >
> > For some time I’ve been using wrappers around most of the OpenSCAD
> modules in order to introduce engineering fits into the parts I create as
> 3d printers on the whole offer increasing precision and repeatability.
> >
> > Using a special variable $fit I can arbitrarily call up a module and it
> will adjust the the final size of the geometry according to the engineering
> fit I specify. e.g.
> >
> >       cylinder(d = 5, h = 2, $fit = “g6”);
> >
> > I think anyone who has created interconnecting parts is familiar with
> the requirement to adjust for tolerance, but the core language as it stands
> requires this to be accomplished on a piecemeal basis, but to my way of
> thinking fit and tolerance are integral to the original purpose of OpenSCAD.
> >
> > I think this is particularly relevant as more and more users are
> acquiring machines that use different processes and that I might well wish
> to print a part on an FDM printer one day and a DLP the next, which I think
> would naturally call for a different fit specification.
> >
> > I also created some constants: kLeft, kRight, kFront, kBack, kTop &
> kBottom and use 6 element arrays to selectively apply tolerance, and use a
> special variable $faces to pass on that information as required:
> >
> >       cube([7,3,8], $fit = “H11”, $faces = kLeft + kRight);
> >
> > And of course if I’m creating a project with lots of references to fit
> then I simply create an identifier for the fit, e.g.
> >
> > shaftFit = “h7”;
> >
> > So that if I move to a different type of machine where more or less
> tolerance is indicated, I only need to change the definition of shaftFit.
> >
> > I did some poking around in the mailing list archives and couldn’t see
> any reference to a discussion on this, but I’m sure it’s occurred to others
> before me, I just thought I’d ask where the community stands on
> incorporating this kind of functionality into the core language.
> >
> >
> > _______________________________________________
> > OpenSCAD mailing list
> > Discuss at lists.openscad.org
> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> >
> >
> > _______________________________________________
> > OpenSCAD mailing list
> > Discuss at lists.openscad.org
> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
>
> _______________________________________________
> OpenSCAD mailing list
> Discuss at lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscad.org/pipermail/discuss_lists.openscad.org/attachments/20191031/42f21187/attachment.html>


More information about the Discuss mailing list