Hirth Joint - GillesBouissac/agentscad GitHub Wiki
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( ... );
}
| 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 );
}
|
![]() |






