Hirth Joint - GillesBouissac/agentscad GitHub Wiki

Hirth Joint library

Prerequisites

See instructions here

Notes

The center hole diameter is computed to be the minimal diameter printable with a 3D printer with 0.4 nozzle. On this minimal diameter each tooth is 3 nozzle wide. To avoid this constraint we can set the special variable $nozzle=0 to reduce the diameter to 0. Then we can make a difference with a cylinder to get a center hole with any diameter:

$nozzle=0;
difference() {
    hirthJointSinus( ... );
    cylinder( ... );
}

or

difference() {
    hirthJointSinus( ..., $nozzle=0 );
    cylinder( ... );
}

Tutorial

Step Code Result
Sinusoidal
use <agentscad/hirth-joint.scad>
$fn=100;
// Sinusoidal profile
//   Radius:       10 mm
//   Nb tooth:     21
//   Tooth height: 1.2 mm
hirthJointSinus( 10, 21, 1.2 );
Shoulder
use <agentscad/hirth-joint.scad>
$fn=100;
// Sinusoidal profile with shoulder
//   Radius:          10 mm
//   Nb tooth:        21
//   Tooth height:    1.2 mm
//   Shoulder height: 2 mm
hirthJointSinus( 10, 21, 1.2, 2 );
Inlay
use <agentscad/hirth-joint.scad>
$fn=100;
// Sinusoidal profile with shoulder and inlay
//   Radius:          10 mm
//   Nb tooth:        21
//   Tooth height:    1.2 mm
//   Shoulder height: 2 mm
//   Inlay height:    1 mm
hirthJointSinus( 10, 21, 1.2, 2, 1 );
Triangle
use <agentscad/hirth-joint.scad>
$fn=100;
// Triangle profile
//   Radius:          10 mm
//   Nb tooth:        21
//   Tooth height:    1.2 mm
//   Shoulder height: 1 mm
//   Inlay height:    1 mm
hirthJointTriangle( 10, 21, 1.2, 1, 1 );
Rectangle
use <agentscad/hirth-joint.scad>
$fn=100;
// Rectangle profile
//   Radius:          10 mm
//   Nb tooth:        21
//   Tooth height:    1.2 mm
//   Shoulder height: 1 mm
//   Inlay height:    1 mm
hirthJointRectangle( 10, 21, 1.2, 1, 1 );
rmin
use <agentscad/hirth-joint.scad>
$fn=100;
// Rectangle profile
//   Radius:          10 mm
//   Nb tooth:        21
//   Tooth height:    1.2 mm
//   Shoulder height: 1 mm
//   Inlay height:    1 mm
//   Override minimal radius: 0
hirthJointRectangle( 10, 21, 1.2, 1, 1, rmin=0 );
Passage
use <agentscad/hirth-joint.scad>
$fn=100;
// Inlay passage
//   Radius:          10 mm
//   Inlay height:    1 mm
difference() {
    translate( [0,0,-2] )
        cylinder( r=15, h=4, center=true );
    hirthJointPassage( 10, 1.2, 1, 1 );
}
⚠️ **GitHub.com Fallback** ⚠️