front, top and bottom cover vent adjustments
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
This file is part of SBC Case Builder https://github.com/hominoids/SBC_Case_Builder
|
||||
Copyright 2022,2023,2024 Edward A. Kisiel hominoid@cablemi.com
|
||||
|
||||
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
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
Code released under GPLv3: http://www.gnu.org/licenses/gpl.html
|
||||
|
||||
vent_panel_hex(x, y, thick, cell_size, cell_spacing, border, borders);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
NAME: vent_panel_hex
|
||||
DESCRIPTION: creates hex vent panel
|
||||
TODO: none
|
||||
|
||||
USAGE: vent_panel_hex(x, y, thick, cell_size=8, cell_spacing=3, border=3, borders="default")
|
||||
|
||||
x = #rows
|
||||
y = #columns
|
||||
thick = pattern thickness
|
||||
cell_size = size of hex
|
||||
cell_spacing = space between hex
|
||||
border = size of borber
|
||||
borders = "none", "default"
|
||||
|
||||
*/
|
||||
|
||||
module vent_panel_hex(x, y, thick, cell_size=8, cell_spacing=3, border=3, borders="default") {
|
||||
hole = 3.2;
|
||||
xb = (borders == "y" || borders == "none") ? cell_spacing : border;
|
||||
yb = (borders == "x" || borders == "none") ? cell_spacing : border;
|
||||
hxb = max(yb/2, cell_spacing + hole);
|
||||
hyb = max(xb/2, cell_spacing + hole);
|
||||
|
||||
cells_x = floor((2*(x-2*xb-cell_size)/(cell_size+cell_spacing))+1);
|
||||
cells_y = floor(((sqrt(12)*(y-2*yb)-4*cell_size)/(3*(cell_size+cell_spacing)))+1);
|
||||
csx = cell_size + (cells_x-1)*(cell_size+cell_spacing)/2;
|
||||
csy = sqrt(4/3)*cell_size + ((cell_size+cell_spacing)*sqrt(3/4)*(cells_y-1));
|
||||
|
||||
difference() {
|
||||
color("grey",1) slab([x,y,thick],2);
|
||||
color("grey",1) translate([(x-csx)/2,(y-csy)/2,-1])
|
||||
vent_hex(cells_x, cells_y, thick+3, cell_size, cell_spacing, "horizontal");
|
||||
if (borders != "none") {
|
||||
color("grey",1) translate([ hxb, hyb, -1]) cylinder(d=hole, h=thick+3);
|
||||
color("grey",1) translate([x - hxb, hyb, -1]) cylinder(d=hole, h=thick+3);
|
||||
color("grey",1) translate([ hxb, y - hyb, -1]) cylinder(d=hole, h=thick+3);
|
||||
color("grey",1) translate([x - hxb, y - hyb, -1]) cylinder(d=hole, h=thick+3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -512,23 +512,56 @@ echo(pcb_depth+case_offset_y-10);
|
||||
// bottom cover pattern
|
||||
if(bottom_cover_pattern != "solid") {
|
||||
if(bottom_cover_pattern == "hex_5mm") {
|
||||
translate([1,0,-floorthick]) vent_hex(width/3.75,depth/6,floorthick+4,5,1.5,"horizontal");
|
||||
if(case_design == "panel_nas") {
|
||||
translate([5,5,-floorthick]) vent_hex((width-10)/3.75,(depth-10)/7,floorthick+4,5,1.5,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([1,0,-floorthick]) vent_hex(width/3.75,depth/6,floorthick+4,5,1.5,"horizontal");
|
||||
}
|
||||
}
|
||||
if(bottom_cover_pattern == "hex_8mm") {
|
||||
translate([1,2,-floorthick]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
||||
if(case_design == "panel_nas") {
|
||||
translate([5,6,-floorthick]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([1,2,-floorthick]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
||||
}
|
||||
}
|
||||
if(bottom_cover_pattern == "linear_vertical") {
|
||||
#translate([0,-gap,-floorthick]) vent(wallthick,depth-2*wallthick-gap,floorthick+4,1,1,(width-2*wallthick-gap)/4,"horizontal");
|
||||
if(case_design == "panel_nas") {
|
||||
translate([6,5,-floorthick])
|
||||
vent(wallthick,depth-8*wallthick-gap,floorthick+4,1,1,(width-2*wallthick-gap)/4.5,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([0,-gap,-floorthick])
|
||||
vent(wallthick,depth-2*wallthick-gap,floorthick+4,1,1,(width-2*wallthick-gap)/4,"horizontal");
|
||||
}
|
||||
}
|
||||
if(bottom_cover_pattern == "linear_horizontal") {
|
||||
translate([-gap,-gap,-floorthick]) vent(width-2*wallthick-gap,wallthick,floorthick+4,1,(depth-2*wallthick-gap)/3,1,"horizontal");
|
||||
if(case_design == "panel_nas") {
|
||||
translate([6,5,-floorthick])
|
||||
vent(width-6*(sidethick+gap),wallthick,floorthick+4,1,(depth-2*wallthick-gap)/3.25,1,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([-gap,-gap,-floorthick])
|
||||
vent(width-2*(wallthick+gap),wallthick,floorthick+4,1,(depth-2*wallthick-gap)/3,1,"horizontal");
|
||||
}
|
||||
}
|
||||
if(bottom_cover_pattern == "astroid") {
|
||||
if(case_design == "panel_nas") {
|
||||
for(c=[12:12:depth-16]) {
|
||||
for(r=[12:12:width-16]) {
|
||||
translate([r,c,-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
for(c=[3:12:depth-8]) {
|
||||
for(r=[4:12:width-8]) {
|
||||
translate([r,c,-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// rear io shield opening for standard form motherboards
|
||||
|
||||
@@ -207,27 +207,39 @@ module case_side(case_design, side) {
|
||||
|
||||
// front cover pattern
|
||||
if(front_cover_pattern != "solid" && case_design == "panel_nas") {
|
||||
if(front_cover_pattern == "hex_5mm") {
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,5])
|
||||
vent_hex(width/3.85,(case_z-6)/6,wallthick+4,5,1.5,"vertical");
|
||||
if(front_cover_pattern == "hex_5mm" && hd_bays < 6) {
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||
vent_hex(width/3.85,hd_bays*(27.1+hd_space)/5.75,wallthick+4,5,1.5,"vertical");
|
||||
}
|
||||
if(front_cover_pattern == "hex_5mm" && hd_bays == 6) {
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||
vent_hex(width/3.85,hd_bays*(27.1+hd_space)/7,wallthick+4,5,1.5,"vertical");
|
||||
}
|
||||
if(front_cover_pattern == "hex_8mm") {
|
||||
translate([-gap+5,depth-3*(wallthick)+gap,5])
|
||||
vent_hex(width/5.5,(case_z-6)/9,floorthick+4,8,1.5,"vertical");
|
||||
vent_hex(width/5.5,(case_z-6)/10,floorthick+4,8,1.5,"vertical");
|
||||
}
|
||||
// vent(width, length, height, gap, rows, columns, orientation)
|
||||
if(front_cover_pattern == "linear_vertical") {
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,5])
|
||||
vent(wallthick,(case_z-2*(wallthick+gap)-20)/2,floorthick+4,1,2,(width-2*(wallthick+gap+sidethick))/4.2,"vertical");
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||
vent(wallthick,(case_z-2*(wallthick+gap)-20)/8,floorthick+4,1,1,
|
||||
(width-2*(wallthick+gap+sidethick))/4.2,"vertical");
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,case_z-(top_height+bottom_height+4*floorthick)])
|
||||
vent(wallthick,(case_z-2*(wallthick+gap)-20)/8,floorthick+4,1,1,
|
||||
(width-2*(wallthick+gap+sidethick))/4.2,"vertical");
|
||||
}
|
||||
if(front_cover_pattern == "linear_horizontal") {
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,5])
|
||||
vent(width-2*(wallthick+gap+sidethick)-4,wallthick,floorthick+4,1,(case_z-2*(wallthick+gap)-10)/3,1,"vertical");
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||
vent(width-2*(wallthick+gap+sidethick)-4,wallthick,floorthick+4,2,
|
||||
(case_z-2*(wallthick+gap)-20)/20,1,"vertical");
|
||||
translate([-gap+4,depth-3*(wallthick)+gap,case_z-(top_height+bottom_height+4*floorthick)-20])
|
||||
vent(width-2*(wallthick+gap+sidethick)-4,wallthick,floorthick+4,2,
|
||||
(case_z-2*(wallthick+gap)-20)/20,1,"vertical");
|
||||
}
|
||||
if(front_cover_pattern == "astroid") {
|
||||
for(c=[3:12:depth-8]) {
|
||||
for(r=[4:12:width-8]) {
|
||||
translate([r,c,case_z-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
for(c=[10:12:case_z-20]) {
|
||||
for(r=[6:12:width-8]) {
|
||||
translate([r,depth-wallthick,c]) rotate([90,0,0])
|
||||
linear_extrude(wallthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,35 +461,59 @@ module case_top(case_design) {
|
||||
if(top_cover_pattern != "solid") {
|
||||
if(top_cover_pattern == "hex_5mm") {
|
||||
if(case_design == "panel_nas") {
|
||||
translate([6,5,case_z-(2*floorthick)]) vent_hex((width-10)/3.75,(depth-10)/6,floorthick+4,5,1.5,"horizontal");
|
||||
translate([6,5,case_z-(2*floorthick)])
|
||||
vent_hex((width-10)/3.75,(depth-10)/7,floorthick+4,5,1.5,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([1,0,case_z-(2*floorthick)]) vent_hex(width/3.75,depth/6,floorthick+4,5,1.5,"horizontal");
|
||||
}
|
||||
}
|
||||
if(top_cover_pattern == "hex_8mm") {
|
||||
|
||||
if(top_cover_pattern == "hex_8mm") {
|
||||
if(case_design == "panel_nas") {
|
||||
translate([2,5,case_z-(2*floorthick)]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
||||
translate([5,6,case_z-(2*floorthick)]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([1,2,case_z-(2*floorthick)]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
||||
}
|
||||
}
|
||||
if(top_cover_pattern == "linear_vertical") {
|
||||
translate([0,-gap,case_z-(2*floorthick)])
|
||||
vent(wallthick,depth-2*wallthick-gap,floorthick+4,1,1,(width-2*wallthick-gap)/4,"horizontal");
|
||||
if(case_design == "panel_nas") {
|
||||
translate([wallthick+gap,wallthick,case_z-(2*floorthick)])
|
||||
vent(wallthick,depth-6*wallthick-gap,floorthick+4,1,1,(width-2*(sidethick+gap))/4.25,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([0,-gap,case_z-(2*floorthick)])
|
||||
vent(wallthick,depth-2*wallthick-gap,floorthick+4,1,1,(width-2*wallthick-gap)/4,"horizontal");
|
||||
}
|
||||
}
|
||||
if(top_cover_pattern == "linear_horizontal") {
|
||||
translate([-gap,-gap,case_z-(2*floorthick)])
|
||||
vent(width-2*wallthick-gap,wallthick,floorthick+4,1,(depth-2*wallthick-gap)/3,1,"horizontal");
|
||||
if(case_design == "panel_nas") {
|
||||
translate([wallthick+gap,wallthick,case_z-(2*floorthick)])
|
||||
vent((width-4*(sidethick+gap)),wallthick,floorthick+4,1,
|
||||
(depth-2*(wallthick-gap))/3.25,1,"horizontal");
|
||||
}
|
||||
else {
|
||||
translate([-gap,-gap,case_z-(2*floorthick)])
|
||||
vent(width-2*wallthick-gap,wallthick,floorthick+4,1,(depth-2*wallthick-gap)/3,1,"horizontal");
|
||||
}
|
||||
}
|
||||
if(top_cover_pattern == "astroid") {
|
||||
for(c=[3:12:depth-8]) {
|
||||
for(r=[4:12:width-8]) {
|
||||
translate([r,c,case_z-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
if(case_design == "panel_nas") {
|
||||
for(c=[12:12:depth-16]) {
|
||||
for(r=[12:12:width-16]) {
|
||||
translate([r,c,case_z-(2*floorthick)-adj])
|
||||
linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
for(c=[3:12:depth-8]) {
|
||||
for(r=[4:12:width-8]) {
|
||||
translate([r,c,case_z-(2*floorthick)-adj])
|
||||
linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// rear io shield opening for standard form motherboards
|
||||
|
||||
@@ -51,4 +51,3 @@ include <./lib/oem_adafruit.scad>;
|
||||
include <./lib/oem_hk.scad>;
|
||||
include <./lib/oem_rpi.scad>;
|
||||
include <./lib/standoff.scad>;
|
||||
include <./lib/vent.scad>;
|
||||
|
||||
Reference in New Issue
Block a user