Screws shapes - GillesBouissac/agentscad GitHub Wiki

Tutorial for screws, bolts and nuts shapes and passages

Prerequisites

See instructions here

Adapt the reading to the standard you need

This tutorial applies to all standards. The examples are given for metric coarse standard.

Changes to do in the reading to adapt to other standards are summarized in this table:

  • MXC: Metric Coarse standard (International standard)
  • MXF: Metric Fine standard (International standard)
  • UNC: Unified National Coarse standard (US standard)
  • UNF: Unified National Fine standard (US standard)
  • BSW: British Standard Whitworth (UK standard)
  • BSF: British Standard Fine (UK standard)
Tutorial code MXC MXF UNC UNF BSW BSF
mx-screw.scad
mx-screw.scad
mxf-screw.scad
unc-screw.scad
unf-screw.scad
bsw-screw.scad
bsf-screw.scad
mxBolt
mxBolt
mxfBolt
uncBolt
unfBolt
bswBolt
bsfBolt
mxNut
mxNut
mxfNut
uncNut
unfNut
bswNut
bsfNut
mxClone
mxClone
mxfClone
uncClone
unfClone
bswClone
bsfClone
M3
M3
MF3
UNC_N5
UNF_N5
BSW5_32
BSF5_32

Direct access to the code of the tutorial for each standard:

Tutorial

Step Code Result
Some walls
use <agentscad/lib-screw.scad>
use <agentscad/mx-screw.scad>
...
module showcaseWalls( wh1, wh2, ww=200, wp=20 ) {
    translate ( [0,wp/2,0] )  {
        color( "LightSkyBlue" )
        translate ( [0,0,-(wh2+wh1)/2] )
            cube( [ww,wp,wh2], center=true );
        color( "DodgerBlue" )
        translate ( [0,0,0] )
            cube( [ww,wp,wh1], center=true );
    }
}
showcaseWalls (3,10,15);
Bolt passage
...
screw = M3(10,3);
difference() {
    showcaseWalls (3,10,15);
    mxBoltPassage (screw);
}
Allen bolt
#mxBoltAllen  (screw);
Hexagonal bolt
#mxBoltHexagonal  (screw);
Tight passage
allen
...
screw = M3(10,3);
difference() {
    showcaseWalls (3,10,15);
    mxBoltAllenPassage (screw);
}
%mxBoltAllen (screw);
Tight passage
hexagonal
...
screw = M3(10,3);
difference() {
    showcaseWalls (3,10,15);
    mxBoltHexagonalPassage (screw);
}
%mxBoltHexagonal (screw);
Nut passage
...
difference() {
    showcaseWalls (3,10,15);
    mxBoltHexagonalPassage (screw);
    translate( [0,0,-screwGetThreadL(screw)] )
        mxNutPassage (screw);
}
Hexagonal nut
...
translate( [0,0,-screwGetThreadL(screw)] )
    %mxNutHexagonal (screw);
Square nut
...
translate( [0,0,-screwGetThreadL(screw)] )
    %mxNutSquare (screw);
Hexagonal nut passage
...
difference() {
    showcaseWalls (3,10,15);
    mxBoltHexagonalPassage (screw);
    translate( [0,0,-screwGetThreadL(screw)] )
        mxNutHexagonalPassage (screw);
}
Square nut passage
...
difference() {
    translate ( [0,-3,0] )
        showcaseWalls (3,10,15);
    mxBoltPassage (screw);
    translate( [0,0,-screwGetThreadL(screw)+4] )
        mxNutSquarePassage (screw);
}
%mxBoltHexagonal (mxClone(screw,12));
translate( [0,0,-screwGetThreadL(screw)+4] )
    %mxNutSquare (screw);
⚠️ **GitHub.com Fallback** ⚠️