Nice but Black is not the better way to see, and code is necessary for my use.
Huy Lê Quốc
almost 6 years
Nice library, great thanks JustKrys.
Anton Belov
over 7 years
ISOThreadUM2.scad
Removed error in thread_in_ring function (thinknes dont work)
module thread_in_ring(dia,hi,thk)
{
difference()
{
cylinder(r = (dia/2)+thk,h = hi);
translate([0,0,-1]) cylinder(r = (dia/2)+0.1, h = hi+thk);
}
}
And add champfer on thread equal 20% of pitch.
module thread_in_pitch(dia,hi,p,thr=$fn)
// make an inside thread (as used on a nut)
// dia = diameter, 6=M6 etc
// hi = height, 10=make a 10mm long thread
// p=pitch
// thr = thread quality, 10=make a thread with 10 segments per turn
{
h=(cos(30)*p)/8;
Rmin=(dia/2)-(5*h); // as wiki Dmin
s=360/thr; // length of segment in degrees
t1=(hi-p)/p; // number of full turns
r=t1%1.0; // length remaining (not full turn)
t=t1-r; // integer number of turns
n=r/(p/thr); // number of segments for remainder
difference(){
for(tn=[0:t-1])
translate([0,0,tn*p]) th_in_turn(dia,p,thr);
for(sg=[0:n])
th_in_pt(Rmin+0.1,p,s,sg+(t*thr),thr,h,p/thr);
cylinder ( d=dia-p*0.8, h=hi);
} // make champfer on thread = 0.8*thread pitch // Anton Belov 18.05.2017
}
and make champfer on nut bottom
difference()
{
union() {
thread_in_ring(30,6,3); // make a ring to enclose an M8 x 10 ISO thread with thickness 2 mm
thread_in_pitch(30,6,1.5); // make an M8 x 10 thread with 1mm pitch
}
cylinder ( d1=33, d2=28.5,h=3); // make champfer on nut
}
JustKrys
over 8 years
Small note: For ABS (and maybe PLA too), scale nuts up by about 2% else they are quite tight.