From a2c5e49e2d0b18de6beaf360539da2b73c6e388b Mon Sep 17 00:00:00 2001 From: Adrian Mariano Date: Wed, 22 Sep 2021 22:02:29 -0400 Subject: [PATCH] Clean up phillips_mask to just produce driver tip and not shaft --- metric_screws.scad | 2 +- screw_drive.scad | 72 ++++++++++++++++++++++------------------------ screws.scad | 2 +- 3 files changed, 36 insertions(+), 40 deletions(-) diff --git a/metric_screws.scad b/metric_screws.scad index 722390a..36a749d 100644 --- a/metric_screws.scad +++ b/metric_screws.scad @@ -606,7 +606,7 @@ module metric_bolt( // Phillips drive hole if (headtype != "socket" && phillips != undef) { down(headtype != "hex"? H/6 : 0) { - phillips_mask(size=phillips, shaft=D); + phillips_mask(size=phillips); //, shaft=D); } } diff --git a/screw_drive.scad b/screw_drive.scad index a6b59cc..d66eb38 100644 --- a/screw_drive.scad +++ b/screw_drive.scad @@ -10,45 +10,45 @@ // Section: Phillips Drive // Module: phillips_mask() -// Description: Creates a mask for creating a Phillips drive recess given the Phillips size. +// Description: +// Creates a mask for creating a Phillips drive recess given the Phillips size. Each mask can +// be lowered to different depths to create different sizes of recess. // Arguments: // size = The size of the bit as a number or string. "#0", "#1", "#2", "#3", or "#4" -// shaft = The diameter of the drive bit's shaft. -// l = The length of the drive bit. // anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#anchor). Default: `CENTER` // spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#spin). Default: `0` // orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#orient). Default: `UP` // Example: // xdistribute(10) { -// phillips_mask(size="#1", l=20); -// phillips_mask(size="#2", l=20); -// phillips_mask(size=3, l=20); -// phillips_mask(size=4, l=20); +// phillips_mask(size="#1"); +// phillips_mask(size="#2"); +// phillips_mask(size=3); +// phillips_mask(size=4); // } // Specs for phillips recess here: // https://www.fasteners.eu/tech-info/ISO/4757/ -module phillips_mask(size="#2", shaft, l=20, $fn=36, anchor=BOTTOM, spin=0, orient=UP) { +_phillips_shaft = [3,4.5,6,8,10]; +_ph_bot_angle = 28.0; +_ph_side_angle = 26.5; + +module phillips_mask(size="#2", $fn=36, anchor=BOTTOM, spin=0, orient=UP) { assert(in_list(size,["#0","#1","#2","#3","#4",0,1,2,3,4])); num = is_num(size) ? size : ord(size[1]) - ord("0"); - defshaft = [3,4.5,6,8,10][num]; - shaft = first_defined([defshaft,shaft,defshaft]); - + shaft = _phillips_shaft[num]; b = [0.61, 0.97, 1.47, 2.41, 3.48][num]; e = [0.31, 0.435, 0.815, 2.005, 2.415][num]; -// e = [0.31, 0.435, 0.815, 2.1505, 2.415][num]; g = [0.81, 1.27, 2.29, 3.81, 5.08][num]; //f = [0.33, 0.53, 0.70, 0.82, 1.23][num]; //r = [0.30, 0.50, 0.60, 0.80, 1.00][num]; alpha = [ 136, 138, 140, 146, 153][num]; beta = [7.00, 7.00, 5.75, 5.75, 7.00][num]; gamma = 92.0; - ang1 = 28.0; - ang2 = 26.5; - h1 = adj_ang_to_opp(g/2, ang1); // height of the small conical tip - h2 = adj_ang_to_opp((shaft-g)/2, 90-ang2); // height of larger cone - h3 = adj_ang_to_opp(b/2, ang1); // height where cutout starts + h1 = adj_ang_to_opp(g/2, _ph_bot_angle); // height of the small conical tip + h2 = adj_ang_to_opp((shaft-g)/2, 90-_ph_side_angle); // height of larger cone + l = h1+h2; + h3 = adj_ang_to_opp(b/2, _ph_bot_angle); // height where cutout starts p0 = [0,0]; p1 = [adj_ang_to_opp(e/2, 90-alpha/2), -e/2]; p2 = p1 + [adj_ang_to_opp((shaft-e)/2, 90-gamma/2),-(shaft-e)/2]; @@ -56,12 +56,13 @@ module phillips_mask(size="#2", shaft, l=20, $fn=36, anchor=BOTTOM, spin=0, orie down(l/2) { difference() { rotate_extrude() - polygon([[0,0],[g/2,h1],[shaft/2,h1+h2],[shaft/2,l],[0,l]]); + polygon([[0,0],[g/2,h1],[shaft/2,l],[0,l]]); zrot(45) zrot_copies(n=4, r=b/2) { up(h3) { - yrot(beta) { - linear_extrude(height=(h1+h2)*20, convexity=4, center=false) { + yrot(beta) { + down(1) + linear_extrude(height=l+2, convexity=4, center=false) { path = [p0, p1, p2, [p2.x,-p2.y], [p1.x,-p1.y]]; polygon(path); } @@ -91,21 +92,21 @@ function phillips_depth(size, d) = num = is_num(size) ? size : ord(size[1]) - ord("0"), shaft = [3,4.5,6,8,10][num], g = [0.81, 1.27, 2.29, 3.81, 5.08][num], - ang1 = 28.0, - ang2 = 26.5, - h1 = adj_ang_to_opp(g/2, ang1), // height of the small conical tip - h2 = adj_ang_to_opp((shaft-g)/2, 90-ang2) // height of larger cone + _ph_bot_angle = 28.0, + _ph_side_angle = 26.5, + h1 = adj_ang_to_opp(g/2, _ph_bot_angle), // height of the small conical tip + h2 = adj_ang_to_opp((shaft-g)/2, 90-_ph_side_angle) // height of larger cone ) - d>shaft ? undef : - d=shaft || dh1+h2 ? shaft : - 2 * tan(ang2)*(depth-h1) + g; - - + depth

= h1+h2 ? undef : + 2 * tan(_ph_side_angle)*(depth-h1) + g; diff --git a/screws.scad b/screws.scad index a34b847..e0d4e43 100644 --- a/screws.scad +++ b/screws.scad @@ -1421,7 +1421,7 @@ http://files.engineering.com/getfile.aspx?folder=76fb0d5e-1fff-4c49-87a5-0597947 // How do you insert a threaded hole into a model? // Default nut thickness // -// JIS: +// JIS //https://www.garagejournal.com/forum/media/jis-b-4633-vs-iso-8764-1-din-5260-ph.84492/ //square: