discpick-tensioner.scad: Improved tensioning component with longer prongs.
[scad] / discpick-collar.scad
CommitLineData
5f1872e8
MW
1/* -*-c-*-
2 *
3 * A spacer for the Sparrows disc-detainer picking tool
4 *
5 * (c) 2022 Mark Wooding
6 */
bfe485ff 7
5f1872e8
MW
8/*----- Licensing notice --------------------------------------------------*
9 *
10 * This program is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or (at
13 * your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful, but
16 * WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
bfe485ff 23
5f1872e8
MW
24/*----- Configuration -----------------------------------------------------*/
25
26/* Overall scaling. */
27MM = 1;
bfe485ff 28
5f1872e8 29/* Curvature quality. */
bfe485ff
MW
30$fa = 0.1;
31$fs = 0.2*MM;
32
5f1872e8
MW
33/* A `large enough' length; effectively infinite. */
34BIG = 20*MM;
35
36/* Dimensions. */
37CUT_WD = 10*MM; /* width of the cut in the top */
38BORE_DIAM = 6*MM; /* diameter of hole down the mid */
39SPACER_HT = 7.25*MM; /* height of the offset */
40HEIGHT = SPACER_HT + 3*MM; /* overall ht, including shelves */
41THICK = 16*MM; /* thickness */
42WIDTH = 18*MM; /* width */
43
44/*----- The main object ---------------------------------------------------*/
bfe485ff
MW
45
46difference() {
47 intersection() {
5f1872e8
MW
48
49 /* Start with a bounding parallelepiped. We're going to shave pieces of
50 * this to make the actual object.
51 */
bfe485ff
MW
52 translate([-WIDTH/2, -THICK/2, 0])
53 cube([WIDTH, THICK, HEIGHT]);
5f1872e8
MW
54
55 /* Round off the vertical edges. */
bfe485ff 56 cylinder(h = HEIGHT, r = norm([CUT_WD/2, WIDTH/2]));
5f1872e8
MW
57
58 /* Round off the shelves that sit around the pick body. */
bfe485ff
MW
59 rotate([0, 90, 0])
60 translate([0, 0, -BIG/2])
61 cylinder(h = BIG, r = norm([HEIGHT, CUT_WD/2]));
62 }
5f1872e8 63
bfe485ff 64 union() {
5f1872e8
MW
65
66 /* Cut out the channel in which the pick body sits, leaving the shelves
67 * on either side.
68 */
bfe485ff
MW
69 translate([-BIG/2, -CUT_WD/2, SPACER_HT])
70 cube([BIG, CUT_WD, BIG]);
5f1872e8
MW
71
72 /* Bore the hole down the middle through which the tensioning prongs and
73 * pick fit.
74 */
bfe485ff
MW
75 translate([0, 0, -BIG/3])
76 cylinder(h = BIG, r = BORE_DIAM/2);
77 }
78}
5f1872e8
MW
79
80/*----- That's all, folks -------------------------------------------------*/