Files
cyberdeck-k42/cad/display.scad
2023-06-19 14:44:13 +02:00

105 lines
2.4 KiB
OpenSCAD

$fn=32*2;
thinkness=1.6;
width=208.5;
depth=70.5;
height=8;
// outer display frame
difference(){
cube([width+(thinkness*2), depth+(thinkness*2), height]);
translate([thinkness, thinkness, 0])
cube([width, depth, height]);
}
// inner display catch
translate([thinkness, thinkness, 1.5]){
offset=5;
ledge=0.8;
difference(){
translate([offset, 0, 0])
cube([width-(offset*2), depth, thinkness]);
translate([0, ledge, 0])
cube([width, depth-(ledge*2), thinkness]);
}
}
// usb floor
usb_floor();
// battery floor
battery_floor(145);
// raspberry pi 4 cover
rpi4_cover();
module usb_floor(){
offset=5.6+thinkness;
hole=6;
difference([]){
translate([0, 0, height])
cube([31+thinkness+10, depth+(thinkness*2), 2+thinkness]);
translate([0, 0, height+thinkness])
cube([31, depth+(thinkness*2), 2+thinkness]);
translate([31+thinkness, thinkness, height])
cube([10, depth, 2]);
translate([31+thinkness+5, offset, height+2])
cylinder(h=thinkness, d=hole);
translate([31+thinkness+5, depth+(thinkness*2)-offset, height+2])
cylinder(h=thinkness, d=hole);
}
}
module battery_floor(x){
offset=5.6+thinkness;
hole=6;
difference(){
translate([x+thinkness, 0, height])
cube([width-x+thinkness, depth+(thinkness*2), 4+thinkness]);
translate([x+thinkness, thinkness, height])
cube([width-x, depth, 4]);
translate([x+thinkness+5, offset, height+4])
cylinder(h=thinkness, d=hole);
translate([x+thinkness+5, depth+(thinkness*2)-offset, height+4])
cylinder(h=thinkness, d=hole);
}
}
module rpi4_cover(){
difference(){
translate([31+thinkness+10, 0, height])
cube([104, depth+(thinkness*2), 25+thinkness]);
translate([31+thinkness+10, thinkness, height])
cube([104, depth, 25]);
translate([31+thinkness+62, (depth+(thinkness*2))/2, height+25])
cylinder(h=thinkness, d=41.5);
}
translate([17+thinkness, 0, height+2.6])
prism(24, thinkness, 24);
// logo
translate([31+thinkness+62, (depth+(thinkness*2))/2, height+25])
linear_extrude(height=1.6)
resize([42, 42, 0])
import(file="mk-logo.svg", center=true);
}
module prism(l, w, h){
polyhedron(
points=[[0,w,0], [0,0,0], [l,0,0], [l,w,0], [l,w,h], [l,0,h]],
faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]);
}