|
@@ -0,0 +1,132 @@
|
|
1
|
+include <rounded.scad>;
|
|
2
|
+
|
|
3
|
+handle_width = 32;
|
|
4
|
+handle_depth = 31;
|
|
5
|
+handle_height = 20;
|
|
6
|
+handle_wall = 3;
|
|
7
|
+handle_off = 5;
|
|
8
|
+
|
|
9
|
+// distance between table and bottom of barell
|
|
10
|
+mount_off_bottom = 82;
|
|
11
|
+
|
|
12
|
+// distance between center of handle and center of barell mount
|
|
13
|
+mount_off_handle = 141;
|
|
14
|
+
|
|
15
|
+mount_post_dia = 15;
|
|
16
|
+mount_post_off = 5;
|
|
17
|
+mount_post_height_remove = 10;
|
|
18
|
+
|
|
19
|
+mount_grip_width = 10;
|
|
20
|
+mount_grip_depth = 9;
|
|
21
|
+mount_grip_height = 6;
|
|
22
|
+mount_grip_wall = 2;
|
|
23
|
+
|
|
24
|
+ammo_dia = 10.5;
|
|
25
|
+ammo_height = 10;
|
|
26
|
+ammo_dist = 5;
|
|
27
|
+ammo_box_wall = 2;
|
|
28
|
+
|
|
29
|
+ammo_count_width = 7;
|
|
30
|
+ammo_count_depth = 3;
|
|
31
|
+
|
|
32
|
+ammo_box_width = ammo_count_width * (ammo_dia + ammo_dist);
|
|
33
|
+ammo_box_depth = ammo_count_depth * (ammo_dia + ammo_dist);
|
|
34
|
+
|
|
35
|
+base_depth = 50;
|
|
36
|
+base_height = 2;
|
|
37
|
+
|
|
38
|
+base_fillet = (base_height / 2) - 0.01;
|
|
39
|
+handle_fillet = (handle_wall / 2) - 0.01;
|
|
40
|
+ammo_box_fillet = (ammo_box_wall / 2) - 0.01;
|
|
41
|
+
|
|
42
|
+handle_center = handle_off + handle_wall + (handle_width / 2);
|
|
43
|
+base_width = handle_center + mount_off_handle + (mount_post_dia / 2) + mount_post_off;
|
|
44
|
+
|
|
45
|
+$fn = 30;
|
|
46
|
+
|
|
47
|
+module ammo() {
|
|
48
|
+ difference() {
|
|
49
|
+ rounded_cube(ammo_box_width,
|
|
50
|
+ ammo_box_depth,
|
|
51
|
+ ammo_box_wall + ammo_height,
|
|
52
|
+ rx=ammo_box_fillet, ry=ammo_box_fillet,
|
|
53
|
+ rz=ammo_box_fillet,
|
|
54
|
+ noback=false, nobottom=true, notop=true);
|
|
55
|
+
|
|
56
|
+ translate([(ammo_dia + ammo_dist) / 2,
|
|
57
|
+ (ammo_dia + ammo_dist) / 2,
|
|
58
|
+ ammo_box_wall])
|
|
59
|
+ for (y = [0 : ammo_count_depth - 1]) {
|
|
60
|
+ for (x = [0 : ammo_count_width - 1]) {
|
|
61
|
+ translate([x * (ammo_dia + ammo_dist),
|
|
62
|
+ y * (ammo_dia + ammo_dist),
|
|
63
|
+ 0])
|
|
64
|
+ cylinder(d = ammo_dia, h = ammo_height + 1);
|
|
65
|
+ }
|
|
66
|
+ }
|
|
67
|
+ }
|
|
68
|
+}
|
|
69
|
+
|
|
70
|
+module mount() {
|
|
71
|
+ // base plate
|
|
72
|
+ color("blue")
|
|
73
|
+ rounded_cube(base_width, base_depth, base_height,
|
|
74
|
+ rx=base_fillet, ry=base_fillet, rz=base_fillet,
|
|
75
|
+ noback=false, nobottom=true, notop=true);
|
|
76
|
+
|
|
77
|
+ // handle holder
|
|
78
|
+ color("green")
|
|
79
|
+ translate([handle_off,
|
|
80
|
+ (base_depth - handle_depth) / 2 - handle_wall,
|
|
81
|
+ base_height])
|
|
82
|
+ difference() {
|
|
83
|
+ rounded_cube(handle_width + (2 * handle_wall),
|
|
84
|
+ handle_depth + (2 * handle_wall),
|
|
85
|
+ handle_height,
|
|
86
|
+ rx=handle_fillet, ry=handle_fillet,
|
|
87
|
+ rz=handle_fillet,
|
|
88
|
+ noback=false, nobottom=true, notop=true);
|
|
89
|
+
|
|
90
|
+ translate([handle_wall, handle_wall, 0])
|
|
91
|
+ rounded_cube(handle_width, handle_depth,
|
|
92
|
+ handle_height + 1,
|
|
93
|
+ rx=handle_fillet, ry=handle_fillet,
|
|
94
|
+ rz=handle_fillet,
|
|
95
|
+ noback=false, nobottom=true, notop=true);
|
|
96
|
+ }
|
|
97
|
+
|
|
98
|
+ // front holder
|
|
99
|
+ color("yellow")
|
|
100
|
+ translate([handle_center + mount_off_handle,
|
|
101
|
+ base_depth / 2,
|
|
102
|
+ base_height])
|
|
103
|
+ difference() {
|
|
104
|
+ hull() {
|
|
105
|
+ cylinder(d = mount_post_dia,
|
|
106
|
+ h = mount_off_bottom
|
|
107
|
+ - mount_post_height_remove);
|
|
108
|
+
|
|
109
|
+ translate([-mount_grip_width / 2,
|
|
110
|
+ -mount_grip_depth / 2 - mount_grip_wall,
|
|
111
|
+ mount_off_bottom])
|
|
112
|
+ cube([mount_grip_width,
|
|
113
|
+ mount_grip_depth + (2 * mount_grip_wall),
|
|
114
|
+ mount_grip_height]);
|
|
115
|
+ }
|
|
116
|
+
|
|
117
|
+ translate([-mount_grip_width / 2 - 1,
|
|
118
|
+ -mount_grip_depth / 2,
|
|
119
|
+ mount_off_bottom])
|
|
120
|
+ cube([mount_grip_width + 2,
|
|
121
|
+ mount_grip_depth,
|
|
122
|
+ mount_grip_height + 1]);
|
|
123
|
+ }
|
|
124
|
+
|
|
125
|
+ color("red")
|
|
126
|
+ translate([2 * handle_center, (base_depth - ammo_box_depth) / 2, base_height - ammo_box_wall])
|
|
127
|
+ ammo();
|
|
128
|
+}
|
|
129
|
+
|
|
130
|
+mount();
|
|
131
|
+
|
|
132
|
+//ammo();
|