• Models
  • Contests
  • Slicer
  • Login
  • Start Here
    thingiverse-iconprintables-iconcults3d-iconmakerworld-iconmyminifactory-icon

    3D GO

    3D ModelsContestsCollectionsSaved ModelsOn a mobile device?

3D GO

Privacy Policy
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Image 1
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Image 2
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Image 3
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Image 4
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Thumbnail 1
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Thumbnail 2
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Thumbnail 3
Screw Threads, Holes, Bolts, Nuts, and Rods Library 3D Printer File Thumbnail 4

Screw Threads, Holes, Bolts, Nuts, and Rods Library

rcolyer avatarrcolyer

July 23, 2016

thingiverse-icon
DescriptionCommentsTags

Description

This was my first 3D printing design. I decided to try to make a convenient OpenSCAD threading library, since I figured I would use it in many other designs. It expanded a little as I was developing it, and it now supports metric compatible internal and external threads, auger threads, thread tapering, clearance holes, countersunk holes, recessed holes, hex bolts, nuts, washers, and long rods which are extended with threaded joints. Whenever possible I attempted to comply with metric standards for the defaults of parameters, while providing overrides for many values.

...........
Version 2 updates (2017-03-20):

For version 2, I redesigned the core threading routine to use list comprehension to generate the entire threaded screw as a single polyhedron. This substantially improved the rendering speed and robustness, decreased the number of facets necessary, and increased the tactile smoothness of the resulting parts. I also added auger-style threading, partially tapered screw ends, auger and conventional threads which come to a point, and support for Phillips tips.

Version 2.1 (2017-04-10) fixes an error in the declaration of auger thread angles.
...........

Since this is primarily a library for use in other designs, I will briefly list the API here. Where parameters are shown with a default of 0 or -1, in many cases this indicates a standard default value will be calculated internally if this is not overridden.

// This creates a vertical rod at the origin with external threads.  It uses
// metric standards by default.
module ScrewThread(outer_diam, height, pitch=0, tooth_angle=30, tolerance=0.4, tip_height=0, tooth_height=0, tip_min_fract=0)

// This creates a vertical rod at the origin with external auger-style
// threads.
module AugerThread(outer_diam, inner_diam, height, pitch, tooth_angle=30, tolerance=0.4, tip_height=0, tip_min_fract=0)

// This creates a threaded hole in its children using metric standards by
// default.
module ScrewHole(outer_diam, height, position=[0,0,0], rotation=[0,0,0], pitch=0, tooth_angle=30, tolerance=0.4, tooth_height=0)

// This creates an auger-style threaded hole in its children.
module AugerHole(outer_diam, inner_diam, height, pitch, position=[0,0,0], rotation=[0,0,0], tooth_angle=30, tolerance=0.4)

// This inserts a ClearanceHole in its children.
// The rotation vector is applied first, then the position translation,
// starting from a position upward from the z-axis at z=0.
module ClearanceHole(diameter, height, position=[0,0,0], rotation=[0,0,0], tolerance=0.4)

// This inserts a ClearanceHole with a recessed bolt hole in its children.
// The rotation vector is applied first, then the position translation,
// starting from a position upward from the z-axis at z=0.  The default
// recessed parameters fit a standard metric bolt.
module RecessedClearanceHole(diameter, height, position=[0,0,0], rotation=[0,0,0], recessed_diam=-1, recessed_height=-1, tolerance=0.4)

// This inserts a countersunk ClearanceHole in its children.
// The rotation vector is applied first, then the position translation,
// starting from a position upward from the z-axis at z=0.
// The countersunk side is on the bottom by default.
module CountersunkClearanceHole(diameter, height, position=[0,0,0], rotation=[0,0,0], sinkdiam=0, sinkangle=45, tolerance=0.4)

// This inserts a Phillips tip shaped hole into its children.
// The rotation vector is applied first, then the position translation,
// starting from a position upward from the z-axis at z=0.
module PhillipsTip(width=7, thickness=0, straightdepth=0, position=[0,0,0], rotation=[0,0,0])

