diff --git a/lib/standoff.scad b/lib/standoff.scad index 78c5bd5..bdb724a 100644 --- a/lib/standoff.scad +++ b/lib/standoff.scad @@ -21,14 +21,15 @@ USAGE: standoff(stand_off) - stand_off[radius, height, supportsize, supportheight, sink, style, reverse, insert_e, i_dia, i_depth]) + stand_off[radius, height, supportsize, supportheight, sink, pillarstyle, pillarsupport, reverse, insert_e, i_dia, i_depth]) radius = pillar radius height = total height holesize = hole diameter supportsize = support size for sink - supportheight = height of support + supportheight = height of support for sink sink = none, countersunk, recessed, nut holder, blind - style = hex, round style of pillar + pillarstyle = hex, round style of pillar + pillarsupport = left, rear, front, right reverse = true or false insert_e = true or false i_dia = insert diameter @@ -44,26 +45,27 @@ module standoff(stand_off){ supportsize = stand_off[3]; supportheight = stand_off[4]; sink = stand_off[5]; - style = stand_off[6]; - reverse = stand_off[7]; - insert_e = stand_off[8]; - i_dia = stand_off[9]; - i_depth = stand_off[10]; + pillarstyle = stand_off[6]; + pillarsupport = stand_off[7]; + reverse = stand_off[8]; + insert_e = stand_off[9]; + i_dia = stand_off[10]; + i_depth = stand_off[11]; adj = 0.1; difference (){ union () { - if(style != "none" && reverse == false) { + if(pillarstyle == "hex" && reverse == false) { rotate([0,0,30]) cylinder(d=radius*2/sqrt(3),h=height,$fn=6); } - if(style != "none" && reverse == true) { + if(pillarstyle == "hex" && reverse == true) { translate([0,0,-height]) rotate([0,0,30]) cylinder(d=radius*2/sqrt(3),h=height,$fn=6); } - if(style == "countersunk" && reverse == false) { + if(pillarstyle == "round" && reverse == false) { cylinder(d=radius,h=height,$fn=90); } - if(style == "countersunk" && reverse == true) { + if(pillarstyle == "round" && reverse == true) { translate([0,0,-height]) cylinder(d=radius,h=height,$fn=90); } if(reverse == true) { @@ -89,10 +91,10 @@ module standoff(stand_off){ } // recessed hole if(sink == "recessed" && reverse == false) { - translate([0,0,-adj]) cylinder(d=6.5, h=3); + translate([0,0,-adj]) cylinder(d=6.5, h=supportheight-2); } if(sink == "recessed" && reverse == true) { - translate([0,0,+adj-3]) cylinder(d=6.5, h=3); + translate([0,0,+adj-supportheight+2]) cylinder(d=6.5, h=supportheight-2); } // nut holder if(sink == "nut holder" && reverse == false) { diff --git a/mod/case_bottom.scad b/mod/case_bottom.scad index d5b06ce..b3f3c99 100644 --- a/mod/case_bottom.scad +++ b/mod/case_bottom.scad @@ -395,10 +395,11 @@ module case_bottom(case_design) { bottom_standoff[4], bottom_standoff[5], bottom_standoff[6], - bottom_standoff[7], + bottom_rear_left_support, bottom_standoff[8], bottom_standoff[9], - bottom_standoff[10]]; + bottom_standoff[10], + bottom_standoff[11]]; translate([pcbhole_x,pcbhole_y,0]) standoff(normal_standoff); } if (pcbhole_pos == "left_front") { @@ -409,10 +410,11 @@ module case_bottom(case_design) { bottom_standoff[4], bottom_standoff[5], bottom_standoff[6], - bottom_standoff[7], + bottom_front_left_support, bottom_standoff[8], bottom_standoff[9], - bottom_standoff[10]]; + bottom_standoff[10], + bottom_standoff[11]]; translate([pcbhole_x,pcbhole_y,0]) standoff(normal_standoff); } if (pcbhole_pos == "right_rear") { @@ -423,10 +425,11 @@ module case_bottom(case_design) { bottom_standoff[4], bottom_standoff[5], bottom_standoff[6], - bottom_standoff[7], + bottom_rear_right_support, bottom_standoff[8], bottom_standoff[9], - bottom_standoff[10]]; + bottom_standoff[10], + bottom_standoff[11]]; translate([pcbhole_x,pcbhole_y,0]) standoff(normal_standoff); } if (pcbhole_pos == "right_front") { @@ -437,10 +440,11 @@ module case_bottom(case_design) { bottom_standoff[4], bottom_standoff[5], bottom_standoff[6], - bottom_standoff[7], + bottom_front_right_support, bottom_standoff[8], bottom_standoff[9], - bottom_standoff[10]]; + bottom_standoff[10], + bottom_standoff[11]]; translate([pcbhole_x,pcbhole_y,0]) standoff(normal_standoff); } } diff --git a/mod/case_top.scad b/mod/case_top.scad index 35cb35b..be1d52b 100644 --- a/mod/case_top.scad +++ b/mod/case_top.scad @@ -335,10 +335,11 @@ module case_top(case_design) { top_standoff[4], top_standoff[5], top_standoff[6], - top_standoff[7], + top_rear_left_support, top_standoff[8], top_standoff[9], - top_standoff[10]]; + top_standoff[10], + top_standoff[11]]; translate([pcbhole_x,pcbhole_y,case_z]) standoff(normal_standoff); } if (pcbhole_pos == "left_front") { @@ -349,10 +350,11 @@ module case_top(case_design) { top_standoff[4], top_standoff[5], top_standoff[6], - top_standoff[7], + top_front_left_support, top_standoff[8], top_standoff[9], - top_standoff[10]]; + top_standoff[10], + top_standoff[11]]; translate([pcbhole_x,pcbhole_y,case_z]) standoff(normal_standoff); } if (pcbhole_pos == "right_rear") { @@ -363,10 +365,11 @@ module case_top(case_design) { top_standoff[4], top_standoff[5], top_standoff[6], - top_standoff[7], + top_rear_right_support, top_standoff[8], top_standoff[9], - top_standoff[10]]; + top_standoff[10], + top_standoff[11]]; translate([pcbhole_x,pcbhole_y,case_z]) standoff(normal_standoff); } if (pcbhole_pos == "right_front") { @@ -377,10 +380,11 @@ module case_top(case_design) { top_standoff[4], top_standoff[5], top_standoff[6], - top_standoff[7], + top_front_right_support, top_standoff[8], top_standoff[9], - top_standoff[10]]; + top_standoff[10], + top_standoff[11]]; translate([pcbhole_x,pcbhole_y,case_z]) standoff(normal_standoff); } } diff --git a/sbc_case_builder.json b/sbc_case_builder.json index de4f102..7b23dd5 100644 --- a/sbc_case_builder.json +++ b/sbc_case_builder.json @@ -5757,7 +5757,7 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, - "m1_panel": { + "m1_panel": { "$fn": "90", "accessory_highlight": "false", "accessory_name": "m1_panel", @@ -26921,7 +26921,7 @@ "vu_rotation": "[15, 0, 0]", "wallthick": "2" }, - "visionfive2q_shell": { + "visionfive2q_shell": { "$fn": "90", "accessory_highlight": "false", "accessory_name": "visonfive2q_shell", @@ -27326,6 +27326,85 @@ "view": "model", "vu_rotation": "[15, 0, 0]", "wallthick": "2" + }, + "test": { + "$fn": "90", + "accessory_highlight": "false", + "accessory_name": "none", + "adj": "0.01", + "bottom_ext_standoff": "[5.75, 5, 3.6, 10, 4, 1, 0, 0, 0, 4.5, 5.1]", + "bottom_front_left": "0", + "bottom_front_right": "0", + "bottom_rear_left": "0", + "bottom_rear_right": "0", + "bottom_sidewall_support": "true", + "bottom_standoff_diameter": "5.75", + "bottom_standoff_hole_size": "3.4", + "bottom_standoff_insert": "false", + "bottom_standoff_insert_dia": "4.5", + "bottom_standoff_insert_height": "5", + "bottom_standoff_pillar": "hex", + "bottom_standoff_reverse": "false", + "bottom_standoff_support_height": "4", + "bottom_standoff_support_size": "10", + "bottom_standoff_type": "countersunk", + "c_fillet": "3", + "case_design": "shell", + "case_ext_standoffs": "false", + "case_ffn": "90", + "case_fn": "360", + "case_offset_bz": "0", + "case_offset_tz": "0", + "case_offset_x": "0", + "case_offset_y": "0", + "case_style": "none", + "cooling": "default", + "exhaust_vents": "vent", + "fan_size": "0", + "fillet": "0", + "floorthick": "2", + "gap": "1", + "gpio_opening": "default", + "indents": "true", + "individual_part": "bottom", + "lip": "5", + "lower_bottom": "0", + "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", + "sata_knockout": "false", + "sbc_bottom_standoffs": "true", + "sbc_highlight": "false", + "sbc_model": "c1+", + "sbc_off": "false", + "sbc_top_standoffs": "true", + "sidethick": "2", + "tol": "0.25", + "top_ext_standoff": "[5.75, 18, 2.5, 10, 4, 4, 0, 1, 0, 4.5, 5.1]", + "top_front_left": "0", + "top_front_right": "0", + "top_rear_left": "0", + "top_rear_right": "0", + "top_sidewall_support": "true", + "top_standoff_diameter": "5.75", + "top_standoff_hole_size": "2.5", + "top_standoff_insert": "false", + "top_standoff_insert_dia": "4.5", + "top_standoff_insert_height": "5", + "top_standoff_pillar": "hex", + "top_standoff_reverse": "true", + "top_standoff_support_height": "4", + "top_standoff_support_size": "10", + "top_standoff_type": "blind", + "uart_opening": "default", + "view": "platter", + "vu_rotation": "[15, 0, 0]", + "wallthick": "2" } }, "fileFormatVersion": "1" diff --git a/sbc_case_builder.scad b/sbc_case_builder.scad index a8ee7bd..3ed25c9 100644 --- a/sbc_case_builder.scad +++ b/sbc_case_builder.scad @@ -103,12 +103,16 @@ top_sidewall_support = true; // case top - lower left standoff top_rear_left = 0; //[-20:.01:20] +top_rear_left_support = "rear"; //[left,rear,front,right] // case top - upper left standoff top_front_left = 0; //[-20:.01:20] +top_front_left_support = "front"; //[left,rear,front,right] // case top - lower right standoff top_rear_right = 0; //[-20:.01:20] +top_rear_right_support = "rear"; //[left,rear,front,right] // case top - upper right standoff top_front_right = 0; //[-20:.01:20] +top_front_right_support = "front"; //[left,rear,front,right] /* [Bottom Standoffs] */ // enable case bottom standoffs @@ -128,12 +132,16 @@ bottom_sidewall_support = true; // case bottom - rear left standoff bottom_rear_left = 0; //[-20:.01:20] +bottom_rear_left_support = "rear"; //[left,rear,front,right] // case bottom - upper left standoff bottom_front_left = 0; //[-20:.01:20] +bottom_front_left_support = "front"; //[left,rear,front,right] // case bottom - lower right standoff bottom_rear_right = 0; //[-20:.01:20] +bottom_rear_right_support = "rear"; //[left,rear,front,right] // case bottom - upper right standoff bottom_front_right = 0; //[-20:.01:20] +bottom_front_right_support = "front"; //[left,rear,front,right] /* [Extended Standoffs] */ // enable case extended standoffs @@ -193,18 +201,37 @@ case_diameter = sqrt(pow(width-wallthick-gap,2)+pow(depth-wallthick-gap,2)); hex_diameter = sqrt(pow(width+2*(wallthick+gap),2)+pow(depth+2*(wallthick+gap),2)); /* [Hidden] */ -adj = .01; -$fn=90; +// top case standoff - [diameter,height(not used),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed, 3=nut holder, 4=blind),style(0=hex, 1=cylinder),reverse,insert,insert hole dia.,insert depth] +top_standoff = [top_standoff_diameter, + 18, + top_standoff_hole_size, + top_standoff_support_size, + top_standoff_support_height, + top_standoff_type, + top_standoff_pillar, + top_rear_left_support, + top_standoff_reverse, + top_standoff_insert, + top_standoff_insert_dia, + top_standoff_insert_height]; +bottom_standoff = [bottom_standoff_diameter, + 6, + bottom_standoff_hole_size, + bottom_standoff_support_size, + bottom_standoff_support_height, + bottom_standoff_type, + bottom_standoff_pillar, + bottom_rear_left_support, + bottom_standoff_reverse, + bottom_standoff_insert, + bottom_standoff_insert_dia, + bottom_standoff_insert_height]; case_fn = 360; // circle segments for round cases case_ffn = 90; // circle segments for fillet of round cases lip = 5; vu_rotation = [15,0,0]; -// top case standoff - [diameter,height(not used),holesize,supportsize,supportheight,type(0=none, 1=countersink, 2=recessed, 3=nut holder, 4=blind),style(0=hex, 1=cylinder),reverse,insert,insert hole dia.,insert depth] -top_standoff = [top_standoff_diameter,18, top_standoff_hole_size, top_standoff_support_size, top_standoff_support_height, top_standoff_type, - top_standoff_pillar, top_standoff_reverse, top_standoff_insert, top_standoff_insert_dia, top_standoff_insert_height]; -bottom_standoff = [bottom_standoff_diameter, 6, bottom_standoff_hole_size, bottom_standoff_support_size, bottom_standoff_support_height, - bottom_standoff_type, bottom_standoff_pillar, bottom_standoff_reverse, bottom_standoff_insert, bottom_standoff_insert_dia, - bottom_standoff_insert_height]; +adj = .01; +$fn=90; // platter view if (view == "platter") {