Browse Source

Add Lian Li HDD Cage design

Thomas Buck 6 years ago
parent
commit
7b23b7acfd
4 changed files with 123264 additions and 0 deletions
  1. 41162
    0
      lian-li-hdd-cage/hdd-cage-v2.stl
  2. 41162
    0
      lian-li-hdd-cage/hdd-cage-v3.stl
  3. 226
    0
      lian-li-hdd-cage/hdd-cage.scad
  4. 40714
    0
      lian-li-hdd-cage/hdd-cage.stl

+ 41162
- 0
lian-li-hdd-cage/hdd-cage-v2.stl
File diff suppressed because it is too large
View File


+ 41162
- 0
lian-li-hdd-cage/hdd-cage-v3.stl
File diff suppressed because it is too large
View File


+ 226
- 0
lian-li-hdd-cage/hdd-cage.scad View File

@@ -0,0 +1,226 @@
1
+cage_width = 104.9;
2
+cage_length = 160.0;
3
+cage_wall = 1.3;
4
+cage_hold_large = 12.0;
5
+cage_hold_small = 8.0;
6
+cage_hold_length = 19.7;
7
+cage_hold_off_bot = 13.4;
8
+cage_hold_off_left = 16.6;
9
+cage_hold_off_top = 56.9;
10
+cage_hold_off_right = 49.6;
11
+cage_lip = 9.9 + 2.0;
12
+cage_lip_hole = 3.4;
13
+cage_lip_hole_dist = 37;
14
+cage_lip_hole_off = 29.0;
15
+cage_lip_hole_off_y = 2.0;
16
+
17
+lip_wall = 1.6;
18
+lip_width = cage_lip_hole_dist + 10.0;
19
+
20
+rail_height = 7.5;
21
+rail_height_front = 13.0;
22
+rail_radius = 7.0;
23
+rail_length = 117;
24
+rail_width = lip_wall + 2;
25
+rail_dist = 27.5;
26
+rail_off_front = 7.8;
27
+
28
+nub_small = 6.6;
29
+nub_small_height = cage_wall + 0.4;
30
+nub_large = cage_hold_large - 1.5;
31
+nub_large_height = 1.5;
32
+
33
+stable_cut_height = 15.0;
34
+stable_cut_depth = 20.0;
35
+stable_cut_width = 7.5;
36
+
37
+$fn = 20;
38
+
39
+module cage_hold() {
40
+    translate([cage_hold_large / 2, cage_hold_large / 2, 0])
41
+    union() {
42
+        cylinder(d = cage_hold_large, h = cage_wall + 2);
43
+    
44
+        translate([0, cage_hold_length - (cage_hold_large / 2) - (cage_hold_small / 2), 0])
45
+            cylinder(d = cage_hold_small, h = cage_wall + 2);
46
+    }
47
+}
48
+
49
+module cage() {
50
+    // cage bottom
51
+    difference() {
52
+        cube([cage_width, cage_length, cage_wall]);
53
+        
54
+        translate([cage_hold_off_left, cage_hold_off_bot, -1])
55
+            cage_hold();
56
+        
57
+        translate([cage_hold_off_left + cage_hold_large + cage_hold_off_right, cage_hold_off_bot, -1])
58
+            cage_hold();
59
+        
60
+        translate([cage_hold_off_left, cage_hold_off_bot + cage_hold_length + cage_hold_off_top, -1])
61
+            cage_hold();
62
+        
63
+        translate([cage_hold_off_left + cage_hold_large + cage_hold_off_right, cage_hold_off_bot + cage_hold_length + cage_hold_off_top, -1])
64
+            cage_hold();
65
+    }
66
+    
67
+    // cage lip
68
+    difference() {
69
+        cube([cage_width, cage_wall, cage_lip]);
70
+        
71
+        translate([cage_lip_hole_off, cage_wall + 1, cage_lip / 2 + cage_lip_hole_off_y])
72
+            rotate([90, 0, 0])
73
+            cylinder(d = cage_lip_hole, h = cage_wall + 2);
74
+        translate([cage_lip_hole_off + cage_lip_hole_dist, cage_wall + 1, cage_lip / 2 + cage_lip_hole_off_y])
75
+            rotate([90, 0, 0])
76
+            cylinder(d = cage_lip_hole, h = cage_wall + 2);
77
+    }
78
+}
79
+
80
+module rail() {
81
+    // main rail
82
+    cube([rail_width, rail_length - (rail_height / 2), rail_height]);
83
+    
84
+    // rounded end
85
+    translate([0, rail_length - (rail_height / 2), rail_height / 2])
86
+        rotate([0, 90, 0])
87
+        cylinder(d = rail_height, h = rail_width);
88
+    
89
+    // front hdd insert
90
+    difference() {
91
+        translate([0, 0, -((rail_height_front - rail_height) / 2)])
92
+            cube([rail_width, rail_radius, rail_height_front]);
93
+        
94
+        translate([-1, rail_radius, -rail_radius / 2])
95
+            rotate([0, 90, 0])
96
+            cylinder(d = rail_radius, h = rail_width + 2);
97
+        
98
+        translate([-1, rail_radius, rail_height + rail_radius / 2])
99
+            rotate([0, 90, 0])
100
+            cylinder(d = rail_radius, h = rail_width + 2);
101
+    }
102
+}
103
+
104
+module nub() {
105
+    // nub itself
106
+    translate([0, 0, nub_small_height + nub_large_height])
107
+        cylinder(d = nub_large, h = nub_large_height);
108
+    translate([0, 0, nub_large_height])
109
+        cylinder(d = nub_small, h = nub_small_height);
110
+    cylinder(d = nub_large, h = nub_large_height);
111
+    
112
+    // support pillar up to main plate
113
+    translate([0, 0, nub_small_height + (2 * nub_large_height)])
114
+        cylinder(d = nub_small, h = cage_lip - nub_large_height);
115
+}
116
+
117
+module mount_nubs() {
118
+    translate([cage_hold_off_left + (cage_hold_large / 2), cage_hold_off_bot + cage_hold_length - (cage_hold_small / 2), -nub_large_height - ((nub_small_height - cage_wall) / 2)])
119
+        nub();
120
+    
121
+    translate([cage_hold_off_left + (cage_hold_large / 2) + cage_hold_off_right + cage_hold_large, cage_hold_off_bot + cage_hold_length - (cage_hold_small / 2), -nub_large_height - ((nub_small_height - cage_wall) / 2)])
122
+        nub();
123
+    
124
+    translate([cage_hold_off_left + (cage_hold_large / 2), cage_hold_off_bot + cage_hold_length - (cage_hold_small / 2) + cage_hold_off_top + cage_hold_length, -nub_large_height - ((nub_small_height - cage_wall) / 2)])
125
+        nub();
126
+    
127
+    translate([cage_hold_off_left + (cage_hold_large / 2) + cage_hold_off_right + cage_hold_large, cage_hold_off_bot + cage_hold_length - (cage_hold_small / 2) + cage_hold_off_top + cage_hold_length, -nub_large_height - ((nub_small_height - cage_wall) / 2)])
128
+        nub();
129
+}
130
+
131
+module mount_lip() {
132
+    difference() {
133
+        translate([cage_lip_hole_off - ((lip_width - cage_lip_hole_dist) / 2), 0, 0])
134
+        cube([lip_width, lip_wall, cage_lip]);
135
+        
136
+        translate([cage_lip_hole_off, cage_wall + 1, cage_lip / 2 + cage_lip_hole_off_y])
137
+            rotate([90, 0, 0])
138
+            cylinder(d = cage_lip_hole, h = cage_wall + 2);
139
+        translate([cage_lip_hole_off + cage_lip_hole_dist, cage_wall + 1, cage_lip / 2 + cage_lip_hole_off_y])
140
+            rotate([90, 0, 0])
141
+            cylinder(d = cage_lip_hole, h = cage_wall + 2);
142
+    }
143
+}
144
+
145
+add_after_rail = 15;
146
+
147
+module rail_wall() {
148
+    difference() {
149
+        cube([lip_wall, rail_length + add_after_rail, rail_dist + rail_height + (rail_dist / 2)]);
150
+        
151
+        // bubbles
152
+        translate([-1, 10, 10])
153
+        for (i = [0 : 15 : (rail_length + add_after_rail - 20)]) {
154
+            translate([0, i, 0])
155
+                rotate([0, 90, 0])
156
+                cylinder(d = 7, h = lip_wall + 2);
157
+            
158
+            translate([0, i + 8, 10])
159
+                rotate([0, 90, 0])
160
+                cylinder(d = 7, h = lip_wall + 2);
161
+            
162
+            translate([0, i + 4, 32.5])
163
+                rotate([0, 90, 0])
164
+                cylinder(d = 7, h = lip_wall + 2);
165
+        }
166
+    }
167
+}
168
+
169
+module stabilizer() {
170
+    difference() {
171
+        translate([-lip_wall, 0, -lip_wall])
172
+            cube([stable_cut_width + lip_wall, stable_cut_depth, stable_cut_height + (2 * lip_wall)]);
173
+        
174
+        translate([0, -1, 0])
175
+            cube([stable_cut_width + 1, stable_cut_depth + 2, stable_cut_height]);
176
+    }
177
+}
178
+
179
+module mount() {
180
+    // model of the bottom of the cage
181
+    %cage();
182
+    
183
+    // nubs fitting 2.5" HDD slots on bottom
184
+    mount_nubs();
185
+    
186
+    // screwed-on lip
187
+    translate([0, -lip_wall, 0])
188
+        mount_lip();
189
+    
190
+    // main horizontal plate
191
+    translate([0, -lip_wall, cage_lip])
192
+        cube([cage_width, rail_length + add_after_rail, lip_wall]);
193
+
194
+    // left rail support
195
+    difference() {
196
+        translate([-lip_wall, -lip_wall, cage_lip])
197
+            rail_wall();
198
+        
199
+        translate([-rail_width + 1, -rail_off_front, cage_lip + rail_dist])
200
+            rail();
201
+    }
202
+    
203
+    // left rail stabilizer
204
+    translate([-stable_cut_width - lip_wall, -lip_wall, cage_lip + rail_dist - (stable_cut_height - rail_height) / 2])
205
+        stabilizer();
206
+    
207
+    // right rail support
208
+    difference() {
209
+        translate([cage_width, -lip_wall, cage_lip])
210
+            rail_wall();
211
+        
212
+        translate([cage_width - 1, -rail_off_front, cage_lip + rail_dist])
213
+            rail();
214
+    }
215
+    
216
+    // right rail stabilizer
217
+    translate([cage_width + stable_cut_width + lip_wall, -lip_wall, stable_cut_height + cage_lip + rail_dist - (stable_cut_height - rail_height) / 2])
218
+        rotate([0, 180, 0])
219
+        stabilizer();
220
+    
221
+    // bottom/top horizontal plate
222
+    translate([-lip_wall, -lip_wall, cage_lip + rail_dist + rail_height + (rail_dist / 2)])
223
+        cube([cage_width + (2 * lip_wall), rail_length + add_after_rail, lip_wall]);
224
+}
225
+
226
+mount();

+ 40714
- 0
lian-li-hdd-cage/hdd-cage.stl
File diff suppressed because it is too large
View File


Loading…
Cancel
Save