-
Notifications
You must be signed in to change notification settings - Fork 0
/
wichard_snaphook_release_cone.scad
66 lines (55 loc) · 2.4 KB
/
wichard_snaphook_release_cone.scad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// 3D model for a cone to release a Wichard quick release snap shackle
// See http://marine.wichard.com/rubrique-Quick_release_snap_shackles-0202040300000000-ME.html
// Make two cones per snap shackle.
// Author: Philip B Chase, <[email protected]>
/* This design is meant to be assembled on the a 1/16" stainless steel wire rope that passes through the release gate of the snap shackle. The narrow tip of each cone faces the shackle. Each cone is also threaded through a ball to provide a handle. When pulled the ball pulls the opposie cone into the release gate to open the snap shackle.
*/
/* License: To the extent possible under law, Philip B Chase has waived all copyright and related or neighboring rights to 3D model for a cone to release a Wichard quick release snap shackle. This work is published from: United States. See: http://creativecommons.org/publicdomain/zero/1.0/
*/
// The dimensions of the base cylinder
base_h = 7;
base_r = 12.7/2;
// The dimensions of the second cylinder and its fillet
mid_h = 9;
// For model 2674, use mid_r = 7/2
// For model 2776, use mid_r = 8/2
mid_r = 8/2;
mid_fillet_r = 1.5;
// The dimensions of the cone
top_h = 25;
top_r1 = mid_r;
top_r2 = 4/2;
// The dimensions of the bore tha passes through the entire stack of cylinders and cones
bore_r = 1/16 * 25.4/2;
bore_h = base_h + mid_h + top_h;
// set the facet number high (40-60) for final generation
$fn = 30;
difference() {
union() { // stack a series of cylinders from z=0 going up.
// start with a squat cylinder, A
cylinder(h = base_h, r1 = base_r, r2 = base_r);
// add a smaller diameter cylinder, B
translate([0,0,base_h])
cylinder(h = mid_h, r1 = mid_r, r2 = mid_r);
// Add a crude fillet, C, between A and B
translate([0,0,base_h])
fillet(mid_r, mid_fillet_r);
// Add a cone, D
translate([0,0,base_h+mid_h])
cylinder(h = top_h, r1 = top_r1, r2 = top_r2, center = true/false);
}
// subtract the center bore
cylinder(h = bore_h, r1 = bore_r, r2 = bore_r);
}
module fillet(r1, r2){
// r1 is radius of the cylinder whose base needs a fillet around it.
// r2 is the radius of that fillet.
//$fn=30;
difference() {
cylinder(r=r1 + r2, h=r2);
translate([0,0,r2])
rotate_extrude(convexity = 10)
translate([r1 + r2, 0, 0])
circle(r = r2);
}
}