3D part design with OpenSCAD #134: threaded screw plug / set screw.

2 min read
By Bob
3D part design with OpenSCAD #134: threaded screw plug / set screw.

Recently I needed to make a screw in plug for a threaded junction box and since I already have the thread code it was pretty easy to adapt it to make a threaded plug.

Here is the code:

//
$fn=200;
/*[Plug]*/
Plug_diameter=18;//[1:.01:400]
Plug_height=6;//[1:.01:400]
Plug_hole_shape=6;//[3:1:12]
Plug_hole_size=6;//[1:.01:20]
Plug_hole_depth=3;//[.5:.01:12]

/*[Threads]*/
Thread_pitch = 6;//[0:.001:16]
Thread_shape = 4;//[3:1:10]
Thread_thickness = .742;//[.1:.001:4]
Start_adjust=-200;//[-200:.01:200]
End_adjust=-200;//[-200:.01:200]
Tn=100*Thread_pitch;
Pitch_angle=360*Thread_pitch;

module Threads(){
 translate([0,0,.5])
for (i =[Start_adjust:.5:Tn-End_adjust]){
hull(){
translate([Plug_diameter/2*cos(i*Pitch_angle/Tn),Plug_diameter/2*sin(i*Pitch_angle/Tn),Plug_height*(i/Tn)])
    rotate(a=180+(i*(Pitch_angle/Tn)),v=[0,0,.1])
    rotate(a=90,v=[.1,0,0])
    sphere(Thread_thickness,$fn=Thread_shape);
translate([Plug_diameter/2*cos((i+1)*Pitch_angle/Tn),Plug_diameter/2*sin((i+1)*Pitch_angle/Tn),Plug_height*(i+1)/Tn])
    rotate(a=180+(i*(Pitch_angle/Tn)),v=[0,0,.1])
    rotate(a=90,v=[.1,0,0])
    sphere(Thread_thickness,$fn=Thread_shape);
translate([Plug_diameter/2*cos(i*Pitch_angle/Tn),Plug_diameter/2*sin(i*Pitch_angle/Tn),Plug_height*(i/Tn)])
    sphere(Thread_thickness/3,$fn=Thread_shape);
}}}

render()
difference(){
hull(){
linear_extrude(Plug_height)
circle(Plug_diameter/2);
translate([0,0,Plug_height])
sphere(3);
}
linear_extrude(Plug_hole_depth)
circle(Plug_hole_size,$fn=Plug_hole_shape);
Threads();
}

And here are some examples:

I was able to print some pretty fine threads with no issues: