Files
SBC_Case_Builder/lib/access_panel.scad
2024-01-29 17:40:12 -05:00

105 lines
4.6 KiB
OpenSCAD

/*
access_port(size[],orientation)
access_cover(size[],orientation)
*/
/* access port and support */
module access_port(size,orientation) {
floorthick = size[2];
adjust = .01;
$fn = 90;
if(orientation == "portrait") {
difference() {
union() {
translate([0,0,0]) cube([size[0],size[1],size[2]]);
// access panel support
translate([(size[0]/2)+.25,size[1]-6.5,0]) cylinder(d=9,h=floorthick+(adjust*2)+5);
translate([(size[0]/2)-10,size[1]-11,floorthick-adjust]) cube([20,9.5,floorthick]);
translate([1,0,floorthick-adjust]) cube([size[0]-2,5,4.5]);
}
// access opening
translate([.5,6,-adjust]) cube([size[0]-1.15,size[1]-17,floorthick+(adjust*2)]);
translate([(size[0]/2)-5,size[1]-12,-adjust]) slab([10.5,5.5,floorthick],5.5);
translate([(size[0]/2)+.25,size[1]-6.5,floorthick+2])
cylinder(r=3.2,h=floorthick+(adjust*2)+5,$fn=6);
translate([(size[0]/2)+.25,size[1]-6.5,-adjust])
cylinder(d=3.2,h=floorthick+(adjust*2)+5);
translate([4,2+adjust,floorthick]) cube([7.75,3,2.75]);
translate([size[0]-13,2+adjust,floorthick]) cube([7.75,3,2.75]);
if(size[0] > 100) {
translate([(size[0]/2),2+adjust,floorthick]) cube([7.75,3,2.75]);
}
}
}
if(orientation == "landscape") {
difference() {
union() {
translate([0,-1,0]) cube([size[0],size[1],size[2]]);
// access panel support
translate([size[0]-6.5,(size[1]/2)-.5,0]) cylinder(d=9,h=floorthick+(adjust*2)+5);
translate([size[0]-11,(size[1]/2)-10.5,floorthick-adjust]) cube([9.5,20,floorthick]);
translate([0,0,floorthick-adjust]) cube([5,size[1]-2,4.5]);
}
// access opening
translate([6,-.5,-adjust]) cube([size[0]-17,size[1]-1.15,floorthick+(adjust*3)]);
translate([size[0]-12,(size[1]/2)-6,-adjust]) slab([5.5,10.5,floorthick],5.5);
translate([size[0]-6.5,(size[1]/2)-.5,floorthick+2]) rotate([0,0,30])
cylinder(r=3.2,h=floorthick+(adjust*2)+5,$fn=6);
translate([size[0]-6.5,(size[1]/2)-.5,-adjust])
cylinder(d=3.2,h=floorthick+(adjust*2)+5);
translate([2+adjust,3,floorthick]) cube([3,8.25,2.75]);
translate([2+adjust,size[1]-13,floorthick]) cube([3,8.25,2.75]);
if(size[1] > 100) {
translate([2+adjust,(size[1]/2)-(7.75/2)-1.25,floorthick]) cube([3,7.75,2.5]);
}
}
}
}
/* access cover and support */
module access_cover(size,orientation) {
floorthick = size[2];
adjust = .01;
$fn = 90;
if(orientation == "portrait") {
difference() {
union() {
translate([1,6.25,0]) cube([size[0]-2.15,size[1]-17.5,floorthick]);
translate([(size[0]/2)-4.75,size[1]-12.25,0]) slab([10,5,floorthick], 5);
translate([1,6.25,floorthick-adjust]) cube([size[0]-2.15,6,floorthick]);
translate([4.25,3,floorthick]) cube([7.25,4,2]);
translate([size[0]-12.75,3,floorthick]) cube([7.25,4,2]);
if(size[0] > 100) {
translate([(size[0]/2)+.25,3,floorthick]) cube([7.25,4,2]);
}
}
translate([(size[0]/2)+.25,size[1]-6.5,-floorthick-adjust])
cylinder(d=3.2,h=(floorthick*2)+(adjust*2));
translate([(size[0]/2)+.25,size[1]-6.5,-floorthick-adjust+floorthick])
cylinder(d1=6, d2=3.2, h=floorthick);
}
}
if(orientation == "landscape") {
difference() {
union() {
translate([6.25,0,0]) cube([size[0]-17.75,size[1]-2,floorthick]);
translate([size[0]-12.25,(size[1]/2)-5.75,0]) slab([5,10,floorthick], 5);
translate([6.25,0,floorthick-adjust]) cube([6,size[1]-2.15,floorthick]);
translate([3.5+adjust,3.25,floorthick]) cube([4,7.25,2]);
translate([3.5+adjust,size[1]-12.75,floorthick]) cube([4,7.25,2]);
if(size[1] > 100) {
translate([3.5+adjust,(size[1]/2)-(7.75/2)-1,floorthick]) cube([4,7.25,2]);
}
}
translate([size[0]-6.5,(size[1]/2)-.75,-floorthick-adjust])
cylinder(d=3.2,h=(floorthick*2)+(adjust*2));
translate([size[0]-6.5,(size[1]/2)-.75,-floorthick-adjust+floorthick])
cylinder(d1=6, d2=3.2, h=floorthick);
}
}
}