@@ -59,7 +59,9 @@ use <math.scad>
5959// thread_depth = Depth of the threads. Default=pitch/2
6060// thread_angle = The pressure angle profile angle of the threads. Default = 14.5 degree ACME profile.
6161// left_handed = If true, create left-handed threads. Default = false
62- // bevel = if true, bevel the thread ends. Default: true
62+ // bevel = if true, bevel the thread ends. Default: false
63+ // bevel1 = if true, bevel the axis-negative end of the thread. Default: false
64+ // bevel2 = if true, bevel the axis-positive end of the thread. Default: false
6365// starts = The number of lead starts. Default = 1
6466// internal = If true, make this a mask for making internal threads.
6567// slop = printer slop calibration to allow for tight fitting of parts. Default: `PRINTER_SLOP`
@@ -85,6 +87,8 @@ module trapezoidal_threaded_rod(
8587 thread_depth= undef,
8688 left_handed= false ,
8789 bevel= false ,
90+ bevel1= false ,
91+ bevel2= false ,
8892 starts= 1 ,
8993 profile= undef,
9094 internal= false ,
@@ -232,7 +236,11 @@ module trapezoidal_threaded_rod(
232236 difference () {
233237 polyhedron (points= poly_points, faces= poly_faces, convexity= threads* starts* 2 );
234238 zspread(l+ 4 * pitch* starts) cube ([d+ 1 , d+ 1 , 4 * pitch* starts], center= true );
235- if (bevel) cylinder_mask(d= d, l= l+ 0.01 , chamfer= depth);
239+ if (bevel || bevel1 || bevel2) {
240+ depth1 = (bevel || bevel1) ? depth : 0 ;
241+ depth2 = (bevel || bevel2) ? depth : 0 ;
242+ cylinder_mask(d= d, l= l+ 0.01 , chamfer1= depth1, chamfer2= depth2);
243+ }
236244 }
237245 }
238246}
@@ -321,6 +329,8 @@ module trapezoidal_threaded_nut(
321329// pitch = Length between threads.
322330// left_handed = if true, create left-handed threads. Default = false
323331// bevel = if true, bevel the thread ends. Default: false
332+ // bevel1 = if true, bevel the axis-negative end of the thread. Default: false
333+ // bevel2 = if true, bevel the axis-positive end of the thread. Default: false
324334// internal = If true, make this a mask for making internal threads.
325335// slop = printer slop calibration to allow for tight fitting of parts. Default: `PRINTER_SLOP`
326336// orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`.
@@ -335,6 +345,8 @@ module threaded_rod(
335345 d= 10 , l= 100 , pitch= 2 ,
336346 left_handed= false ,
337347 bevel= false ,
348+ bevel1= false ,
349+ bevel2= false ,
338350 internal= false ,
339351 slop= undef,
340352 orient= ORIENT_Z,
@@ -363,6 +375,8 @@ module threaded_rod(
363375 profile= profile,
364376 left_handed= left_handed,
365377 bevel= bevel,
378+ bevel1= bevel1,
379+ bevel2= bevel2,
366380 internal= internal,
367381 slop= slop,
368382 orient= orient,
@@ -426,6 +440,8 @@ module threaded_nut(
426440// pitch = Length between threads.
427441// left_handed = if true, create left-handed threads. Default = false
428442// bevel = if true, bevel the thread ends. Default: false
443+ // bevel1 = if true, bevel the axis-negative end of the thread. Default: false
444+ // bevel2 = if true, bevel the axis-positive end of the thread. Default: false
429445// internal = If true, this is a mask for making internal threads.
430446// slop = printer slop calibration to allow for tight fitting of parts. default=0.2
431447// orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`.
@@ -440,6 +456,8 @@ module buttress_threaded_rod(
440456 d= 10 , l= 100 , pitch= 2 ,
441457 left_handed= false ,
442458 bevel= false ,
459+ bevel1= false ,
460+ bevel2= false ,
443461 internal= false ,
444462 slop= undef,
445463 orient= ORIENT_Z,
@@ -460,6 +478,8 @@ module buttress_threaded_rod(
460478 profile= profile,
461479 left_handed= left_handed,
462480 bevel= bevel,
481+ bevel1= bevel1,
482+ bevel2= bevel2,
463483 internal= internal,
464484 orient= orient,
465485 slop= slop,
@@ -536,6 +556,8 @@ module metric_trapezoidal_threaded_rod(
536556 left_handed= false ,
537557 starts= 1 ,
538558 bevel= false ,
559+ bevel1= false ,
560+ bevel2= false ,
539561 orient= ORIENT_Z,
540562 align= V_CENTER
541563) {
@@ -546,6 +568,8 @@ module metric_trapezoidal_threaded_rod(
546568 left_handed= left_handed,
547569 starts= starts,
548570 bevel= bevel,
571+ bevel1= bevel1,
572+ bevel2= bevel2,
549573 orient= orient,
550574 align= align
551575 );
@@ -608,6 +632,8 @@ module metric_trapezoidal_threaded_nut(
608632// starts = The number of lead starts. Default = 1
609633// left_handed = if true, create left-handed threads. Default = false
610634// bevel = if true, bevel the thread ends. Default: false
635+ // bevel1 = if true, bevel the axis-negative end of the thread. Default: false
636+ // bevel2 = if true, bevel the axis-positive end of the thread. Default: false
611637// orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`.
612638// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`.
613639// Example(2D):
@@ -623,6 +649,8 @@ module acme_threaded_rod(
623649 starts= 1 ,
624650 left_handed= false ,
625651 bevel= false ,
652+ bevel1= false ,
653+ bevel2= false ,
626654 orient= ORIENT_Z,
627655 align= V_CENTER
628656) {
@@ -633,6 +661,8 @@ module acme_threaded_rod(
633661 starts= starts,
634662 left_handed= left_handed,
635663 bevel= bevel,
664+ bevel1= bevel1,
665+ bevel2= bevel2,
636666 orient= orient,
637667 align= align
638668 );
@@ -696,6 +726,8 @@ module acme_threaded_nut(
696726// pitch = Length between threads.
697727// left_handed = if true, create left-handed threads. Default = false
698728// bevel = if true, bevel the thread ends. Default: false
729+ // bevel1 = if true, bevel the axis-negative end of the thread. Default: false
730+ // bevel2 = if true, bevel the axis-positive end of the thread. Default: false
699731// starts = The number of lead starts. Default = 1
700732// orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`.
701733// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`.
@@ -708,6 +740,8 @@ module square_threaded_rod(
708740 d= 10 , l= 100 , pitch= 2 ,
709741 left_handed= false ,
710742 bevel= false ,
743+ bevel1= false ,
744+ bevel2= false ,
711745 starts= 1 ,
712746 orient= ORIENT_Z,
713747 align= V_CENTER
@@ -717,6 +751,8 @@ module square_threaded_rod(
717751 thread_angle= 0 ,
718752 left_handed= left_handed,
719753 bevel= bevel,
754+ bevel1= bevel1,
755+ bevel2= bevel2,
720756 starts= starts,
721757 orient= orient,
722758 align= align
@@ -736,6 +772,8 @@ module square_threaded_rod(
736772// pitch = Length between threads.
737773// left_handed = if true, create left-handed threads. Default = false
738774// bevel = if true, bevel the thread ends. Default: false
775+ // bevel1 = if true, bevel the axis-negative end of the thread. Default: false
776+ // bevel2 = if true, bevel the axis-positive end of the thread. Default: false
739777// starts = The number of lead starts. Default = 1
740778// slop = printer slop calibration to allow for tight fitting of parts. default=0.2
741779// orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`.
@@ -747,6 +785,8 @@ module square_threaded_nut(
747785 pitch= 3.175 ,
748786 left_handed= false ,
749787 bevel= false ,
788+ bevel1= false ,
789+ bevel2= false ,
750790 starts= 1 ,
751791 slop= undef,
752792 orient= ORIENT_Z,
@@ -757,6 +797,8 @@ module square_threaded_nut(
757797 thread_angle= 0 ,
758798 left_handed= left_handed,
759799 bevel= bevel,
800+ bevel1= bevel1,
801+ bevel2= bevel2,
760802 starts= starts,
761803 slop= slop,
762804 orient= orient,
0 commit comments