added io masks, updated sbc_models, rockpro64 and jetsonnano cases, other cleanup

This commit is contained in:
Edward Kisiel
2022-05-14 21:10:28 -04:00
parent c9e9acf10a
commit 511c8929e8
6 changed files with 953 additions and 663 deletions

View File

@@ -1,6 +1,5 @@
/* /*
SBC Library Copyright 2016,2017,2018,2019,2020 Edward A. Kisiel SBC Library Copyright 2016,2017,2018,2019,2020,2021,2022 Edward A. Kisiel hominoid@cablemi.com
hominoid @ www.forum.odroid.com
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -50,6 +49,37 @@
20220413 Version 1.0.6 adjusted slide_4x9, adjust m.2_header, rj45-usb2_double, rj45-usb3_double, out-in-spdif, 20220413 Version 1.0.6 adjusted slide_4x9, adjust m.2_header, rj45-usb2_double, rj45-usb3_double, out-in-spdif,
momentary_6x6x4, fixed color for usb2 micro otg, adjust all header heights, momentary_6x6x4, fixed color for usb2 micro otg, adjust all header heights,
added mipi_csi, mipi_dsi, m.2_stud added mipi_csi, mipi_dsi, m.2_stud
see https://github.com/hominoids/SBC_Case_Builder
place(x,y,size_x,size_y,rotation,side,type,pcbsize_z)
pcb_add(size_x,size_y,loc_x,loc_y,rotation,side,type,pcbsize_z,data_1,data_2) - "square","round"
pcb_sub(size_x,size_y,loc_x,loc_y,rotation,side,type,pcbsize_z,data_1,data_2) - "square","round","art"
pcb_art(scale_d1,type,dxf_file) - "dxf"
pcb(size, radius)
memory(x,y,rotation,side,type,pcbsize_z) - "emmc","emmc_plug","sodimm_5.2","sodimm_9.2"
switch(x,y,rotation,side,type,pcbsize_z) - "slide_4x9"
button(x,y,rotation,side,type,pcbsize_z) - "momentary_6x6x9","momentary_6x6x4","momentary_6x6x4_90","momentary_4x2x1"
plug(x,y,rotation,side,type,pcbsize_z) - "pwr2.5_5x7.5","pwr5.5_7.5x11.5","pwr5.5_10x10","rtc_micro","audio_micro","uart_micro","molex_4x1","small_encl_satapwr"
usb2(x,y,rotation,side,type,pcbsize_z) - "single_vert_a","double_stacked_a","micro"
usb3(x,y,rotation,side,type,pcbsize_z) - "double_stacked_a"
network(x,y,rotation,side,type,pcbsize_z) - "rj45_single"
video(x,y,rotation,side,type,pcbsize_z - "hdmi_a","dp-hdmi_a","mipi_csi","mipi_dsi"
fan(x,y,rotation,side,type,pcbsize_z) - "micro","encl_pmw","encl_pmw_h"
gpio(x,y,rotation,side,type,pcbsize_z) - "encl_header_30","encl_header_12","header_40","header_20"
ic(x,y,rotation,side,type,pcbsize_z) - "ic_2.8x2.8","ic_3x3","ic_3.7x3.7","ic_4x4","ic_4.7x4.7","ic_5x5","ic_5.75x5.75","ic_6x6","ic_6.4x6.4",ic_6.75x6.75",
"ic_7x7","ic_4.3x5.1","ic_5.4x5.3","ic_6.7x8.4","ic_9x9","ic_11x8","ic_13x8","ic_13x9","ic_16x10"
audio(x,y,rotation,side,type,pcbsize_z) - "out-in-spdif","jack_3.5"
storage(x,y,rotation,side,type,pcbsize_z) - "sdcard","sdcard_i","sata_header","sata_power_vrec","sata_encl_power","sata_encl_header","m.2_header","m.2_stud"
combo(x,y,rotation,side,type,pcbsize_z) - "rj45-usb2_double","rj45-usb3_double"
jumper(x,y,rotation,side,type,pcbsize_z) - "header_2x1","header_3x2","header_5x1","header_6x1","header_7x1"
misc(x,y,rotation,side,type,pcbsize_z) - "ir_1","led_3x1.5","lcd_2.2","bat_hold_1"
heatsink(x,y,rotation,side,type,pcbsize_z,soc1size_z) - "hc4_oem","c4_oem","c2_oem","c1+_oem","xu4_oem","n1_oem","xu4q_oem","n2_oem","n2+_oem","m1_oem","h2_oem"
pcie(x,y,rotation,side,type,pcbsize_z) - "x4"
jst_ph(x,y,rotation,side,type,pcbsize_z) - type is #pins
cm_holder(x,y,rotation,side,type,pcbsize_z) - jetsonnano
cm(x,y,rotation,side,type,pcbsize_z) - jetsonnano
*/ */
module place(x,y,size_x,size_y,rotation,side,type,pcbsize_z) { module place(x,y,size_x,size_y,rotation,side,type,pcbsize_z) {
@@ -220,12 +250,12 @@ module memory(x,y,rotation,side,type,pcbsize_z) {
module switch(x,y,rotation,side,type,pcbsize_z) { module switch(x,y,rotation,side,type,pcbsize_z) {
// boot selector switch // boot selector switch
if(type=="slide_4x9") { if(type=="slide_4x9") {
size_x = 3.75; size_x = 9;
size_y = 9.1; size_y = 3.75;
place(x,y,size_x,size_y,rotation,side,type,pcbsize_z) place(x,y,size_x,size_y,rotation,side,type,pcbsize_z)
union() { union() {
color("silver") translate([0,0,.5]) cube([size_x, size_y, 3.5]); color("silver") translate([0,0,.5]) cube([size_x, size_y, 3.5]);
color("white") translate([3.75,4.5,1.75]) cube([3, 2, 1.5]); color("white") translate([3.75,-1.99,1.75]) cube([3, 2, 1.5]);
} }
} }
} }
@@ -1489,19 +1519,19 @@ module heatsink(x,y,rotation,side,type,pcbsize_z,soc1size_z) {
if(type=="n2_oem") { if(type=="n2_oem") {
size_x = 90; size_x = 90;
size_y = 90; size_y = 90;
place(x,y,size_x,size_y,rotation,side,type,(pcbsize_z-pcbsize_z-3)) place(x,y,size_x,size_y,rotation,side,type,-3)
color("gray") import("Odroid-N2_Heatsink.stl", convexity=3); color("gray") import("Odroid-N2_Heatsink.stl", convexity=3);
} }
if(type=="n2+_oem") { if(type=="n2+_oem") {
size_x = 90; size_x = 90;
size_y = 90; size_y = 90;
place(x,y,size_x,size_y,rotation,side,type,(pcbsize_z-pcbsize_z-3)) place(x,y,size_x,size_y,rotation,side,type,-3)
color("gray") import("Odroid-N2+_Heatsink.stl", convexity=3); color("gray") import("Odroid-N2+_Heatsink.stl", convexity=3);
} }
if(type=="m1_oem") { if(type=="m1_oem") {
size_x = 90; size_x = 90;
size_y = 122; size_y = 122;
place(x,y,size_x,size_y,rotation,side,type,(pcbsize_z-pcbsize_z-3)) place(x,y,size_x,size_y,rotation,side,type,-3)
color("gray") translate([-.5,0,3]) rotate([0,0,0]) import("Odroid-M1_Heatsink.stl", convexity=3); color("gray") translate([-.5,0,3]) rotate([0,0,0]) import("Odroid-M1_Heatsink.stl", convexity=3);
} }
if(type=="h2_oem") { if(type=="h2_oem") {

View File

@@ -1,6 +1,5 @@
/* /*
SBC Data Library Copyright 2018,2019,2020 Edward A. Kisiel SBC Data Library Copyright 2018,2019,2020,2021,2022 Edward A. Kisiel hominoid@cablemi.com
hominoid @ www.forum.odroid.com
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -30,6 +29,8 @@
raised C4 hdmi, updated Odroid-XU4Q, add type sdcard_i, adjusted C2 usb raised C4 hdmi, updated Odroid-XU4Q, add type sdcard_i, adjusted C2 usb
20220413 Version 1.06 Added Odroid-M1 as m1, adjustments h2, c4 gpio 20220413 Version 1.06 Added Odroid-M1 as m1, adjustments h2, c4 gpio
see https://github.com/hominoids/SBC_Case_Builder
Instructions: All measurements from lower left corner of PCB to lower left Instructions: All measurements from lower left corner of PCB to lower left
corner of component or opening, holes measured to center. All measurements in mm. corner of component or opening, holes measured to center. All measurements in mm.
PCB orientation is long side of board along the x axis. PCB orientation is long side of board along the x axis.
@@ -50,31 +51,32 @@
component_x, component_y, component_rotation, "component_side", "component_class","component_type" component_x, component_y, component_rotation, "component_side", "component_class","component_type"
component classes and types: component classes and types:
memory - emmc, emmc_plug, sodimm_5.2, sodimm_9.2 memory - "emmc","emmc_plug","sodimm_5.2","sodimm_9.2"
switch - slide_4x9 switch - slide_4x9
button - momentary_6x6x9, momentary_6x6x4, momentary_6x6x4_90 button - "momentary_6x6x9","momentary_6x6x4","momentary_6x6x4_90","momentary_4x2x1"
plug - pwr5.5_7.5x11.5, pwr2.5_5x7.5, rtc_micro, uart_micro, molex_4x1, small_encl_satapwr plug - "pwr2.5_5x7.5","pwr5.5_7.5x11.5","pwr5.5_10x10","rtc_micro","audio_micro","uart_micro","molex_4x1","small_encl_satapwr"
usb2 - single_vert_a, double_stacked_a, micro usb2 - "single_vert_a","double_stacked_a","micro"
usb3 - double_stacked_a usb3 - double_stacked_a
network - rj45_single network - rj45_single
video - hdmi_a, dp-hdmi_a video - "hdmi_a","dp-hdmi_a","mipi_csi","mipi_dsi"
fan - micro, encl_pmw, encl_pmw_h fan - "micro","encl_pmw","encl_pmw_h"
gpio - encl_header_30, encl_header_12, header_40, header_20 gpio - "encl_header_30","encl_header_12","header_40","header_20"
ic - ic_2.8x2.8, ic_4.7x4.7, ic_5x5, ic_5.75x5.75, ic_6x6, ic_6.75x6.75, ic_7x7, ic_6.7x8.4, ic_11x8, ic_13x8 ic - "ic_2.8x2.8","ic_3x3","ic_3.7x3.7","ic_4x4","ic_4.7x4.7","ic_5x5","ic_5.75x5.75","ic_6x6","ic_6.4x6.4",ic_6.75x6.75",
ic_3x3, ic_6.4x6.4, ic_3.7x3.7, ic_4.3x5.1, ic_5.4x5.3, ic_13x9, ic_9x9 "ic_7x7","ic_4.3x5.1","ic_5.4x5.3","ic_6.7x8.4","ic_9x9","ic_11x8","ic_13x8","ic_13x9","ic_16x10"
audio - out-in-spdif, jack_3.5 audio - "out-in-spdif","jack_3.5"
storage - sata_header, sata_encl_power, sata_encl_header, sata_power_vrec, m.2_header, sdcard, sdcard_i storage - "sdcard","sdcard_i","sata_header","sata_power_vrec","sata_encl_power","sata_encl_header","m.2_header","m.2_stud"
combo - rj45-usb2_double, rj45-usb3_double combo - "rj45-usb2_double","rj45-usb3_double"
jumper - header_2x1, header_5x1, header_7x1 jumper - "header_2x1","header_3x2","header_5x1","header_6x1","header_7x1"
misc - ir_1, batt_hold_1 misc - "ir_1","led_3x1.5","lcd_2.2","bat_hold_1"
heatsink - xu4_oem, xu4q_oem, c1+_oem, c2_oem, c4_oem, hc4_oem, n2_oem, h2_oem heatsink - "hc4_oem","c4_oem","c2_oem","c1+_oem","xu4_oem","n1_oem","xu4q_oem","n2_oem","n2+_oem","m1_oem","h2_oem"
pcie - x4 pcie - "x4"
jst_ph - number of pins from 2-16 jst_ph - number of pins from 2-16
sbc models "c1+","c2","c4","xu4","xu4q","mc1","hc1","hc4","n1","n2","n2+","h2","rpi3b+","a64","rock64","rockpro64","atomicpi","jetsonnano" sbc models "c1+","c2","c4","xu4","xu4q","mc1","hc1","hc4","n1","n2","n2+","h2","rpi3b+","a64","rock64","rockpro64","atomicpi","jetsonnano"
*/ */
sbc_data = [ sbc_data = [
// Hard Kernel Odroids // Hard Kernel Odroids
["c1+",85,56,1,3.5,17,6, // sbc model, pcb size and component height ["c1+",85,56,1,3.5,17,6, // sbc model, pcb size and component height
3.5,3.5,3,3.5,52.5,3, // pcb holes 1 and 2 location and pcb hole size 3.5,3.5,3,3.5,52.5,3, // pcb holes 1 and 2 location and pcb hole size
@@ -382,6 +384,43 @@ sbc_data = [
77.03,51.92,0,"top","ic","ic_3x3", // component, location, rotation, side, class and type 77.03,51.92,0,"top","ic","ic_3x3", // component, location, rotation, side, class and type
1,-.5,0,"top","heatsink","n2+_oem"], // heatsink location, rotation, side, class and type 1,-.5,0,"top","heatsink","n2+_oem"], // heatsink location, rotation, side, class and type
["n2+_noheatsink",90,90,1.7,.2,17,14, // sbc model, pcb size and component height
3,28.5,3.3,86.5,28.5,3.3, // pcb holes 1 and 2 location and pcb hole size
3,86.5,3.3,86.5,86.5,3.3, // pcb holes 3 and 4 location and pcb hole size
0,0,0,0,0,0, // pcb holes 5 and 6 location and pcb hole size
0,0,0,0,0,0, // pcb holes 7 and 8 location and pcb hole size
0,0,0,0,0,0, // pcb holes 9 and 10 location and pcb hole size
14.5,16.25,1.51,37.78,50.88,0,0,"bottom", // soc1 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
2.35,-1,0,"top","plug","pwr5.5_7.5x11.5", // power plug location, rotation, side, class and type
18,0,0,"top","usb3","double_stacked_a", // usb3 location, rotation, side, class and type
36,0,0,"top","usb3","double_stacked_a", // usb3 location, rotation, side, class and type
54.5,-1,0,"top","video","hdmi_a", // hdmi location, rotation, side, class and type
71.75,0,0,"top","network","rj45_single", // ethernet location, rotation, side, class and type
83.96,32.1,90,"top","gpio","header_40", // gpio location, rotation, side, class and type
17.61,39.73,0,"top","jumper","header_7x1", // jumper location, rotation, side, class and type
.2,69.05,270,"top","plug","uart_micro", // uart location, rotation, side, class and type
53,35,0,"top","misc","bat_hold_1", // battery holder, location, rotation, side, class and type
68.5,68.8,90,"top","fan","micro", // fan location, rotation, side, class and type
7.2,76.82,180,"top","storage","sdcard", // sdcard location, rotation, side, class and type
59.35,85.4,180,"top","usb2","micro", // usb2 otg location, rotation, side, class and type
35.85,85.62,0,"top","memory","emmc_plug", // emmc plug location, rotation, side, class and type
33.5,72,0,"top","memory","emmc", // emmc location, rotation, side, class and type
22.4,86.6,180,"top","misc","ir_1", // ir location, rotation, side, class and type
48.45,86.7,270,"top","switch","slide_4x9", // switch location, rotation, side, class and type
73.67,78.95,180,"top","audio","jack_3.5", // switch location, rotation, side, class and type
18.95,46.23,0,"top","ic","ic_13x8", // memory top size, location, rotation and side
19.04,64.24,0,"top","ic","ic_13x8", // memory top size, location, rotation and side
18.95,46.23,0,"bottom","ic","ic_13x8", // memory bottom size, location, rotation and side
19.04,64.24,0,"bottom","ic","ic_13x8", // memory bottom size, location, rotation and side
45.74,27.51,0,"top","ic","ic_6.4x6.4", // component, location, rotation, side, class and type
75.08,25,0,"top","ic","ic_3.7x3.7", // component, location, rotation, side, class and type
74.3,69.54,0,"top","ic","ic_4.3x5.1", // component, location, rotation, side, class and type
50.8,77.25,0,"top","ic","ic_5.4x5.3", // component, location, rotation, side, class and type
77.03,51.92,0,"top","ic","ic_3x3"], // component, location, rotation, side, class and type
["m1",90,122,1.7,.2,17,14, // sbc model, pcb size and component height ["m1",90,122,1.7,.2,17,14, // sbc model, pcb size and component height
3,28.5,3,3,118.5,3, // pcb holes 1 and 2 location and pcb hole size 3,28.5,3,3,118.5,3, // pcb holes 1 and 2 location and pcb hole size
86.5,118.5,3,,86.5,28.5,3, // pcb holes 3 and 4 location and pcb hole size 86.5,118.5,3,,86.5,28.5,3, // pcb holes 3 and 4 location and pcb hole size
@@ -421,6 +460,44 @@ sbc_data = [
.5,0,0,"top","heatsink","m1_oem", // heatsink location, rotation, side, class and type .5,0,0,"top","heatsink","m1_oem", // heatsink location, rotation, side, class and type
86.5,47,0,"top","storage","m.2_stud"], // m2 stud location, rotation, side, class and type 86.5,47,0,"top","storage","m.2_stud"], // m2 stud location, rotation, side, class and type
["m1_noheatsink",90,122,1.7,.2,17,14, // sbc model, pcb size and component height
3,28.5,3,3,118.5,3, // pcb holes 1 and 2 location and pcb hole size
86.5,118.5,3,,86.5,28.5,3, // pcb holes 3 and 4 location and pcb hole size
3,67,3,66,25,3, // pcb holes 5 and 6 location and pcb hole size
86.5,47,3,0,0,0, // pcb holes 7 and 8 location and pcb hole size
0,0,0,0,0,0, // pcb holes 9 and 10 location and pcb hole size
19,19,1.51,45,43.5,0,45,"bottom", // soc1 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
2.35,-1,0,"top","plug","pwr5.5_7.5x11.5", // power plug location, rotation, side, class and type
18,0,0,"top","usb3","double_stacked_a", // usb3 location, rotation, side, class and type
36,0,0,"top","usb2","double_stacked_a", // usb3 location, rotation, side, class and type
54.5,-1,0,"top","video","hdmi_a", // hdmi location, rotation, side, class and type
71.75,0,0,"top","network","rj45_single", // ethernet location, rotation, side, class and type
84.375,62.25,90,"top","gpio","header_40", // gpio location, rotation, side, class and type
.2,101,270,"top","plug","uart_micro", // uart location, rotation, side, class and type
21,88,120,"top","misc","bat_hold_1", // battery holder, location, rotation, side, class and type
61,118,0,"top","plug","audio_micro", // micro location, rotation, side, class and type
7.2,108.82,180,"top","storage","sdcard", // sdcard location, rotation, side, class and type
20,0,0,"bottom","usb2","micro", // usb2 otg location, rotation, side, class and type
35.85,117,0,"top","memory","emmc_plug", // emmc plug location, rotation, side, class and type
33.5,103,0,"top","memory","emmc", // emmc location, rotation, side, class and type
22.4,118.58,180,"top","misc","ir_1", // ir location, rotation, side, class and type
73.73,111.5,180,"top","audio","jack_3.5", // audio jack location, rotation, side, class and type
0,88.2,270,"top","plug","small_encl_satapwr", // pwrplug location, rotation, side, class and type
.25,72,270,"top","storage","sata_header", // sata location, rotation, side, class and type
50,115.65,0,"top","button","momentary_6x6x4", // spi button location, rotation, side, class and type
7,101,0,"top","jumper","header_2x1", // jumper location, rotation, side, class and type
7,103.5,0,"top","jumper","header_2x1", // jumper location, rotation, side, class and type
3.5,35.87,270,"top","storage","m.2_header", // m2 socket location, rotation, side, class and type
36.28,73,0,"bottom","ic","ic_16x10", // memory bottom size, location, rotation and side
75.75,25,0,"top","ic","ic_5x5", // ic bottom size, location, rotation and side
50.5,109.22,0,"top","ic","ic_5x5", // ic bottom size, location, rotation and side
58,72,0,"top","video","mipi_csi", // mipi csi size, location, rotation and side
65,93,0,"top","video","mipi_dsi", // mipi dsi size, location, rotation and side
86.5,47,0,"top","storage","m.2_stud"], // m2 stud location, rotation, side, class and type
["h2",110,110,2,3.5,38,11, // sbc model, pcb size and component height ["h2",110,110,2,3.5,38,11, // sbc model, pcb size and component height
3.81,17.78,3.5,3.81,106.19,3.5, // pcb holes 1 and 2 location and pcb hole size 3.81,17.78,3.5,3.81,106.19,3.5, // pcb holes 1 and 2 location and pcb hole size
106.04,24.77,3.5,106.04,106.2,3.5, // pcb holes 3 and 4 location and pcb hole size 106.04,24.77,3.5,106.04,106.2,3.5, // pcb holes 3 and 4 location and pcb hole size
@@ -635,45 +712,5 @@ sbc_data = [
0,0,0,0,0,0,0,"", // soc2 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc2 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc3 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc3 size, location, rotation and side
0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side 0,0,0,0,0,0,0,"", // soc4 size, location, rotation and side
10, -1.5, 0, "top", "video", "hdmi_a", // hdmi port
-1.5, 30, 90, "top", "video", "hdmi_a", // hdmi port
10, 69, 180, "top", "video", "hdmi_a", // hdmi port
117, 30, 270, "top", "video", "hdmi_a", // hdmi port
30, -1, 0, "top", "usb2", "micro", // usb2 micro port
-1, 10, 90, "top", "usb2", "micro", // usb2 micro port
30, 75.5, 180, "top", "usb2", "micro", // usb2 micro port
123.5, 10, 270, "top", "usb2", "micro", // usb2 micro port
// 50, -1, 0, "top", "plug", "pwr5.5_7.5x11.5", // pwr5.5_7.5x11.5
// -1, 2, 90, "top", "plug", "pwr5.5_7.5x11.5", // pwr5.5_7.5x11.5
// 50, 69, 180, "top", "plug", "pwr5.5_7.5x11.5", // pwr5.5_7.5x11.5
// 116.5, 2, 270, "top", "plug", "pwr5.5_7.5x11.5", // pwr5.5_7.5x11.5
// 50, -1, 0, "top", "plug", "pwr2.5_5x7.5", // pwr5.5_7.5x11.5
// -1, 2, 90, "top", "plug", "pwr2.5_5x7.5", // pwr5.5_7.5x11.5
// 50, 72.5, 180, "top", "plug", "pwr2.5_5x7.5", // pwr5.5_7.5x11.5
// 120.5, 2, 270, "top", "plug", "pwr2.5_5x7.5", // pwr5.5_7.5x11.5
// 50, -1, 0, "top", "plug", "pwr5.5_10x10", // pwr5.5_10x10
// -1, 2, 90, "top", "plug", "pwr5.5_10x10", // pwr5.5_10x10
// 50, 67, 180, "top", "plug", "pwr5.5_10x10", // pwr5.5_10x10
// 114.5, 2, 270, "top", "plug", "pwr5.5_10x10", // pwr5.5_10x10
// 60, -1, 0, "top", "network", "rj45_single", // rj45_single
// -1, 47, 90, "top", "network", "rj45_single", // rj45_single
// 60, 59, 180, "top", "network", "rj45_single", // rj45_single
// 107, 50, 270, "top", "network", "rj45_single", // rj45_single
// 80, -1, 0, "top", "usb2", "double_stacked_a", // double_stacked_a
// -1, 47, 90, "top", "usb2", "double_stacked_a", // double_stacked_a
// 80, 63, 180, "top", "usb2", "double_stacked_a", // double_stacked_a
// 110.5, 50, 270, "top", "usb2", "double_stacked_a", // double_stacked_a
100, -1, 0, "top", "usb2", "single_vert_a", // single_vert_a
-1, 67, 90, "top", "usb2", "single_vert_a", // single_vert_a
60, 61, 180, "top", "usb2", "single_vert_a", // single_vert_a
108.5, 67, 270, "top", "usb2", "single_vert_a", // single_vert_a
0,0,0,"","",""] // component, location, rotation, side, class and type 0,0,0,"","",""] // component, location, rotation, side, class and type
]; ];

View File

@@ -1,6 +1,5 @@
/* /*
SBC Models Copyright 2016,2017,2018,2019,2020 Edward A. Kisiel SBC Models Copyright 2016,2017,2018,2019,2020,2021,2022 Edward A. Kisiel hominoid@cablemi.com
hominoid @ www.forum.odroid.com
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -29,6 +28,8 @@
20220202 Version 1.0.5 Added HK Show2 as "show2" 20220202 Version 1.0.5 Added HK Show2 as "show2"
20220413 Version 1.0.6 Added Odroid-M1 as "m1" 20220413 Version 1.0.6 Added Odroid-M1 as "m1"
see https://github.com/hominoids/SBC_Case_Builder
USE: sbc(model) USE: sbc(model)
model = "c1+","c2","c4","xu4","xu4q","mc1","hc1","hc4","n1","n2","n2+","h2" model = "c1+","c2","c4","xu4","xu4q","mc1","hc1","hc4","n1","n2","n2+","h2"
"rpi3b+","a64","rock64","rockpro64","atomicpi","jetsonnano","show2" "rpi3b+","a64","rock64","rockpro64","atomicpi","jetsonnano","show2"

View File

@@ -1,6 +1,5 @@
/* /*
SBC Case Builder Copyright 2022 Edward A. Kisiel SBC Case Builder Copyright 2022 Edward A. Kisiel hominoid@cablemi.com
hominoid @ www.forum.odroid.com
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -28,6 +27,7 @@
c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boombox c4_shell_boombox, c4_panel_boombox, c4_deskboom_lcd3.5, c4_tray_boombox
20220406 Version 1.2.2 various case adjustments 20220406 Version 1.2.2 various case adjustments
see https://github.com/hominoids/SBC_Case_Builder
*/ */
/* Instructions: All measurements from lower left corner of PCB to lower left /* Instructions: All measurements from lower left corner of PCB to lower left
@@ -1388,7 +1388,40 @@ case_data = [
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff [6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff [6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","rectangle",17.5,36,28.5,"top",[0,0,0],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening "sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening
["jetsonnano_panel","jetsonnano","panel","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,-5,3, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening
["jetsonnano_stacked","jetsonnano","stacked","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,-5,3, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,true,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,4,0,0,"",[1,1,1,1]], // sub heatsink opening
["jetsonnano_tray","jetsonnano","tray","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,-5,3, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,0], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","rectangle",17.5,36.375,28.5,"top",[0,0,0],62,43,8,0,0,"",[1,1,1,1]], // sub heatsink opening
["rockpro64_shell","rockpro64","shell","none", // case_name, sbc_model, case_design, case_style ["rockpro64_shell","rockpro64","shell","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
@@ -1399,8 +1432,45 @@ case_data = [
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff [6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff [6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff [6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","fan",43,26,25,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,25,"top",[0,0,0],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_panel","rockpro64","panel","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
false,false,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","fan",43,26,24,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening "sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_stacked","rockpro64","stacked","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
false,true,true,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","fan",43,26,24,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,6,0,0,"",[1,1,1,1]], // sub pcie opening
["rockpro64_tray","rockpro64","tray","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,
2,2,2,1.5,[3,3], // wallthick,floorthick,sidethick,gap,fillet
false,true,false,true,true, // indents,sidewall_support,sbc_top_standoffs,sbc_bottom_standoffs,case_ext_standoffs
false,"vent","fan","vent","true", // sata_punchout,gpio_opening,cooling,exhaust_vents,mode
[6.75,15,2.5,10,4,4,0,1,0,4.5,5.1], // top_pcb_standoff
[6.75,11.4,3.6,10,4,1,0,0,0,4.5,5.1], // bottom_pcb_standoff
[6.75,15,2.5,10,4,4,0,1,1,4.5,5.1], // top_ext_standoff
[6.75,11.4,3.6,10,4,2,0,0,0,4.5,5.1], // bottom_ext_standoff
"sub","fan",43,26,25,"top",[0,0,0],40,0,6,2,0,"",0, // sub fan opening
"sub","rectangle",43,0,24.5,"top",[0,0,0],40,10,8,0,0,"",[1,1,1,1]], // sub pcie opening
["test","test","shell","none", // case_name, sbc_model, case_design, case_style ["test","test","shell","none", // case_name, sbc_model, case_design, case_style
0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz, 0,0,0,0,0,0,0, // pcb_loc_x,pcb_loc_y,pcb_loc_z,case_offset_x,case_offset_y,case_offset_tz,case_offset_bz,

View File

@@ -1,6 +1,5 @@
/* /*
SBC Case Builder Copyright 2022 Edward A. Kisiel SBC Case Builder Copyright 2022 Edward A. Kisiel hominoid@cablemi.com
hominoid @ www.forum.odroid.com
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -33,6 +32,7 @@
enabled pcb_z, added tabs and fixed tray case top, other fixes and maintenance enabled pcb_z, added tabs and fixed tray case top, other fixes and maintenance
20220406 Version 1.2.2 added vu7c, vu8m and weatherboard2 models, other additions, fixes and maintenance 20220406 Version 1.2.2 added vu7c, vu8m and weatherboard2 models, other additions, fixes and maintenance
see https://github.com/hominoids/SBC_Case_Builder
*/ */
use <./lib/sbc_models.scad>; use <./lib/sbc_models.scad>;

View File

@@ -1,5 +1,5 @@
/* /*
SBC Case Builder Library Copyright 2022 Edward A. Kisiel, hominoid @ www.forum.odroid.com SBC Case Builder Library Copyright 2022 Edward A. Kisiel hominoid@cablemi.com
Contributions: Contributions:
hk_vu8m(brackets),u_bracket(),screw(),m1_hdmount() Copyright 2022 Tomek Szczęsny, mctom @ www.forum.odroid.com hk_vu8m(brackets),u_bracket(),screw(),m1_hdmount() Copyright 2022 Tomek Szczęsny, mctom @ www.forum.odroid.com
@@ -42,10 +42,11 @@
adjusted access_port(), access_cover(), added @mctom's hk_vu8m(bracket), u_bracket(), spacer() adjusted access_port(), access_cover(), added @mctom's hk_vu8m(bracket), u_bracket(), spacer()
2022xxxx version 1.2.x removed spacer(); added screw(); modified hk_vu8m(); added m1_hdmount(); added hdd35_25holder(length) 2022xxxx version 1.2.x removed spacer(); added screw(); modified hk_vu8m(); added m1_hdmount(); added hdd35_25holder(length)
see https://github.com/hominoids/SBC_Case_Builder
place(x,y,z,size_x,size_y,rotation,side) place(x,y,z,size_x,size_y,rotation,side)
add(type,loc_x,loc_y,loc_z,size_x,size_y,size_z,rotation,face,side,case_z,data_1,data_2,data_3,data_4) add(type,loc_x,loc_y,loc_z,size_x,size_y,size_z,rotation,face,side,case_z,data_1,data_2,data_3,data_4)
sub(type,loc_x,loc_y,loc_z,size_x,size_y,size_z,rotation,face,side,case_z,data_1,data_2,data_3,data_4) sub(type,loc_x,loc_y,loc_z,size_x,size_y,size_z,rotation,face,side,case_z,data_1,data_2,data_3,data_4)
art(scale_d1,type,size_z) art(scale_d1,type,size_z)
screw(screw[d, l, style]) screw(screw[d, l, style])
slab(size, radius) slab(size, radius)
@@ -110,7 +111,6 @@
mask(loc_x,loc_y,rotation,side,class,type,case_z,wallthick,gap,floorthick,pcb_z) mask(loc_x,loc_y,rotation,side,class,type,case_z,wallthick,gap,floorthick,pcb_z)
punchout(width,depth,gap,thick,fillet,shape) punchout(width,depth,gap,thick,fillet,shape)
*/ */
use <./lib/fillets.scad>; use <./lib/fillets.scad>;
@@ -2541,42 +2541,70 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
} }
// emmc storage // emmc storage
if(type == "emmc" && side == "bottom" && rotation == 0) { if(type == "emmc" && side == "bottom" && rotation == 0) {
place(loc_x-.5,loc_y,floorthick+adjust,14.5,19,rotation,side) place(loc_x-.5,loc_y-.5,floorthick+adjust,14.5,19.5,rotation,side)
cube([14.5,19,floorthick+(2*adjust)]); cube([14.5,19.5,floorthick+(2*adjust)]);
} }
if(type == "emmc" && side == "bottom" && rotation == 90) { if(type == "emmc" && side == "bottom" && rotation == 90) {
place(loc_x,loc_y-.5,floorthick+adjust,14.5,19,rotation,side) place(loc_x-.5,loc_y-.5,floorthick+adjust,14.5,19.5,rotation,side)
cube([14.5,19,floorthick+(2*adjust)]); cube([14.5,19.5,floorthick+(2*adjust)]);
}
if(type == "emmc" && side == "bottom" && rotation == 180) {
place(loc_x-.5,loc_y-.5,floorthick+adjust,14.5,19.5,rotation,side)
cube([14.5,19.5,floorthick+(2*adjust)]);
}
if(type == "emmc" && side == "bottom" && rotation == 270) {
place(loc_x-.5,loc_y-.5,floorthick+adjust,14.5,19.5,rotation,side)
cube([14.5,19.5,floorthick+(2*adjust)]);
} }
// sd storage // sd storage
if(type == "sdcard" && side == "bottom" && rotation == 0) { if(type == "sdcard" && side == "bottom" && rotation == 0) {
place(loc_x,loc_y,loc_z,12,15.5,rotation,side) place(loc_x,loc_y-5,loc_z,12,15.5,rotation,side)
translate([-1,-10,3.5]) cube([13,15.5,2]); translate([-1,-10,3.5]) cube([13,15.5,2]);
} }
if(type == "sdcard" && side == "bottom" && rotation == 90) { if(type == "sdcard" && side == "bottom" && rotation == 90) {
place(loc_x+(2*(wallthick+gap+adjust)),loc_y,loc_z-2.75,12,15.5,rotation,side) place(loc_x+5,loc_y,loc_z-2.75,12,15.5,rotation,side)
cube([12,15.5,2]); cube([12,15.5,2]);
} }
if(type == "sdcard" && side == "bottom" && rotation == 180) { if(type == "sdcard" && side == "bottom" && rotation == 180) {
place(loc_x,loc_y+(2*(wallthick+gap+adjust)),loc_z-2.75,12,15.5,rotation,side) place(loc_x,loc_y+5,loc_z-2.75,12,15.5,rotation,side)
cube([12,15.5,2]); cube([12,15.5,2]);
} }
if(type == "sdcard_i" && side == "bottom" && rotation == 180) {
place(loc_x,loc_y+(2*(wallthick+gap+adjust)),floorthick+adjust+4,12,18.5,rotation,side)
cube([12,18.5,floorthick+(2*adjust)+4]);
}
if(type == "sdcard" && side == "bottom" && rotation == 270) { if(type == "sdcard" && side == "bottom" && rotation == 270) {
place(loc_x,loc_y,loc_z,12,15.5,rotation,side) place(loc_x+5,loc_y,loc_z,12,15.5,rotation,side)
translate([0,-18,2.75]) cube([12,15.5,2]); translate([0,-18,2.75]) cube([12,15.5,2]);
} }
if(type == "sdcard" && side == "top" && rotation == 0) { if(type == "sdcard" && side == "top" && rotation == 0) {
place(loc_x,loc_y-17,loc_z,12,15.5,rotation,side) place(loc_x,loc_y-15,loc_z,12,15.5,rotation,side)
translate([0,0,1.75]) cube([12,15.5,2]);
}
if(type == "sdcard" && side == "top" && rotation == 90) {
place(loc_x-15,loc_y-.5,loc_z,12,15.5,rotation,side)
translate([0,0,1.75]) cube([12,15.5,2]); translate([0,0,1.75]) cube([12,15.5,2]);
} }
if(type == "sdcard" && side == "top" && rotation == 180) { if(type == "sdcard" && side == "top" && rotation == 180) {
place(loc_x,loc_y+4,loc_z,12,15.5,rotation,side) place(loc_x-.5,loc_y+5,loc_z,12,15.5,rotation,side)
translate([0,0,1.75]) cube([12,15.5,2]); translate([0,0,1.75]) cube([12,15.5,2]);
} }
if(type == "sdcard" && side == "top" && rotation == 270) {
place(loc_x+5,loc_y,loc_z,12,15.5,rotation,side)
translate([0,0,1.75]) cube([12,15.5,2]);
}
if(type == "sdcard_i" && side == "bottom" && rotation == 0) {
place(loc_x,loc_y-18.5,floorthick+adjust+4,12,18.5,rotation,side)
cube([12,18.5,floorthick+(2*adjust)+4]);
}
if(type == "sdcard_i" && side == "bottom" && rotation == 90) {
place(loc_x+5.5,loc_y-.25,floorthick+adjust+4,12,18.5,rotation,side)
cube([12,18.5,floorthick+(2*adjust)+4]);
}
if(type == "sdcard_i" && side == "bottom" && rotation == 180) {
place(loc_x,loc_y+5.5,floorthick+adjust+4,12,18.5,rotation,side)
cube([12,18.5,floorthick+(2*adjust)+4]);
}
if(type == "sdcard_i" && side == "bottom" && rotation == 270) {
place(loc_x-18.5,loc_y-.25,floorthick+adjust+4,12,18.5,rotation,side)
cube([12,18.5,floorthick+(2*adjust)+4]);
}
// rj45 opening // rj45 opening
if(type == "rj45_single" && rotation == 0) { if(type == "rj45_single" && rotation == 0) {
place(loc_x,loc_y-6,loc_z,16,17.5,rotation,side) place(loc_x,loc_y-6,loc_z,16,17.5,rotation,side)
@@ -2629,61 +2657,185 @@ module mask(loc_x,loc_y,loc_z,rotation,side,class,type,wallthick,gap,floorthick,
cube([6.5,8,15]); cube([6.5,8,15]);
} }
// ir opening // ir opening
if(type == "ir_1") { if(type == "ir_1" && rotation == 0) {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([2.5,wallthick+gap,7.5]) rotate([90,0,0]) cylinder(d=6, h=9); translate([3.5,2,7.5]) rotate([90,0,0]) cylinder(d=6, h=9);
}
if(type == "ir_1" && rotation == 90) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([2.5,2,7.5]) rotate([90,0,0]) cylinder(d=6, h=9);
}
if(type == "ir_1" && rotation == 180) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([2.5,5,7.5]) rotate([90,0,0]) cylinder(d=6, h=9);
}
if(type == "ir_1" && rotation == 270) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([3.375,5,7.5]) rotate([90,0,0]) cylinder(d=6, h=9);
} }
// switch opening // switch opening
if(type == "slide_4x9" && rotation == 0) { if(type == "slide_4x9" && rotation == 0) {
place(loc_x+(wallthick+gap+adjust),loc_y,loc_z,4,9.1,rotation,side) place(loc_x,loc_y,loc_z,4,9,rotation,side)
translate([0,0,.5]) cube([15.75,9.1,4]); translate([0,-6,.25]) cube([9,8,4]);
}
if(type == "slide_4x9" && rotation == 90) {
place(loc_x,loc_y,loc_z,4,9,rotation,side)
translate([-5,-6,.25]) cube([9,8,4]);
}
if(type == "slide_4x9" && rotation == 180) {
place(loc_x,loc_y,loc_z,4,9,rotation,side)
translate([-5,-.5,.25]) cube([9,8,4]);
} }
if(type == "slide_4x9" && rotation == 270) { if(type == "slide_4x9" && rotation == 270) {
place(loc_x,loc_y,loc_z,4,9.1,rotation,side) place(loc_x,loc_y,loc_z,4,9,rotation,side)
translate([0,0,.5]) cube([15.75,9.1,4]); translate([0,-.75,.25]) cube([9,8,4]);
} }
// rj45-usb2_double opening // rj45-usb2_double opening
if(type == "rj45-usb2_double" && rotation == 0) { if(type == "rj45-usb2_double" && rotation == 0) {
place(loc_x,loc_y-2*(wallthick+gap)-adjust,loc_z,19,28,rotation,side) place(loc_x,loc_y-6,loc_z,19,28,rotation,side)
cube([19,28,31]); cube([19,8,31]);
}
if(type == "rj45-usb2_double" && rotation == 90) {
place(loc_x-6,loc_y,loc_z,19,28,rotation,side)
cube([19,8,31]);
}
if(type == "rj45-usb2_double" && rotation == 180) {
place(loc_x,loc_y+6,loc_z,19,28,rotation,side)
cube([19,8,31]);
}
if(type == "rj45-usb2_double" && rotation == 270) {
place(loc_x+6,loc_y,loc_z,19,28,rotation,side)
cube([19,8,31]);
} }
// rj45-usb3_double opening // rj45-usb3_double opening
if(type == "rj45-usb3_double" && rotation == 0) { if(type == "rj45-usb3_double" && rotation == 0) {
place(loc_x,loc_y-2*(wallthick+gap)-adjust,loc_z,19.5,28,rotation,side) place(loc_x-.25,loc_y-6,loc_z,19.5,28,rotation,side)
cube([19.5,28,31]); cube([19.5,8,31.25]);
}
if(type == "rj45-usb3_double" && rotation == 90) {
place(loc_x-6,loc_y-.25,loc_z,19.5,28,rotation,side)
cube([19.5,8,31.25]);
}
if(type == "rj45-usb3_double" && rotation == 180) {
place(loc_x+.25,loc_y+6,loc_z,19.5,28,rotation,side)
cube([19.5,8,31.25]);
}
if(type == "rj45-usb3_double" && rotation == 270) {
place(loc_x+6,loc_y-.25,loc_z,19.5,28,rotation,side)
cube([19.5,8,31.25]);
} }
// out-in-spdif opening // out-in-spdif opening
if(type == "out-in-spdif" && rotation == 0) { if(type == "out-in-spdif" && rotation == 0) {
place(loc_x,loc_y-2*(wallthick+gap)-adjust,loc_z,13,21.65,rotation,side) place(loc_x-.1,loc_y-6,loc_z,13,21.65,rotation,side)
cube([13,21.65,35.5]); cube([13,8,35.5]);
}
if(type == "out-in-spdif" && rotation == 90) {
place(loc_x-6,loc_y-.1,loc_z,13,21.65,rotation,side)
cube([13,8,35.5]);
}
if(type == "out-in-spdif" && rotation == 180) {
place(loc_x-.2,loc_y+6,loc_z,13,21.65,rotation,side)
cube([13,8,35.5]);
}
if(type == "out-in-spdif" && rotation == 270) {
place(loc_x+6,loc_y-.1,loc_z,13,21.65,rotation,side)
cube([13,8,35.5]);
} }
// dp-hdmi_a opening // dp-hdmi_a opening
if(type == "dp-hdmi_a" && rotation == 0) { if(type == "dp-hdmi_a" && rotation == 0) {
place(loc_x-.5,loc_y-2*(wallthick+gap)-adjust,loc_z,19,18,rotation,side) place(loc_x-.5,loc_y-6,loc_z,19,18,rotation,side)
cube([19,18,19]); cube([19,8,19.25]);
}
if(type == "dp-hdmi_a" && rotation == 90) {
place(loc_x-6,loc_y-.5,loc_z,19,18,rotation,side)
cube([19,8,19.25]);
}
if(type == "dp-hdmi_a" && rotation == 180) {
place(loc_x-.5,loc_y+6,loc_z,19,18,rotation,side)
cube([19,8,19.25]);
}
if(type == "dp-hdmi_a" && rotation == 270) {
place(loc_x+6,loc_y-.5,loc_z,19,18,rotation,side)
cube([19,8,19.25]);
} }
// sata_encl_power opening // sata_encl_power opening
if(type == "sata_encl_power" && rotation == 0) { if(type == "sata_encl_power" && rotation == 0) {
place(loc_x,loc_y,loc_z,38.5,7.5,rotation,side) place(loc_x,loc_y,loc_z,38.5,7.5,rotation,side)
translate([1,9.5+adjust,3]) rotate([90,0,0]) slot(7.5,38.5,wallthick+2*adjust); translate([1,14,3]) rotate([90,0,0]) slot(7.5,38.5,10);
}
if(type == "sata_encl_power" && rotation == 90) {
place(loc_x,loc_y,loc_z,38.5,7.5,rotation,side)
translate([-1,14,3]) rotate([90,0,0]) slot(7.5,38.5,10);
}
if(type == "sata_encl_power" && rotation == 180) {
place(loc_x,loc_y,loc_z,38.5,7.5,rotation,side)
translate([-1,8,3]) rotate([90,0,0]) slot(7.5,38.5,10);
}
if(type == "sata_encl_power" && rotation == 270) {
place(loc_x,loc_y,loc_z,38.5,7.5,rotation,side)
translate([1,8,3]) rotate([90,0,0]) slot(7.5,38.5,10);
} }
// audio jack opening // audio jack opening
if(type == "jack_3.5" && rotation == 0) {
place(loc_x,loc_y,loc_z,7.5,7.5,rotation,side)
union() {
translate([3.25,2,2]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([-.5,-.5,0]) cube([7.5,2.5,4.5]);
}
}
if(type == "jack_3.5" && rotation == 90) {
place(loc_x,loc_y,loc_z,7.5,7.5,rotation,side)
union() {
translate([4.1,2,2]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([.5,-.5,0]) cube([7.5,2.5,4.5]);
}
}
if(type == "jack_3.5" && rotation == 180) { if(type == "jack_3.5" && rotation == 180) {
place(loc_x,loc_y+wallthick+gap,loc_z,7.5,7.5,rotation,side) place(loc_x,loc_y,loc_z,7.5,7.5,rotation,side)
translate([4,0,2.25]) rotate([90,0,0]) cylinder(d=5, h=9); union() {
translate([4.1,-2.5,2]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([.5,-5,0]) cube([7.5,2.5,4.5]);
}
} }
if(type == "jack_3.5" && rotation == 270) { if(type == "jack_3.5" && rotation == 270) {
place(loc_x,loc_y+wallthick+gap,loc_z,5,5,rotation,side) place(loc_x,loc_y,loc_z,7.5,7.5,rotation,side)
translate([-.5,-6,2]) rotate([90,0,0]) cylinder(d=5, h=9); union() {
translate([3,-2.5,2]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([-.5,-5,0]) cube([7.5,2.5,4.5]);
}
} }
// button opening // button opening
if(type == "momentary_6x6x4") { if(type == "momentary_6x6x4") {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([3,3,5]) rotate([0,0,0]) cylinder(d=5, h=50); translate([3,3,4]) rotate([0,0,0]) cylinder(d=5, h=50);
}
if(type == "momentary_6x6x4_90" && rotation == 0) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
union() {
translate([3,-2.5,3]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([-.5,-3.75,0]) cube([7,2.5,6.5]);
}
}
if(type == "momentary_6x6x4_90" && rotation == 90) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
union() {
translate([3,-2.5,3]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([-.5,-3.75,0]) cube([7,2.5,6.5]);
}
}
if(type == "momentary_6x6x4_90" && rotation == 180) {
place(loc_x,loc_y,loc_z,6,6,rotation,side)
union() {
translate([3,-2.5,3]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([-.5,-3.75,0]) cube([7,2.5,6.5]);
}
} }
if(type == "momentary_6x6x4_90" && rotation == 270) { if(type == "momentary_6x6x4_90" && rotation == 270) {
place(loc_x,loc_y,loc_z,6,6,rotation,side) place(loc_x,loc_y,loc_z,6,6,rotation,side)
translate([3,-3,3]) rotate([90,0,0]) cylinder(d=5, h=10); union() {
translate([3,-2.5,3]) rotate([90,0,0]) cylinder(d=5, h=8);
translate([-.5,-3.75,0]) cube([7,2.5,6.5]);
}
} }
} }