// Create a standard sized metric bolt with hex head and hex key.
module MetricBolt(diameter, length, tolerance=0.4)

// Create a standard sized metric countersunk (flat) bolt with hex key drive.
// In compliance with convention, the length for this includes the head.
module MetricCountersunkBolt(diameter, length, tolerance=0.4)

// Create a standard sized metric hex nut.
module MetricNut(diameter, thickness=0, tolerance=0.4)

// Create a convenient washer size for a metric nominal thread diameter.
module MetricWasher(diameter)

// Solid rod on the bottom, external threads on the top.
module RodStart(diameter, height, thread_len=0, thread_diam=0, thread_pitch=0)

// Solid rod on the bottom, internal threads on the top.
// Flips around x-axis after printing to pair with RodStart.
module RodEnd(diameter, height, thread_len=0, thread_diam=0, thread_pitch=0)

// Internal threads on the bottom, external threads on the top.
module RodExtender(diameter, height, thread_len=0, thread_diam=0, thread_pitch=0)

// Produces a matching set of metric bolts, nuts, and washers.
module MetricBoltSet(diameter, length, quantity=1)

// This generates a closed polyhedron from an array of arrays of points,
// with each inner array tracing out one loop outlining the polyhedron.
// pointarrays should contain an array of N arrays each of size P outlining a
// closed manifold.  The points must obey the right-hand rule.  For example,
// looking down, the P points in the inner arrays are counter-clockwise in a
// loop, while the N point arrays increase in height.  Points in each inner
// array do not need to be equal height, but they usually should not meet or
// cross the line segments from the adjacent points in the other arrays.
// (N>=2, P>=3)
// Core triangles:
//   [j][i], [j+1][i], [j+1][(i+1)%P]
//   [j][i], [j+1][(i+1)%P], [j][(i+1)%P]
//   Then triangles are formed in a loop with the middle point of the first
//   and last array.
module ClosePoints(pointarrays)

The following functions also provide standard metric values for a given diameter: ThreadPitch, HexAcrossFlats, HexAcrossCorners, HexDriveAcrossFlats, HexDriveAcrossCorners, CountersunkDriveAcrossFlats, CountersunkDriveAcrossCorners, NutThickness.

Good use of this library requires a printer which is properly calibrated for extrusion width, and which is producing consistent stable parts. In my tests threaded holes (internal threads) of size M2 and higher worked fine with standard metal bolts. M3 bolts (external threads) worked under good conditions, but would be disrupted by small changes in print quality. M4 and higher I found quite reliable.

I developed the extendable rod functions so I could print a 34cm rod which was taller than my printer height. It worked very well and was quite sturdy. I suspect with appropriate plastic a patient person could print a much longer rod (such as a shower rod) with this same tool.

License:

Creative Commons - Public Domain Dedication

Related Models

#3DBenchy - The jolly 3D printing torture-test by CreativeTools.se preview image

#3DBenchy - The jolly 3D printing torture-test by CreativeTools.se

CreativeTools profile image

CreativeTools

90,980

Rapid Metric Screw Measuring Tool (M2-M5, up to 50mm) preview image

Rapid Metric Screw Measuring Tool (M2-M5, up to 50mm)

fivesixzero profile image

fivesixzero

14,083

GENERATORE BULLONI E DADI DA M3 A m60 preview image

GENERATORE BULLONI E DADI DA M3 A m60

annalisa profile image

annalisa

2,633

Modular Mounting System preview image

Modular Mounting System

HeyVye profile image

HeyVye

69,195

NUT JOB | Nut, Bolt, Washer and Threaded Rod Factory preview image

NUT JOB | Nut, Bolt, Washer and Threaded Rod Factory

mattala profile image

mattala

3,528

Thread Generator - Parametric Threaded Rods & Nuts preview image

Thread Generator - Parametric Threaded Rods & Nuts

Koolm profile image

Koolm

2,845

Parametric Hinge preview image

Parametric Hinge

rohingosling profile image

rohingosling

51,962

Revolver | 2-Speed Screwdriver preview image

Revolver | 2-Speed Screwdriver

Revolver3DPrints profile image

Revolver3DPrints

2,493