-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathklean-kanteen-cap.escad
More file actions
84 lines (69 loc) · 2.44 KB
/
klean-kanteen-cap.escad
File metadata and controls
84 lines (69 loc) · 2.44 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Length refers to axial distance
// Threads
thread_major_diam = 43.6;
thread_minor_diam = 39.5;
thread_height = 2.8; // axial height
thread_start_height = 1;
thread_pitch = 6.25;
thread_length = 20;
// Thickness of wall
wall_thickness = 3.2;
// Unthreaded region above threads
neck_length = 7;
// Top seal
seal_diam = 2;
seal_inset = 0.0;
// Flared out top
top_diam = 51.5;
top_length = 20;
module cap() {
difference() {
union() {
cylinder(r=thread_minor_diam/2, h=thread_length+neck_length);
// Threads
translate([0,0,thread_start_height])
rotate_extrude(360*thread_length/thread_pitch, translate=[0,thread_length])
translate([thread_minor_diam/2, 0])
difference() {
square([(thread_major_diam - thread_minor_diam) / 2, thread_height]);
rotate(-90+20) square([thread_major_diam, thread_major_diam]);
}
// top
scale([1.3, 1.0, 1])
translate([0,0,thread_length+neck_length])
intersection() {
cylinder(r=top_diam/2, h=top_length);
sphere(r=top_diam/2);
}
// handle
translate([15, 0, thread_length+neck_length+top_length-4])
rotate([0,30,0])
intersection() {
difference() {
scale([0.8, 1, 1])
cylinder(r=10, h=28);
// Hole
translate([0,0,20])
rotate([0, 90, 0])
rotate_extrude() translate([10,0]) circle(r=5);
}
// Round top
translate([0, 0, -0])
sphere(r=18);
}
}
// Seal recess
translate([0, 0, thread_length+neck_length-seal_diam/2])
rotate_extrude()
translate([thread_minor_diam/2-seal_inset, 0])
circle(r=seal_diam/2);
// Hollow out interior
translate([0,0,-1])
cylinder(r=thread_minor_diam/2 - wall_thickness, h=thread_length+neck_length-5);
translate([0,0,thread_length+neck_length-5])
sphere(r=thread_minor_diam/2 - wall_thickness);
}
}
union() {
cap();
}