added panel tabs and cutouts for case assembly
This commit is contained in:
@@ -64,16 +64,16 @@ module case_bottom(case_design) {
|
||||
}
|
||||
if(case_design == "panel_nas") {
|
||||
union() {
|
||||
translate([-gap,-gap,0])
|
||||
cube([width-(2*wallthick)+(101.6-width+(2*wallthick)),depth-(3*wallthick),floorthick]);
|
||||
translate([(width*(1/5))-8-(wallthick+gap),depth-(3*wallthick)-gap-adj,0])
|
||||
cube([8,wallthick+2*adj,floorthick]);
|
||||
translate([width-(width*(1/5))-(wallthick+gap),depth-(3*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]);
|
||||
translate([-gap,-2*wallthick,0])
|
||||
cube([width-2*(gap+sidethick),depth-wallthick,wallthick]);
|
||||
#translate([-gap-sidethick+(2*adj),depth-(3*wallthick)-gap-adj-20,0])
|
||||
cube([sidethick+(2*adj),10,floorthick]);
|
||||
#translate([width-(3*sidethick)-adj,depth-(3*wallthick)-gap-adj-20,0])
|
||||
cube([sidethick+2*adj,10,floorthick]);
|
||||
#translate([-gap-sidethick+(2*adj),40-wallthick-gap+adj,0])
|
||||
cube([sidethick+2*adj,10,floorthick]);
|
||||
#translate([width-(3*sidethick)-adj,40-wallthick-gap+adj,0])
|
||||
cube([sidethick+2*adj,10,floorthick]);
|
||||
}
|
||||
}
|
||||
if(case_design == "stacked") {
|
||||
|
||||
@@ -132,39 +132,21 @@ module case_side(case_design, side) {
|
||||
if(side == "rear") {
|
||||
difference() {
|
||||
union() {
|
||||
translate([-gap,-wallthick-gap,floorthick])
|
||||
cube([width-2*wallthick+(101.6-width+(2*wallthick)),wallthick,case_z-2*floorthick]);
|
||||
// right hook
|
||||
difference() {
|
||||
translate([width-(2*wallthick)-gap-adj+(101.6-width+(2*wallthick)),-wallthick-gap,
|
||||
((case_z)/2)-4])
|
||||
cube([(2*wallthick)+.5,wallthick,8]);
|
||||
translate([width-(2*wallthick)-gap-adj+(101.6-width+(2*wallthick)),-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]);
|
||||
}
|
||||
translate([-gap,-(2*wallthick),floorthick])
|
||||
cube([width-2*sidethick,wallthick,case_z-2*wallthick]);
|
||||
// bottom right tab
|
||||
translate([width-(3*sidethick)-adj,-(2*wallthick),20])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
// top right tab
|
||||
translate([width-(3*sidethick)-adj,-(2*wallthick),case_z-30])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
// bottom left tab
|
||||
translate([-sidethick-gap-adj,-(2*wallthick),20])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
// top left tab
|
||||
translate([-sidethick-gap-adj,-(2*wallthick),case_z-30])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
}
|
||||
// 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(rear_fan == 1 || rear_fan == 2) {
|
||||
translate([-1+(101.6-rear_fan_size)/2,-1,bottom_height+pcb_tmaxz+rear_fan_position])
|
||||
rotate([90,0,0]) fan_mask(rear_fan_size, wallthick+2, rear_cooling);
|
||||
@@ -178,75 +160,119 @@ module case_side(case_design, side) {
|
||||
if(side == "front") {
|
||||
difference() {
|
||||
union() {
|
||||
translate([-gap,depth-4*(wallthick)-gap,floorthick])
|
||||
cube([width-2*wallthick+(101.6-width+(2*wallthick)),wallthick,case_z-2*wallthick]);
|
||||
// right hook
|
||||
difference() {
|
||||
translate([width-(2*wallthick)-gap-adj+(101.6-width+(2*wallthick)),depth-3*(wallthick)-gap-adj,
|
||||
((case_z)/2)-4])
|
||||
cube([(2*wallthick)+.5,wallthick,8]);
|
||||
translate([width-(2*wallthick)-gap-adj+(101.6-width+(2*wallthick)),
|
||||
depth-3*(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-3*(wallthick)-gap-adj,(
|
||||
(case_z)/2)-4])
|
||||
cube([(2*wallthick)+.5,wallthick,8]);
|
||||
translate([-wallthick-gap-adj-.25,depth-3*(wallthick)-adj-gap-adj,
|
||||
((case_z)/2)-4-adj])
|
||||
cube([wallthick+.25,wallthick+(2*adj),4.25]);
|
||||
}
|
||||
translate([-gap,depth-(4*wallthick),floorthick])
|
||||
cube([width-2*wallthick+(101.6-width+(2*wallthick)),wallthick,case_z-3*wallthick]);
|
||||
// bottom right tab
|
||||
translate([width-(3*sidethick)-adj,depth-(4*wallthick),20])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
// top right tab
|
||||
translate([width-(3*sidethick)-adj,depth-(4*wallthick),case_z-30])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
// bottom left tab
|
||||
translate([-sidethick-gap-adj,depth-(4*wallthick),20])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
// top left tab
|
||||
translate([-sidethick-gap-adj,depth-(4*wallthick),case_z-30])
|
||||
cube([sidethick+(2*adj),wallthick,10]);
|
||||
}
|
||||
// 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]);
|
||||
translate([-gap+8,depth-4*(wallthick)-gap,case_z-8]) rotate([-90,0,0])
|
||||
vent_hex((width)/3.5,(case_z-8)/6,wallthick+4,5,1.5,"horizontal");
|
||||
// hex vent
|
||||
translate([-gap+3,depth-3*(wallthick)+gap,5])
|
||||
vent_hex(width/3.85,(case_z-6)/6,wallthick+4,5,1.5,"vertical");
|
||||
}
|
||||
}
|
||||
if(side == "right") {
|
||||
difference() {
|
||||
// translate([width-(2*wallthick)-gap+(101.6-width+(2*wallthick)),-(3*wallthick)-gap,-wallthick])
|
||||
// cube([wallthick,depth+2*wallthick,case_z+(2*wallthick)]);
|
||||
translate([width-gap+(101.6-width+sidethick),-(3*wallthick)-gap,-wallthick])
|
||||
translate([width-2*sidethick,-(3*wallthick)-gap,-wallthick])
|
||||
rotate([0,-90,0]) slab([case_z+(2*wallthick),depth+2*wallthick,sidethick],corner_fillet);
|
||||
translate([width-(2*wallthick)-gap-adj+(101.6-width+(2*wallthick)),-wallthick-gap-.25,
|
||||
((case_z)/2)]) cube([wallthick+2*adj,wallthick+.5,8.5]);
|
||||
translate([width-(2*wallthick)-gap-adj+(101.6-width+(2*wallthick)),depth-2*(wallthick)-gap-.25,
|
||||
((case_z)/2)])
|
||||
cube([wallthick+2*adj,wallthick+.5,8.5]);
|
||||
// rear edge top tab openings
|
||||
translate([width-adj-(3*sidethick),-2*wallthick,case_z-30])
|
||||
cube([sidethick+2*adj,wallthick+tol,20]);
|
||||
translate([width-adj-(3*sidethick),-(4*wallthick),case_z-20-tol])
|
||||
cube([sidethick+(2*adj),2*wallthick,10+tol]);
|
||||
// rear edge bottom tab openings
|
||||
translate([width-adj-(3*sidethick),-2*wallthick,20])
|
||||
cube([sidethick+2*adj,wallthick+tol,20]);
|
||||
translate([width-adj-(3*sidethick),-(4*wallthick),30-tol])
|
||||
cube([sidethick+(2*adj),2*wallthick,10+tol]);
|
||||
// front edge top tab openings
|
||||
translate([width-(3*sidethick)-adj,depth-(4*wallthick),case_z-30])
|
||||
cube([sidethick+(2*adj),wallthick,20]);
|
||||
translate([width-(3*sidethick),depth-(4*wallthick),case_z-20-tol])
|
||||
cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]);
|
||||
// front edge bottom tab openings
|
||||
translate([width-(3*sidethick)-adj,depth-(4*wallthick),20])
|
||||
cube([sidethick+(2*adj),wallthick,20]);
|
||||
translate([width-(3*sidethick),depth-(4*wallthick),30-tol])
|
||||
cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]);
|
||||
|
||||
// hd holes for bays
|
||||
for( i=[0:1:hd_bays-1]) {
|
||||
translate([-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i])
|
||||
rotate([0,0,0]) hd_holes(3.5, "portrait", "both", sidethick+2);
|
||||
}
|
||||
|
||||
// top edge front tab openings
|
||||
translate([width-(3*sidethick)-adj,depth-(3*wallthick)-gap-adj-30,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),20,floorthick+tol]);
|
||||
translate([width-(3*sidethick)-adj,depth-(3*wallthick)-gap-adj-30,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+2*adj,10+tol,(3*floorthick)+adj]);
|
||||
// top edge rear tab openings
|
||||
translate([width-(3*sidethick)-adj,40-wallthick-gap+adj,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),10,floorthick+tol]);
|
||||
translate([width-(3*sidethick)-adj,30-wallthick-gap+adj,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),10+tol,(3*floorthick)+adj]);
|
||||
}
|
||||
}
|
||||
if(side == "left") {
|
||||
difference() {
|
||||
// translate([-sidethick-gap,-(2*wallthick)-gap,-wallthick])
|
||||
// cube([wallthick,depth+2*wallthick,case_z+(2*wallthick)]);
|
||||
translate([-gap,-(3*wallthick)-gap,-wallthick])
|
||||
rotate([0,-90,0]) slab([case_z+(2*wallthick),depth+2*wallthick,sidethick],corner_fillet);
|
||||
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]);
|
||||
rotate([0,-90,0]) slab([case_z+(2*wallthick),depth+(2*wallthick),sidethick],corner_fillet);
|
||||
// rear edge top tab openings
|
||||
translate([-sidethick-gap-adj,-2*wallthick,case_z-30])
|
||||
cube([sidethick+2*adj,wallthick+tol,20]);
|
||||
translate([-sidethick-gap-adj,-(4*wallthick),case_z-20-tol])
|
||||
cube([sidethick+(2*adj),2*wallthick,10+tol]);
|
||||
// rear edge botom tab openings
|
||||
translate([-sidethick-gap-adj,-2*wallthick,20])
|
||||
cube([sidethick+2*adj,wallthick+tol,20]);
|
||||
translate([-sidethick-gap-adj,-(4*wallthick),30-tol])
|
||||
cube([sidethick+(2*adj),2*wallthick,10+tol]);
|
||||
// front edge top tab openings
|
||||
translate([-sidethick-gap-adj,depth-(4*wallthick),case_z-30])
|
||||
cube([sidethick+(2*adj),wallthick,20]);
|
||||
translate([-sidethick-gap-adj,depth-(4*wallthick),case_z-20-tol])
|
||||
cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]);
|
||||
// front edge bottom tab openings
|
||||
translate([-sidethick-gap-adj,depth-(4*wallthick),20])
|
||||
cube([sidethick+(2*adj),wallthick,20]);
|
||||
translate([-sidethick-gap-adj,depth-(4*wallthick),30-tol])
|
||||
cube([sidethick+(2*adj)-adj,3*wallthick,10+tol]);
|
||||
|
||||
// hd holes for bays
|
||||
for( i=[0:1:hd_bays-1]) {
|
||||
translate([-gap,-(3*wallthick)-gap+hd_y_position,hd_z_position+(hd_space+27.1)*i])
|
||||
rotate([0,0,0]) hd_holes(3.5, "portrait", "both", sidethick+2);
|
||||
}
|
||||
|
||||
// top edge front tab openings
|
||||
translate([-gap-sidethick-adj,depth-(3*wallthick)-gap-adj-30,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),20,floorthick+tol]);
|
||||
translate([-gap-sidethick-adj,depth-(3*wallthick)-gap-adj-30,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),10+tol,(3*floorthick)+adj]);
|
||||
// top edge rear tab openings
|
||||
translate([-gap-sidethick-adj,40-wallthick-gap+adj,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),10,floorthick+tol]);
|
||||
translate([-gap-sidethick-adj,30-wallthick-gap+adj,
|
||||
case_z-(2*floorthick)])
|
||||
cube([sidethick+(2*adj),10+tol,(3*floorthick)+adj]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,21 +72,21 @@ module case_top(case_design) {
|
||||
}
|
||||
if(case_design == "panel_nas") {
|
||||
union() {
|
||||
translate([-gap,-gap,case_z-2*wallthick])
|
||||
cube([width-(2*wallthick)+(101.6-width+(2*wallthick)),depth-(3*wallthick),wallthick]);
|
||||
/* 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]);
|
||||
*/ }
|
||||
translate([-gap,-wallthick,case_z-2*wallthick])
|
||||
cube([width-2*(gap+sidethick),depth-(2*wallthick),wallthick]);
|
||||
translate([-gap-sidethick+(2*adj),depth-(3*wallthick)-gap-adj-20,
|
||||
case_z-2*floorthick])
|
||||
cube([sidethick+(2*adj),10,floorthick]);
|
||||
translate([width-(3*sidethick)-adj,depth-(3*wallthick)-gap-adj-20,
|
||||
case_z-2*floorthick])
|
||||
cube([sidethick+2*adj,10,floorthick]);
|
||||
translate([-gap-sidethick+(2*adj),40-wallthick-gap+adj,
|
||||
case_z-2*floorthick])
|
||||
cube([sidethick+2*adj,10,floorthick]);
|
||||
translate([width-(3*sidethick)-adj,40-wallthick-gap+adj,
|
||||
case_z-2*floorthick])
|
||||
cube([sidethick+2*adj,10,floorthick]);
|
||||
}
|
||||
}
|
||||
if(case_design == "stacked") {
|
||||
translate([(width/2)-wallthick-gap,(depth/2)-wallthick-gap,
|
||||
|
||||
@@ -9688,7 +9688,7 @@
|
||||
"hd_space": "10",
|
||||
"hd_y_position": "25",
|
||||
"hd_z_position": "10",
|
||||
"indents": "true",
|
||||
"indents": "false",
|
||||
"individual_part": "bottom",
|
||||
"lower_bottom": "0",
|
||||
"material_thickness": "0.5",
|
||||
@@ -9747,7 +9747,7 @@
|
||||
"multipcb_top_standoff_type": "blind",
|
||||
"multipcb_top_standoffs": "false",
|
||||
"nas_sbc_location": "top",
|
||||
"pcb_loc_x": "0",
|
||||
"pcb_loc_x": "8",
|
||||
"pcb_loc_y": "0",
|
||||
"pcb_loc_z": "0",
|
||||
"raise_top": "0",
|
||||
|
||||
@@ -368,11 +368,11 @@ pcb_color = sbc_data[s[0]][11][1];
|
||||
pcb_radius = sbc_data[s[0]][11][0];
|
||||
|
||||
pcb_z = sbc_model == "ssi-eeb" || sbc_model == "ssi-ceb" || sbc_model == "atx" || sbc_model == "micro-atx" || sbc_model == "dtx" || sbc_model == "flex-atx" || sbc_model == "mini-dtx" || sbc_model == "mini-itx" || sbc_model == "mini-itx_thin" || sbc_model == "mini-stx" || sbc_model == "mini-stx_thin" || sbc_model == "nano-itx" || sbc_model == "nuc" || sbc_model == "pico-itx" ? pcb_z_orig + standard_motherboard_thickness : pcb_z_orig;
|
||||
width = pcb_width+2*(wallthick+gap)+case_offset_x;
|
||||
width = case_design == "panel_nas" && pcb_width <= 100 ? pcb_width+(2*(sidethick+gap))+case_offset_x+(101.6-pcb_width) : pcb_width+(2*(wallthick+gap))+case_offset_x;
|
||||
depth = case_design == "panel_nas" ? pcb_depth+2*(wallthick+gap)+case_offset_y + 147-pcb_depth+hd_y_position : pcb_depth+2*(wallthick+gap)+case_offset_y;
|
||||
top_height = pcb_tmaxz+floorthick+case_offset_tz+pcb_loc_z;
|
||||
bottom_height = (case_design == "tray" || case_design == "tray_vu5" || case_design == "tray_vu7" || case_design == "tray_sides") ? pcb_z+pcb_bmaxz+floorthick+case_offset_bz+4 : pcb_z+pcb_bmaxz+floorthick+case_offset_bz;
|
||||
case_z = case_design == "panel_nas" ? bottom_height+top_height+hd_z_position + (hd_bays * (hd_space + 26.1)) : bottom_height+top_height;
|
||||
case_z = case_design == "panel_nas" ? bottom_height+top_height+hd_z_position+(hd_bays * (hd_space + 26.1)) : bottom_height+top_height;
|
||||
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));
|
||||
|
||||
@@ -656,10 +656,10 @@ if (view == "model") {
|
||||
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");
|
||||
color("dimgrey",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");
|
||||
color("dimgrey",1) translate([-move_leftside,0,0]) case_side(case_design,"left");
|
||||
}
|
||||
if(sbc_off == false && nas_sbc_location == "bottom") {
|
||||
translate([pcb_loc_x ,pcb_loc_y,bottom_height-pcb_z+pcb_loc_z])
|
||||
|
||||
Reference in New Issue
Block a user