'Openscad - Creating Lug bottle threads

How can I produce an interrupted (aka non-continuous or discontinuous) external thread lug finish?

image 1

I'm trying to create 3D printed lids for 24oz Mt. Olive pickle jars

image 2

I know about the thread.scad file but how can I create these type of lugs? The code would generate a 3-start thread in the form of a bolt.

Example 1:

use <threads.scad>;
thread_dia = 27.27;
thread_pitch = 2;
thread_length = 10;
metric_thread(thread_dia, thread_pitch, thread_length, n_starts = 3);

image 1

Example 2 suggestion from Doyousketch2 comment: doesn't seems to work

  use <threads.scad>;
    thread_dia = 27.27;
    thread_pitch = 2;
    thread_length = .13;
    metric_thread(thread_dia, thread_pitch, thread_length, n_starts = 8);

image 2



Solution 1:[1]

enter image description here

enter image description here

I think you can play with this parameters to obtain what you need

color("red")rotate([10,10,0])rotate_extrude(angle=120)translate([100,0,0])circle(5);
color("green")rotate([10,10,120])rotate_extrude(angle=120)translate([100,0,0])circle(5);
color("blue")rotate([10,10,240])rotate_extrude(angle=120)translate([100,0,0])circle(5);

Solution 2:[2]

Maybe if you want to make a real jar, the start of the thread should be tapered? The z value in circle() currently is 0, change it to desired pitch.

// A modified version of tubify() with tapered start.
// Not able to recover the inventor of the original tubify().

function circle(t) = [ sin(t), cos(t), 0 ];

module tubify(r, step, end) { // step, end in degrees
   taperSteps = 30;
   for (t=[0: step: end+step]) {
    R = t<taperSteps ? r*(t/taperSteps) : r;
    hull() { 
      translate(circle(t)) sphere(R);
      translate(circle(t+step)) sphere(R);
    }
  }
}

tubify(r=0.05, step=2, end=120);

picture of a tapered rod

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mario Abbruscato
Solution 2 marapet