diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index a07c1ad..6de1db0 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -982,7 +982,7 @@ accessory_data = [ "sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening ["rpi4b_shell_geeekpi_poe_hat", - "sub","fan",12,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,0,6,2,0,"",0], // sub fan opening + "sub","fan",12,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],30,0,6,3,0,"",0], // sub fan opening ["rpi4b_panel", "sub","fan",10,10,24.5,"top",[0,0,0],["sbc-case_z",true,true,true],40,0,6,2,0,"",0], // sub fan opening diff --git a/sbc_case_builder_library.scad b/sbc_case_builder_library.scad index 38a33ee..2f1bc3f 100644 --- a/sbc_case_builder_library.scad +++ b/sbc_case_builder_library.scad @@ -2413,7 +2413,81 @@ module fan_mask(size, thick, style) { translate ([4,size-4,-1]) cylinder(h=thick+2, d=3); translate ([4,4,-1]) cylinder(h=thick+2, d=3); } - if(style == 2) { + if(style == 2 && size == 40) { + difference() { + union () { + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-2); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-6); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-10); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-14); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-18); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-22); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-26); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-30); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-34); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-38); + } + // mount holes + translate ([size-4,size-4,-1]) cylinder(h=thick+2, d=3); + translate ([size-4,4,-1]) cylinder(h=thick+2, d=3); + translate ([4,size-4,-1]) cylinder(h=thick+2, d=3); + translate ([4,4,-1]) cylinder(h=thick+2, d=3); + } + translate([6.5,5,-2]) rotate([0,0,45]) cube([size,2,thick+4]); + translate([4.5,size-6,-2]) rotate([0,0,-45]) cube([size,2,thick+4]); + } + } + if(style == 2 && size >= 80) { + difference() { + union () { + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-2); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-8); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-14); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-20); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-26); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-32); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-38); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-44); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-50); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-56); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-62); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-68); + } + difference() { + translate ([size/2,size/2,-1]) cylinder(h=thick+2, d=size-74); + translate ([size/2,size/2,-2]) cylinder(h=thick+4, d=size-79); + } + // mount holes + translate ([size-4,size-4,-1]) cylinder(h=thick+2, d=3); + translate ([size-4,4,-1]) cylinder(h=thick+2, d=3); + translate ([4,size-4,-1]) cylinder(h=thick+2, d=3); + translate ([4,4,-1]) cylinder(h=thick+2, d=3); + } + translate([6.5,4.25,-2]) rotate([0,0,45]) cube([size*1.2,3,thick+4]); + translate([4.25,size-6.5,-2]) rotate([0,0,-45]) cube([size*1.2,3,thick+4]); + } + } + if(style == 3) { inner = size == 30 ? 24 : size == 40 ? 32 : size == 50 ? 40 : @@ -2440,10 +2514,10 @@ module fan_mask(size, thick, style) { difference() { union() { for(i=[inner:-rings_spacing:0]) { - difference() { - cylinder(d=base_ring_size - i, h=thick+2); - translate([0, 0, -1]) cylinder(d=base_ring_size - i - (rings_spacing/2), h=thick+4); - } + difference() { + cylinder(d=base_ring_size - i, h=thick+2); + translate([0, 0, -1]) cylinder(d=base_ring_size - i - (rings_spacing/2), h=thick+4); + } } } diff --git a/tests/fan_mask.scad b/tests/fan_mask.scad index 89bda28..1863183 100644 --- a/tests/fan_mask.scad +++ b/tests/fan_mask.scad @@ -3,40 +3,40 @@ use <../sbc_case_builder_library.scad>; linear_extrude(2) text("30mm", 5); // 30mm Mask Solid echo("30mm Mask Solid"); -translate([0, 10, 0]) fan_mask(30, 2, 2); +translate([0, 10, 0]) fan_mask(30, 2, 3); // 30mm Mask Punchout echo("30mm Mask Punchout"); translate([0, 50, 0]) difference() { cube([30, 30, 2]); - fan_mask(30, 2, 2); + fan_mask(30, 2, 3); } linear_extrude(2) translate([40, 0, 0]) text("40mm", 5); // 40mm Mask Solid echo("40mm Mask Solid"); translate([40, 10, 0]) - fan_mask(40, 2, 2); + fan_mask(40, 2, 3); // 40mm Mask Punchout echo("40mm Mask Punchout"); translate([40, 60, 0]) difference() { cube([40, 40, 2]); - fan_mask(40, 2, 2); + fan_mask(40, 2, 3); } linear_extrude(2) translate([90, 0, 0]) text("80mm", 5); // 80mm Mask Solid echo("80mm Mask Solid"); translate([90, 10, 0]) - fan_mask(80, 2, 2); + fan_mask(80, 2, 3); // 80mm Mask Punchout echo("80mm Mask Punchout"); translate([90, 100, 0]) difference() { cube([80, 80, 2]); - fan_mask(80, 2, 2); + fan_mask(80, 2, 3); } \ No newline at end of file