jbod

jbod.git
git clone git://git.lenczewski.org/jbod.git
Log | Files | Refs | README

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 }