From cd2e77acc9244306c891f1ffe1d4505d236a8069 Mon Sep 17 00:00:00 2001 From: Edward Kisiel Date: Sun, 6 Apr 2025 12:40:01 -0400 Subject: [PATCH] new case panel_nas initial work --- lib/hd.scad | 2 +- mod/case_bottom.scad | 14 +++ mod/case_side.scad | 100 +++++++++++++++ mod/case_top.scad | 42 +++++-- sbc_case_builder.json | 205 +++++++++++++++++++++++++++++++ sbc_case_builder.scad | 36 +++++- sbc_case_builder_accessories.cfg | 3 + 7 files changed, 389 insertions(+), 13 deletions(-) diff --git a/lib/hd.scad b/lib/hd.scad index bdd0a98..96cce3e 100644 --- a/lib/hd.scad +++ b/lib/hd.scad @@ -614,7 +614,7 @@ module hd35_vtab(side) { DESCRIPTION: creates 2.5" and 3.5" hard drive hole mask for mounting TODO: none - USAGE: hd_bottom_holes(hd, orientation, side, thick) + USAGE: hd_holes(hd, orientation, side, thick) hd = 2.5, 3.5 orientation = "portrait", "landscape" diff --git a/mod/case_bottom.scad b/mod/case_bottom.scad index 097ab6c..fb2b5bc 100644 --- a/mod/case_bottom.scad +++ b/mod/case_bottom.scad @@ -62,6 +62,20 @@ module case_bottom(case_design) { cube([8,wallthick+2*adj,floorthick]); } } + if(case_design == "panel_nas") { + union() { + translate([-gap,-gap,0]) + cube([width-(2*wallthick)+(101.6-width+(2*wallthick)),depth-(2*wallthick),floorthick]); + translate([(width*(1/5))-8-(wallthick+gap),depth-(2*wallthick)-gap-adj,0]) + cube([8,wallthick+2*adj,floorthick]); + translate([width-(width*(1/5))-(wallthick+gap),depth-(2*wallthick)-gap-adj,0]) + cube([8,wallthick+2*adj,floorthick]); + translate([(width*(1/5))-8-(wallthick+gap),-wallthick-gap+adj,0]) + cube([8,wallthick+2*adj,floorthick]); + translate([width-(width*(1/5))-(wallthick+gap),-wallthick-gap+adj,0]) + cube([8,wallthick+2*adj,floorthick]); + } + } if(case_design == "stacked") { translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,floorthick/2]) cube_fillet_inside([width-(2*wallthick),depth-(2*wallthick),floorthick], diff --git a/mod/case_side.scad b/mod/case_side.scad index 71256cf..4c2d87c 100644 --- a/mod/case_side.scad +++ b/mod/case_side.scad @@ -128,6 +128,106 @@ module case_side(case_design, side) { } } } + if(case_design == "panel_nas") { + if(side == "rear") { + difference() { + union() { + translate([-gap,-wallthick-gap,-floorthick]) + cube([width-2*wallthick+(101.6-width+(2*(wallthick+gap))),wallthick,case_z+2*floorthick]); + // right hook + difference() { + translate([width-(2*wallthick)-gap-adj,-wallthick-gap, + ((case_z)/2)-4]) + cube([(2*wallthick)+.5,wallthick,8]); + translate([width-(2*wallthick)-gap-adj,-wallthick-gap-adj, + ((case_z)/2)-4-adj]) + cube([wallthick+.25,wallthick+(2*adj),4.25]); + } + // left hook + difference() { + translate([-(2*wallthick)-gap-adj-.25,-wallthick-gap, + ((case_z)/2)-4]) + cube([(2*wallthick)+.5,wallthick,8]); + translate([-wallthick-gap-adj-.25,-wallthick-gap-adj, + ((case_z)/2)-4-adj]) + cube([wallthick+.25,wallthick+(2*adj),4.25]); + } + } + // top slots + translate([(width*(1/5))-8.25-(wallthick+gap),-wallthick-gap-adj, + case_z-floorthick-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + translate([width-(width*(1/5))-(wallthick+gap)-.25,-wallthick-gap-adj, + case_z-floorthick-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + // bottom slots + translate([(width*(1/5))-8.25-(wallthick+gap),-wallthick-gap-adj,-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + translate([width-(width*(1/5))-(wallthick+gap)-.25,-wallthick-gap-adj,-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + } + } + if(side == "front") { + difference() { + union() { + translate([-gap,depth-2*(wallthick)-gap,-floorthick]) + cube([width-2*wallthick+(101.6-width+(2*(wallthick+gap))),wallthick,case_z+2*floorthick]); + // right hook + difference() { + translate([width-(2*wallthick)-gap-adj,depth-2*(wallthick)-gap-adj, + ((case_z)/2)-4]) + cube([(2*wallthick)+.5,wallthick,8]); + translate([width-(2*wallthick)-gap-adj, + depth-2*(wallthick)-adj-gap-adj,((case_z)/2)-4-adj]) + cube([wallthick+.25,wallthick+(2*adj),4.25]); + } + // left hook + difference() { + translate([-(2*wallthick)-gap-adj-.25,depth-2*(wallthick)-gap-adj,( + (case_z)/2)-4]) + cube([(2*wallthick)+.5,wallthick,8]); + translate([-wallthick-gap-adj-.25,depth-2*(wallthick)-adj-gap-adj, + ((case_z)/2)-4-adj]) + cube([wallthick+.25,wallthick+(2*adj),4.25]); + } + } + // top slots + translate([(width*(1/5))-8.25-(wallthick+gap),depth-2*wallthick-gap-adj, + case_z-floorthick-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + translate([width-(width*(1/5))-(wallthick+gap)-.25,depth-2*wallthick-gap-adj, + case_z-floorthick-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + // bottom slots + translate([(width*(1/5))-8.25-(wallthick+gap),depth-2*wallthick-gap-adj,-.25]) + cube([8.5,wallthick+2*adj,floorthick+.5]); + translate([width-(width*(1/5))-(wallthick+gap)-.25, + depth-2*wallthick-gap-adj,-.25]) cube([8.5,wallthick+2*adj,floorthick+.5]); + } + } + if(side == "right") { + difference() { + translate([width-(2*wallthick)-gap+(101.6-width+(2*wallthick)),-(2*wallthick)-gap,-wallthick]) + cube([wallthick,depth+2*wallthick,case_z+(2*wallthick)]); + translate([width-(2*wallthick)-gap-adj,-wallthick-gap-.25, + ((case_z)/2)]) cube([wallthick+2*adj,wallthick+.5,8.5]); + translate([width-(2*wallthick)-gap-adj,depth-2*(wallthick)-gap-.25, + ((case_z)/2)]) + cube([wallthick+2*adj,wallthick+.5,8.5]); + } + } + if(side == "left") { + difference() { + translate([-wallthick-gap,-(2*wallthick)-gap,-wallthick]) + cube([wallthick,depth+2*wallthick,case_z+(2*wallthick)]); + translate([-wallthick-gap-adj,-wallthick-gap-.25,((case_z)/2)]) + cube([wallthick+2*adj,wallthick+.5,8.5]); + translate([-wallthick-gap-adj,depth-2*(wallthick)-gap-.25, + ((case_z)/2)]) + cube([wallthick+2*adj,wallthick+.5,8.5]); + } + } + } if(case_design == "tray_sides") { if(side == "right") { difference() { diff --git a/mod/case_top.scad b/mod/case_top.scad index e0d4d6c..e5690e4 100644 --- a/mod/case_top.scad +++ b/mod/case_top.scad @@ -70,6 +70,24 @@ module case_top(case_design) { cube([8,wallthick+2*adj,floorthick]); } } + if(case_design == "panel_nas") { + union() { + translate([-gap,-gap,case_z-floorthick]) + cube([width-(2*wallthick)+(101.6-width+(2*wallthick)),depth-(2*wallthick),floorthick]); + translate([(width*(1/5))-8-(wallthick+gap),depth-(2*wallthick)-gap-adj, + case_z-floorthick]) + cube([8,wallthick+2*adj,floorthick]); + translate([width-(width*(1/5))-(wallthick+gap),depth-(2*wallthick)-gap-adj, + case_z-floorthick]) + cube([8,wallthick+2*adj,floorthick]); + translate([(width*(1/5))-8-(wallthick+gap),-wallthick-gap+adj, + case_z-floorthick]) + cube([8,wallthick+2*adj,floorthick]); + translate([width-(width*(1/5))-(wallthick+gap),-wallthick-gap+adj, + case_z-floorthick]) + cube([8,wallthick+2*adj,floorthick]); + } + } if(case_design == "stacked") { translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap, case_z-(floorthick/2)]) @@ -316,19 +334,23 @@ module case_top(case_design) { if (class == "pcbhole" && id == 0 && pcbhole_pos == "left_rear" && top_rear_left_enable == true && top_standoff[6] != "blind") { - translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); + translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) + cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); } if (class == "pcbhole" && id == 0 && pcbhole_pos == "left_front" && top_front_left_enable == true && top_standoff[6] != "blind") { - translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); + translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) + cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); } if (class == "pcbhole" && id == 0 && pcbhole_pos == "right_rear" && top_rear_right_enable == true && top_standoff[6] != "blind") { - translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); + translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) + cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); } if (class == "pcbhole" && id == 0 && pcbhole_pos == "right_front" && top_front_right_enable == true && top_standoff[6] != "blind") { - translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); + translate([pcbhole_x,pcbhole_y,case_z-(floorthick+adj)]) + cylinder(d=top_standoff[4]-.2, h=floorthick+(2*adj)); } } } @@ -800,10 +822,12 @@ module case_top(case_design) { // create openings for additive if((class == "add1" || class == "add2" || class == "model") && mask[0] == true) { if(accessory_highlight == false) { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,[size_x,size_y,size_z],data,mask); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation, + parametric,[size_x,size_y,size_z],data,mask); } else { - #parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,[size_x,size_y,size_z],data,mask); + #parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation, + parametric,[size_x,size_y,size_z],data,mask); } } } @@ -837,7 +861,8 @@ module case_top(case_design) { side = sbc_data[s[0]][i+7]; rotation = sbc_data[s[0]][i+8]; if(id == pcbid) { - indent(loc_x, loc_y, bottom_height+loc_z-adj, rotation[2], side, class, type, wallthick, gap, floorthick, pcb_z); + indent(loc_x, loc_y, bottom_height+loc_z-adj, rotation[2], + side, class, type, wallthick, gap, floorthick, pcb_z); } } } @@ -869,7 +894,8 @@ module case_top(case_design) { mask = accessory_data[a[0]][i+10]; if (class == "add2" && face == "top") { - parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation,parametric,size,data,[false,mask[1],mask[2],mask[3]]); + parametric_move_add(type,loc_x,loc_y,loc_z,face,rotation, + parametric,size,data,[false,mask[1],mask[2],mask[3]]); } } } diff --git a/sbc_case_builder.json b/sbc_case_builder.json index f9463ab..c439de2 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -9583,6 +9583,211 @@ "uart_opening": "default", "view": "model", "wallthick": "2" + }, + "m2_panel_nas": { + "$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": "nas", + "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": "false", + "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": "10", + "bottom_standoff_type": "countersunk", + "case_design": "panel_nas", + "case_offset_bz": "0", + "case_offset_tz": "171", + "case_offset_x": "0", + "case_offset_y": "138", + "cooling": "default", + "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": "0", + "flat_blank_section": "false", + "floorthick": "2", + "gap": "1", + "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", + "multipcb_bottom_front_left_adjust": "0", + "multipcb_bottom_front_left_enable": "true", + "multipcb_bottom_front_left_support": "front", + "multipcb_bottom_front_right_adjust": "0", + "multipcb_bottom_front_right_enable": "true", + "multipcb_bottom_front_right_support": "front", + "multipcb_bottom_rear_left_adjust": "0", + "multipcb_bottom_rear_left_enable": "true", + "multipcb_bottom_rear_left_support": "rear", + "multipcb_bottom_rear_right_adjust": "0", + "multipcb_bottom_rear_right_enable": "true", + "multipcb_bottom_rear_right_support": "rear", + "multipcb_bottom_sidewall_support": "false", + "multipcb_bottom_standoff_diameter": "5.75", + "multipcb_bottom_standoff_hole_size": "3.4", + "multipcb_bottom_standoff_insert": "false", + "multipcb_bottom_standoff_insert_dia": "4.2", + "multipcb_bottom_standoff_insert_height": "5.1", + "multipcb_bottom_standoff_pillar": "hex", + "multipcb_bottom_standoff_reverse": "false", + "multipcb_bottom_standoff_size": "m2.5", + "multipcb_bottom_standoff_support_height": "4", + "multipcb_bottom_standoff_support_size": "7", + "multipcb_bottom_standoff_type": "countersunk", + "multipcb_bottom_standoffs": "false", + "multipcb_top_front_left_adjust": "0", + "multipcb_top_front_left_enable": "true", + "multipcb_top_front_left_support": "front", + "multipcb_top_front_right_adjust": "0", + "multipcb_top_front_right_enable": "true", + "multipcb_top_front_right_support": "front", + "multipcb_top_rear_left_adjust": "0", + "multipcb_top_rear_left_enable": "true", + "multipcb_top_rear_left_support": "rear", + "multipcb_top_rear_right_adjust": "0", + "multipcb_top_rear_right_enable": "true", + "multipcb_top_rear_right_support": "rear", + "multipcb_top_sidewall_support": "false", + "multipcb_top_standoff_diameter": "5.75", + "multipcb_top_standoff_hole_size": "2.75", + "multipcb_top_standoff_insert": "false", + "multipcb_top_standoff_insert_dia": "4.2", + "multipcb_top_standoff_insert_height": "5.1", + "multipcb_top_standoff_pillar": "hex", + "multipcb_top_standoff_reverse": "true", + "multipcb_top_standoff_size": "m2.5", + "multipcb_top_standoff_support_height": "4", + "multipcb_top_standoff_support_size": "7", + "multipcb_top_standoff_type": "blind", + "multipcb_top_standoffs": "false", + "nas_bays": "2", + "nas_sbc_location": "top", + "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": "m2", + "sbc_off": "false", + "sbc_top_standoffs": "false", + "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": "false", + "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": "m3", + "top_standoff_support_height": "4", + "top_standoff_support_size": "10", + "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 fadce3e..d22aaae 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -40,7 +40,7 @@ sbc_highlight = false; // enable highlight for accessory subtractive geometry accessory_highlight = false; // base case design -case_design = "shell"; // [shell,panel,stacked,tray,tray_sides,tray_vu5,tray_vu7,round,hex,snap,fitted,paper_split-top,paper_full-top,adapter_ssi-eeb,adapter_ssi-ceb,adapter_atx,adapter_micro-atx,adapter_dtx,adapter_flex-atx,adapter_mini-dtx,adapter_mini-itx,adapter_mini-itx_thin,adapter_mini-stx,adapter_mini-stx_thin] +case_design = "shell"; // [shell,panel,panel_nas,stacked,tray,tray_sides,tray_vu5,tray_vu7,round,hex,snap,fitted,paper_split-top,paper_full-top,adapter_ssi-eeb,adapter_ssi-ceb,adapter_atx,adapter_micro-atx,adapter_dtx,adapter_flex-atx,adapter_mini-dtx,adapter_mini-itx,adapter_mini-itx_thin,adapter_mini-stx,adapter_mini-stx_thin] // raises top mm in model view or < 0 = off raise_top = 0; // [-1:100] @@ -83,9 +83,9 @@ case_offset_x = 0; //[0:.01:300] // additional y axis case size case_offset_y = 0; //[0:.01:300] // additional z axis case top size -case_offset_tz = 0; //[-10:.01:100] +case_offset_tz = 0; //[-10:.01:300] // additional z axis case bottom size -case_offset_bz = 0; //[0:.01:100] +case_offset_bz = 0; //[0:.01:300] // case wall thickness wallthick = 2; //[1:.01:5] // case floor thickness @@ -124,8 +124,12 @@ gpio_opening = "default"; // [default,none,open,block,knockout,vent] uart_opening = "default"; // [default,none,open,knockout] // enable indentations around io openings indents = true; +// nas sbc location +nas_sbc_location = "top"; // ["top","bottom"] +// number of nas bays +nas_bays = 2; // [0:5] // case accessory group to load -accessory_name = "none"; // ["none", "hk_uart", "c4_shell_boombox", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_panel_lcd3.5", "c4_tray_boombox", "c4_round", "c4_hex", "xu4_shifter_shield", "xu4_keyhole", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "hc4_tray_drivebox2.5", "m2_shell", "m2_eyespi_eink1.54", "m2_eyespi_lcd2.8", "m1s_shell_nvme", "m1s_shell_ups", "m1s_tray_nvme", "m1_tray_ssd", "m1_fitted_pizzabox2.5", "m1_fitted_pizzabox3.5", "h3_shell", "h3_shell_router", "h3_lowboy", "h3_lowboy_router", "h3_ultimate", "h3_ultimate2", "show2_shell", "rpi5_m2hat", "rock5b", "adapter_mini-stx_m1s", "cs_solarmeter", "n2l_env_sensors", "avr_env_sensors", "adafruit_solar_charger"] +accessory_name = "none"; // ["none", "hk_uart", "nas", "c4_shell_boombox", "c4_desktop_lcd3.5", "c4_deskboom_lcd3.5", "c4_panel_boombox", "c4_panel_lcd3.5", "c4_tray_boombox", "c4_round", "c4_hex", "xu4_shifter_shield", "xu4_keyhole", "hc4_shell_drivebox2.5", "hc4_shell_drivebox2.5v", "hc4_shell_drivebox3.5", "hc4_tray_drivebox2.5", "m2_shell", "m2_eyespi_eink1.54", "m2_eyespi_lcd2.8", "m1s_shell_nvme", "m1s_shell_ups", "m1s_tray_nvme", "m1_tray_ssd", "m1_fitted_pizzabox2.5", "m1_fitted_pizzabox3.5", "h3_shell", "h3_shell_router", "h3_lowboy", "h3_lowboy_router", "h3_ultimate", "h3_ultimate2", "show2_shell", "rpi5_m2hat", "rock5b", "adapter_mini-stx_m1s", "cs_solarmeter", "n2l_env_sensors", "avr_env_sensors", "adafruit_solar_charger"] // sbc information text color text_color = "Green"; // [Green, Black, Dimgrey, White, Yellow, Orange, Red, DarkbBlue] // sbc information text font @@ -634,6 +638,30 @@ if (view == "model") { sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, false); } } + if(case_design == "panel_nas") { + if(lower_bottom >= 0) { + color("dimgrey",1) translate([0,0,-lower_bottom]) case_bottom(case_design); + } + if(raise_top >= 0) { + color("grey",1) translate([0,0,raise_top])case_top(case_design); + } + if(move_front >= 0) { + color("grey",1) translate([0,move_front,0]) case_side(case_design,"front"); + } + if(move_rear >= 0) { + color("grey",1) translate([0,-move_rear,0]) case_side(case_design,"rear"); + } + if(move_rightside >= 0) { + color("grey",1) translate([move_rightside,0,0]) case_side(case_design,"right"); + } + if(move_leftside >= 0) { + color("grey",1) translate([-move_leftside,0,0]) case_side(case_design,"left"); + } + if(sbc_off == false) { + translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z]) + sbc(sbc_model, cooling, fan_size, gpio_opening, uart_opening, false); + } + } if(case_design == "stacked") { if(lower_bottom >= 0) { color("grey",1) translate([0,0,-lower_bottom]) case_bottom(case_design); diff --git a/sbc_case_builder_accessories.cfg b/sbc_case_builder_accessories.cfg index 0addf09..0d4ca1e 100644 --- a/sbc_case_builder_accessories.cfg +++ b/sbc_case_builder_accessories.cfg @@ -491,6 +491,9 @@ accessory_data = [ "add2","standoff",113,125,0,"bottom",[0,0,0],["sbc",false,false,false],[0,0,0],[["custom",5.75,5,3.6,10,4,"countersunk","hex",false,false,4.5,5.1]],[true,10,2,"default"], "model","hk_m1s_ups",2,97,5,"bottom",[0,0,0],["sbc",false,false,false],[0,0,0],[0],[true,110,2,"default"]], + // NAS Case + ["nas", + "model","hd35",-1,-67,200,"bottom",[0,0,0],["case",true,true,false],[0,0,0],["portrait"],[true,20,2,"both"]], // circuitsetup solar energy meter ["cs_solarmeter",