[OpenSCAD] Engineering Fits and Tolerance

nop head nop.head at gmail.com
Thu Oct 31 10:44:48 EDT 2019


There is no final size for h7, etc. It is a tolerance range and depends on
the diameter, so it would need to be a function. But as I said before I
can't see how you can apply it to the model to be made. STL files do not
convey tolerances. The best you could do is aim for the mid value but I
don't know any machines that can make parts that accurate from an STL file.

On Thu, 31 Oct 2019 at 11:32, 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.
>
> 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.
>
>
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscad.org/pipermail/discuss_lists.openscad.org/attachments/20191031/5424b01c/attachment.html>


More information about the Discuss mailing list