diff --git a/lib/vent.scad b/lib/vent.scad deleted file mode 100644 index 906d43a..0000000 --- a/lib/vent.scad +++ /dev/null @@ -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 - 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); - } - } -} \ No newline at end of file diff --git a/mod/case_bottom.scad b/mod/case_bottom.scad index 44f940e..d78c4d5 100644 --- a/mod/case_bottom.scad +++ b/mod/case_bottom.scad @@ -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 diff --git a/mod/case_side.scad b/mod/case_side.scad index 8851249..057cea8 100644 --- a/mod/case_side.scad +++ b/mod/case_side.scad @@ -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"); } } } diff --git a/mod/case_top.scad b/mod/case_top.scad index 25849de..94aa531 100644 --- a/mod/case_top.scad +++ b/mod/case_top.scad @@ -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 diff --git a/sbc_case_builder_library.scad b/sbc_case_builder_library.scad index 34e9cef..dc89dcb 100644 --- a/sbc_case_builder_library.scad +++ b/sbc_case_builder_library.scad @@ -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>;