From ba9832a972925631a4b27b2a2f6e3c9c69ef8215 Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Fri, 10 May 2024 20:27:11 -0400 Subject: [PATCH] added 25mm fan model and mask opens, more sbc model framework changes --- SBC_Model_Framework | 2 +- lib/fans.scad | 60 ++++++++++++----- sbc_case_builder.json | 153 ++++++++++++++++++++++++++++++++++++++++++ sbc_case_builder.scad | 6 +- 4 files changed, 202 insertions(+), 19 deletions(-) diff --git a/SBC_Model_Framework b/SBC_Model_Framework index 940e51b..cee2a4b 160000 --- a/SBC_Model_Framework +++ b/SBC_Model_Framework @@ -1 +1 @@ -Subproject commit 940e51b914f12470838e3771577697e85bdfaa47 +Subproject commit cee2a4be0febdcb207ee9e3d583259ea17ed5a2d diff --git a/lib/fans.scad b/lib/fans.scad index 6c0333e..263be7f 100644 --- a/lib/fans.scad +++ b/lib/fans.scad @@ -50,7 +50,8 @@ module fans(style, mask) { ["box60x10", 60, 10, 50, 4.3, 30, "#353535"], ["box50x10", 60, 10, 40, 4.3, 20, "#353535"], ["box40x10", 40, 10, 32, 4.3, 18, "#353535"], - ["box30x10", 30, 10, 24, 3.2, 12, "#353535"] + ["box30x10", 30, 10, 24, 3.2, 12, "#353535"], + ["box25x10", 25, 10, 20, 3, 12, "#353535"] ]; f = search([style],fan_data); @@ -144,7 +145,8 @@ module fan_cover(size, thick, style) { module fan_mask(size, thick, style) { - hole_pos = size == 30 ? 3 : + hole_pos = size == 25 ? 2.5 : + size == 30 ? 3 : size == 40 ? 4 : size == 50 || size == 60 || size == 70 ? 5 : size >= 80 ? 3.75 : 3.75; @@ -160,6 +162,34 @@ module fan_mask(size, thick, style) { translate([hole_pos, size-hole_pos, -1]) cylinder(h=thick+2, d=3); translate([hole_pos, hole_pos, -1]) cylinder(h=thick+2, d=3); } + if(style == "fan_1" && size == 25) { + + union() { + 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-11); + translate([size/2, size/2, -2]) cylinder(h=thick+4, d=size-17); + } + difference() { + translate([size/2, size/2, -1]) cylinder(h=thick+2, d=size-20); + translate([size/2, size/2, -2]) cylinder(h=thick+4, d=size-25); + } + // mount holes + translate([size-hole_pos, size-hole_pos, -1]) cylinder(h=thick+2, d=3); + translate([size-hole_pos, hole_pos, -1]) cylinder(h=thick+2, d=3); + translate([hole_pos, size-hole_pos, -1]) cylinder(h=thick+2, d=3); + translate([hole_pos, hole_pos, -1]) cylinder(h=thick+2, d=3); + } + translate([4, 3, -2]) rotate([0, 0, 45]) cube([size, 1.5, thick+4]); + translate([3, size-4, -2]) rotate([0, 0, -45]) cube([size, 1.5, thick+4]); + } + } + } if(style == "fan_1" && size == 30) { union() { @@ -306,7 +336,8 @@ module fan_mask(size, thick, style) { } if(style == "fan_2") { - inner = size == 30 ? 24 : + inner = size == 25 ? 20 : + size == 30 ? 24 : size == 40 ? 32 : size == 50 ? 40 : size == 60 ? 50 : @@ -330,27 +361,26 @@ module fan_mask(size, thick, style) { translate([-screw_offset, -screw_offset, (thick+2)/2]) cylinder(d=3, h=thick+2, center=true); 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); + 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); + } } } - } - - translate([0, 0, 11]) union() { - cylinder(d=bar_size*2+0.1, thick+2); // Add a circle to prevent any tiny holes around cross bar - rotate([0, 0, 45]) cube([size, bar_size, thick+4], center=true); - rotate([0, 0, 45]) cube([bar_size, size, thick+4], center=true); + cylinder(d=bar_size*3+0.1, thick+2); // Add a circle to prevent any tiny holes around cross bar + #translate([0,0,1+thick/2]) rotate([0, 0, 45]) cube([size, bar_size, thick+2], center=true); + #translate([0,0,1+thick/2]) rotate([0, 0, 45]) cube([bar_size, size, thick+2], center=true); } } } } if(style == "fan_hex") { - hex_pos = size == 30 ? [-11.75, -4.5, 0] : + hex_pos = size == 25 ? [-14.25, -7, 0] : + size == 30 ? [-11.75, -4.5, 0] : size == 40 ? [-14, -11.25, 0] : size == 50 ? [-16, -6.5, 0] : size == 60 ? [-11, -1.5, 0] : diff --git a/sbc_case_builder.json b/sbc_case_builder.json index 7dbc20c..5c9643a 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -6503,6 +6503,159 @@ "uart_opening": "default", "view": "model", "wallthick": "2" + }, + "star64_shell": { + "$fn": "90", + "access_panel_location": "[10, 15]", + "access_panel_orientation": "landscape", + "access_panel_rotation": "0", + "access_panel_size": "[70, 30]", + "accessory_highlight": "false", + "accessory_name": "none", + "adj": "0.01", + "bend_allowance": "1", + "bottom_access_panel_enable": "false", + "bottom_clearence": "3.5", + "bottom_cover_pattern": "solid", + "bottom_front_left_adjust": "0", + "bottom_front_left_enable": "true", + "bottom_front_left_support": "front", + "bottom_front_right_adjust": "0", + "bottom_front_right_enable": "true", + "bottom_front_right_support": "front", + "bottom_rear_left_adjust": "0", + "bottom_rear_left_enable": "true", + "bottom_rear_left_support": "rear", + "bottom_rear_right_adjust": "0", + "bottom_rear_right_enable": "true", + "bottom_rear_right_support": "rear", + "bottom_sidewall_support": "true", + "bottom_standoff_diameter": "5.75", + "bottom_standoff_hole_size": "3.4", + "bottom_standoff_insert": "false", + "bottom_standoff_insert_dia": "4.2", + "bottom_standoff_insert_height": "5.1", + "bottom_standoff_pillar": "hex", + "bottom_standoff_reverse": "false", + "bottom_standoff_size": "m3", + "bottom_standoff_support_height": "4", + "bottom_standoff_support_size": "13", + "bottom_standoff_type": "countersunk", + "case_design": "shell", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "cooling": "fan_1", + "corner_fillet": "3", + "edge_fillet": "0", + "ext_bottom_front_left_adjust": "0", + "ext_bottom_front_left_enable": "true", + "ext_bottom_front_left_support": "front", + "ext_bottom_front_right_adjust": "0", + "ext_bottom_front_right_enable": "true", + "ext_bottom_front_right_support": "front", + "ext_bottom_rear_left_adjust": "0", + "ext_bottom_rear_left_enable": "true", + "ext_bottom_rear_left_support": "rear", + "ext_bottom_rear_right_adjust": "0", + "ext_bottom_rear_right_enable": "true", + "ext_bottom_rear_right_support": "rear", + "ext_bottom_sidewall_support": "true", + "ext_bottom_standoff_diameter": "5.75", + "ext_bottom_standoff_hole_size": "3.4", + "ext_bottom_standoff_insert": "false", + "ext_bottom_standoff_insert_dia": "4.2", + "ext_bottom_standoff_insert_height": "5.1", + "ext_bottom_standoff_pillar": "hex", + "ext_bottom_standoff_reverse": "false", + "ext_bottom_standoff_size": "m3", + "ext_bottom_standoff_support_height": "4", + "ext_bottom_standoff_support_size": "10", + "ext_bottom_standoff_type": "countersunk", + "ext_bottom_standoffs": "false", + "ext_top_front_left_adjust": "0", + "ext_top_front_left_enable": "true", + "ext_top_front_left_support": "front", + "ext_top_front_right_adjust": "0", + "ext_top_front_right_enable": "true", + "ext_top_front_right_support": "front", + "ext_top_rear_left_adjust": "0", + "ext_top_rear_left_enable": "true", + "ext_top_rear_left_support": "rear", + "ext_top_rear_right_adjust": "0", + "ext_top_rear_right_enable": "true", + "ext_top_rear_right_support": "rear", + "ext_top_sidewall_support": "true", + "ext_top_standoff_diameter": "5.75", + "ext_top_standoff_hole_size": "2.75", + "ext_top_standoff_insert": "false", + "ext_top_standoff_insert_dia": "4.2", + "ext_top_standoff_insert_height": "5.1", + "ext_top_standoff_pillar": "hex", + "ext_top_standoff_reverse": "true", + "ext_top_standoff_size": "m3", + "ext_top_standoff_support_height": "4", + "ext_top_standoff_support_size": "10", + "ext_top_standoff_type": "blind", + "ext_top_standoffs": "false", + "fan_size": "25", + "flat_blank_section": "false", + "floorthick": "2", + "gap": "2", + "gpio_opening": "default", + "indents": "true", + "individual_part": "bottom", + "lower_bottom": "0", + "material_thickness": "0.5", + "move_front": "0", + "move_leftside": "0", + "move_rear": "0", + "move_rightside": "0", + "pcb_loc_x": "0", + "pcb_loc_y": "0", + "pcb_loc_z": "0", + "raise_top": "0", + "rear_io_shield": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_information": "false", + "sbc_model": "star64", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "2", + "standard_motherboard_thickness": "0", + "text_color": "Green", + "text_font": "Nimbus Mono PS", + "tol": "0.25", + "top_cover_pattern": "solid", + "top_front_left_adjust": "0", + "top_front_left_enable": "true", + "top_front_left_support": "front", + "top_front_right_adjust": "0", + "top_front_right_enable": "true", + "top_front_right_support": "front", + "top_rear_left_adjust": "0", + "top_rear_left_enable": "true", + "top_rear_left_support": "rear", + "top_rear_right_adjust": "0", + "top_rear_right_enable": "true", + "top_rear_right_support": "rear", + "top_sidewall_support": "true", + "top_standoff_diameter": "5.75", + "top_standoff_hole_size": "2.75", + "top_standoff_insert": "false", + "top_standoff_insert_dia": "4.2", + "top_standoff_insert_height": "5.1", + "top_standoff_pillar": "hex", + "top_standoff_reverse": "true", + "top_standoff_size": "custom", + "top_standoff_support_height": "4", + "top_standoff_support_size": "13", + "top_standoff_type": "blind", + "uart_opening": "default", + "view": "model", + "wallthick": "2" } }, "fileFormatVersion": "1" diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index 8643562..3279817 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -180,7 +180,7 @@ top_cover_pattern = "solid"; //[solid,hex_5mm,hex_8mm,linear_vertical,linear_hor bottom_cover_pattern = "solid"; //[solid,hex_5mm,hex_8mm,linear_vertical,linear_horizontal,astroid] // heatsink opening cooling = "default"; // [default,none,open,fan_open,fan_1,fan_2,fan_hex,vent,vent_hex_5mm,vent_hex_8mm,custom] -fan_size = 0; // [0,30,40,50,60,70,80,92] +fan_size = 0; // [0,25,30,40,50,60,70,80,92] /* [Bottom Access Panel] */ bottom_access_panel_enable = false; @@ -205,7 +205,7 @@ text_font = "Nimbus Mono PS"; // [Nimbus Mono PS, Liberation Mono, Noto Sans Mon /* [Extended Top Standoffs] */ // enable case extended standoffs -ext_top_standoffs = true; +ext_top_standoffs = false; ext_top_standoff_reverse = true; // enable wall support for extended standoffs ext_top_sidewall_support = true; @@ -239,7 +239,7 @@ ext_top_front_right_support = "front"; //[none,left,rear,front,right] /* [Extended Bottom Standoffs] */ // enable case bottom extended standoffs -ext_bottom_standoffs = true; +ext_bottom_standoffs = false; ext_bottom_standoff_reverse = false; // enable wall support for extended standoffs ext_bottom_sidewall_support = true;