-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathheatsink.scad
113 lines (94 loc) · 3.43 KB
/
heatsink.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Parametric Mini-ITX Case
// https://github.com/eclecticc/ParametricCase
//
// BSD 2-Clause License
// Copyright (c) 2018, Nirav Patel, http://eclecti.cc
//
// Parametric CPU heatsink modules
include <defaults.scad>;
include <fan.scad>;
// Generic rectangular heatsink with fins
module heatsink(size, base, fins) {
translate([-size[0]/2, -size[1]/2, 0]) {
color("Gainsboro") {
difference() {
cube(size);
for (i = [0:fins-1]) {
translate([-extra/2, i*(size[1]-size[1]/fins/3)/fins + size[1]/fins/3, base]) cube([size[0]+extra, 2*size[1]/fins/3, size[2]-base+extra]);
}
}
}
}
}
aio_pump_size = [66, 66, 30];
// A generic placeholder for an AIO cooling system pump
module aio_pump() {
color("DarkSlateGray", 1.0) {
translate([-aio_pump_size[0]/2, -aio_pump_size[1]/2, 0]) cube(aio_pump_size);
}
}
cryorig_c7_size = [97, 97, 47+15];
module cryorig_c7() {
heatsink([cryorig_c7_size[0], cryorig_c7_size[1], cryorig_c7_size[2]-15], 5, 57);
translate([0, 0, 47]) fan(92, 15, 11);
}
noctua_nh_l12s_size = [146, 128, 70];
module noctua_nh_l12s() {
translate([noctua_nh_l12s_size[0]/2-66, 0, noctua_nh_l12s_size[2]-20]) heatsink([noctua_nh_l12s_size[0], noctua_nh_l12s_size[1], 20], 0, 80);
translate([noctua_nh_l12s_size[0]/2-66, 0, noctua_nh_l12s_size[2]-15-20]) fan(120, 15, 9);
color("Gainsboro") {
translate([-20, -20, 0]) cube([40, 40, 15]);
}
}
noctua_nh_u9s_size = [95, 95, 125];
module noctua_nh_u9s() {
color("Gainsboro") {
translate([-noctua_nh_u9s_size[0]/2, -noctua_nh_u9s_size[1]/2, 0]) cube(noctua_nh_u9s_size);
}
}
// Dimensions including stock fan
corsair_h60_size = [27+25, 152, 120];
corsair_h60_fan = [120, 25];
corsair_h60_fan_offset = 4; // TODO: Need to measure actual offset
// Corsair Hydro H60 all in one CPU cooler
module corsair_h60() {
fan_thickness = 25;
color("DarkSlateGray", 1.0) {
translate([fan_thickness, 0, 0]) {
cube([corsair_h60_size[0]-fan_thickness, corsair_h60_size[1], corsair_h60_size[2]]);
// Add placeholders for the tubes
tube_r = 6; // TODO: measure this
translate([0, corsair_h60_size[1]-tube_r, corsair_h60_size[2]/4]) {
rotate([0, -90, 0]) cylinder(r = tube_r, h = 50);
translate([0, 0, corsair_h60_size[2]/2]) rotate([0, -90, 0]) cylinder(r = tube_r, h = 50);
}
}
}
translate([0, corsair_h60_size[1]/2-corsair_h60_fan_offset, corsair_h60_fan[0]/2]) rotate([0, 90, 0]) fan(corsair_h60_fan[0], fan_thickness, 7);
}
// Build the heatsink from the name of it
module heatsink_type(type) {
if (type == "cryorig_c7") {
cryorig_c7();
} else if (type == "noctua_nh_l12s") {
noctua_nh_l12s();
} else if (type == "noctua_nh_u9s") {
noctua_nh_u9s();
} else if (type == "aio") {
aio_pump();
} else {
echo("Unknown heatsink ", type);
}
}
_heatsinks=[
["cryorig_c7", cryorig_c7_size[2]],
["noctua_nh_l12s", noctua_nh_l12s_size[2]],
["noctua_nh_u9s", noctua_nh_u9s_size[2]],
["aio", aio_pump_size[2]]
];
// Return the height of the heatsink from the name of it
function heatsink_height(heatsink) = _heatsinks[search([heatsink], _heatsinks, 1, 0)[0]][1];
//heatsink_type("noctua_nh_l12s");
//cryorig_c7();
//noctua_nh_l12s();
//corsair_h60();