105 lines
2.4 KiB
OpenSCAD
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]]);
|
|
}
|