viz.scad (2134B)
1 include <constants.scad> 2 3 module disk() { 4 disk_size = [ 5 disk_width, disk_depth, disk_height, 6 ]; 7 8 conn_size = [ 9 disk_conn_width, disk_conn_depth, disk_conn_height, 10 ]; 11 12 conn_off = [ 13 disk_conn_off_width, disk_conn_off_depth, disk_conn_off_height, 14 ]; 15 16 color("red", 1.0) 17 difference() { 18 cube(disk_size); 19 translate(conn_off - [1, 0, 0]) cube(conn_size + [2, 0, 0]); 20 } 21 22 translate(conn_off) color("black", 1.0) cube(conn_size); 23 } 24 25 module disk_group(disks = disks_per_group) { 26 disk_offset = [disk_width + (2 * disk_pad_width), 0, 0]; 27 disk_pad = [disk_pad_width, 0, 0]; 28 29 for (i = [0:disks - 1]) { 30 translate((i * disk_offset) + disk_pad) disk(); 31 } 32 } 33 34 module disk_row(groups = disk_groups_per_row, disks = disks_per_group) { 35 group_offset = [disk_group_width(disks), 0, 0]; 36 group_pad = [disk_group_pad_width, disk_group_pad_depth, 0]; 37 38 for (i = [0:groups-1]) { 39 translate((i * group_offset) + group_pad) disk_group(disks); 40 } 41 } 42 43 module disk_block(rows = disk_rows_per_block, 44 groups = disk_groups_per_row, 45 disks = disks_per_group) 46 { 47 row_offset = [0, disk_depth + (2 * disk_pad_depth), 0]; 48 row_pad = [0, disk_pad_depth, 0]; 49 50 for (i = [0:rows - 1]) { 51 translate((i * row_offset) + row_pad) disk_row(groups, disks); 52 } 53 } 54 55 module fan() { 56 color("grey", 1.0) cube([fan_width, fan_depth, fan_height]); 57 } 58 59 module fan_group(fans = 3) { 60 fan_offset = [fan_width + (2 * fan_pad_width), 0, 0]; 61 fan_pad = [fan_pad_width, 0, 0]; 62 63 for (i = [0:fans - 1]) { 64 translate((i * fan_offset) + fan_pad) fan(); 65 } 66 } 67 68 module psu() { 69 color("blue", 1.0) cube([psu_width, psu_depth, psu_height]); 70 } 71 72 module psu_group(psus = 2) { 73 psu_offset = [0, 0, psu_height + (2 * psu_pad_height)]; 74 psu_pad = [0, 0, psu_pad_height]; 75 76 for (i = [0:psus - 1]) { 77 translate((i * psu_offset) + psu_pad) psu(); 78 } 79 } 80 81 module expander_io() { 82 color("green", 1.0) cube([io_width, io_depth, io_height]); 83 } 84 85 module expander_io_group(ios = 2) { 86 expander_io_offset = [0, 0, io_height + (2 * io_pad_height)]; 87 expander_io_pad = [0, 0, io_pad_height]; 88 89 for (i = [0:ios - 1]) { 90 translate((i * expander_io_offset) + expander_io_pad) expander_io(); 91 } 92 }