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,21 +512,54 @@ echo(pcb_depth+case_offset_y-10);
|
|||||||
// bottom cover pattern
|
// bottom cover pattern
|
||||||
if(bottom_cover_pattern != "solid") {
|
if(bottom_cover_pattern != "solid") {
|
||||||
if(bottom_cover_pattern == "hex_5mm") {
|
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") {
|
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") {
|
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") {
|
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(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(c=[3:12:depth-8]) {
|
||||||
for(r=[4:12:width-8]) {
|
for(r=[4:12:width-8]) {
|
||||||
translate([r,c,-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
translate([r,c,-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,27 +207,39 @@ module case_side(case_design, side) {
|
|||||||
|
|
||||||
// front cover pattern
|
// front cover pattern
|
||||||
if(front_cover_pattern != "solid" && case_design == "panel_nas") {
|
if(front_cover_pattern != "solid" && case_design == "panel_nas") {
|
||||||
if(front_cover_pattern == "hex_5mm") {
|
if(front_cover_pattern == "hex_5mm" && hd_bays < 6) {
|
||||||
translate([-gap+4,depth-3*(wallthick)+gap,5])
|
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||||
vent_hex(width/3.85,(case_z-6)/6,wallthick+4,5,1.5,"vertical");
|
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") {
|
if(front_cover_pattern == "hex_8mm") {
|
||||||
translate([-gap+5,depth-3*(wallthick)+gap,5])
|
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") {
|
if(front_cover_pattern == "linear_vertical") {
|
||||||
translate([-gap+4,depth-3*(wallthick)+gap,5])
|
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||||
vent(wallthick,(case_z-2*(wallthick+gap)-20)/2,floorthick+4,1,2,(width-2*(wallthick+gap+sidethick))/4.2,"vertical");
|
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") {
|
if(front_cover_pattern == "linear_horizontal") {
|
||||||
translate([-gap+4,depth-3*(wallthick)+gap,5])
|
translate([-gap+4,depth-3*(wallthick)+gap,hd_z_position])
|
||||||
vent(width-2*(wallthick+gap+sidethick)-4,wallthick,floorthick+4,1,(case_z-2*(wallthick+gap)-10)/3,1,"vertical");
|
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") {
|
if(front_cover_pattern == "astroid") {
|
||||||
for(c=[3:12:depth-8]) {
|
for(c=[10:12:case_z-20]) {
|
||||||
for(r=[4:12:width-8]) {
|
for(r=[6:12:width-8]) {
|
||||||
translate([r,c,case_z-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
translate([r,depth-wallthick,c]) rotate([90,0,0])
|
||||||
|
linear_extrude(wallthick+5) import("./dxf/astroid_8mm.dxf");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -461,33 +461,57 @@ module case_top(case_design) {
|
|||||||
if(top_cover_pattern != "solid") {
|
if(top_cover_pattern != "solid") {
|
||||||
if(top_cover_pattern == "hex_5mm") {
|
if(top_cover_pattern == "hex_5mm") {
|
||||||
if(case_design == "panel_nas") {
|
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 {
|
else {
|
||||||
translate([1,0,case_z-(2*floorthick)]) vent_hex(width/3.75,depth/6,floorthick+4,5,1.5,"horizontal");
|
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") {
|
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 {
|
else {
|
||||||
translate([1,2,case_z-(2*floorthick)]) vent_hex(width/5.5,depth/9.5,floorthick+4,8,1.5,"horizontal");
|
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") {
|
if(top_cover_pattern == "linear_vertical") {
|
||||||
translate([0,-gap,case_z-(2*floorthick)])
|
if(case_design == "panel_nas") {
|
||||||
vent(wallthick,depth-2*wallthick-gap,floorthick+4,1,1,(width-2*wallthick-gap)/4,"horizontal");
|
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") {
|
if(top_cover_pattern == "linear_horizontal") {
|
||||||
translate([-gap,-gap,case_z-(2*floorthick)])
|
if(case_design == "panel_nas") {
|
||||||
vent(width-2*wallthick-gap,wallthick,floorthick+4,1,(depth-2*wallthick-gap)/3,1,"horizontal");
|
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") {
|
if(top_cover_pattern == "astroid") {
|
||||||
for(c=[3:12:depth-8]) {
|
if(case_design == "panel_nas") {
|
||||||
for(r=[4:12:width-8]) {
|
for(c=[12:12:depth-16]) {
|
||||||
translate([r,c,case_z-(2*floorthick)]) linear_extrude(floorthick+5) import("./dxf/astroid_8mm.dxf");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,4 +51,3 @@ include <./lib/oem_adafruit.scad>;
|
|||||||
include <./lib/oem_hk.scad>;
|
include <./lib/oem_hk.scad>;
|
||||||
include <./lib/oem_rpi.scad>;
|
include <./lib/oem_rpi.scad>;
|
||||||
include <./lib/standoff.scad>;
|
include <./lib/standoff.scad>;
|
||||||
include <./lib/vent.scad>;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user