65 lines
1.5 KiB
OpenSCAD
65 lines
1.5 KiB
OpenSCAD
// Pixel 1 holder for mounting on the clamp.
|
|
|
|
e = 0.1;
|
|
w = 30;
|
|
|
|
module rcube(s, r) {
|
|
hull() {
|
|
for (x = [r, s[0]-r]) {
|
|
for (y = [r, s[1]-r]) {
|
|
translate([x, y, 0]) cylinder(r=r, h=s[2]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module pixel1() {
|
|
t = 1.5; // wall thickness
|
|
r = 5; // major curves radius
|
|
s = [144-7, 70, 8.5]; // phone dimensions
|
|
extra = 10;
|
|
|
|
module outer() {
|
|
translate([-t, -t, -t])
|
|
rcube(s + [t*2, t*2, t*2], r);
|
|
}
|
|
module holes() {
|
|
j = 9;
|
|
k = j+3;
|
|
translate([j/2, s[1]/2, -t-e]) {
|
|
for (x = [1, 3, 5, 7]) {
|
|
translate([x*j*1.6+k, 0, 0]) cylinder(r=j, j);
|
|
}
|
|
for (x = [0, 2, 4, 6]) {
|
|
translate([x*j*1.6+k, -j*2.3, 0]) cylinder(r=j, j);
|
|
translate([x*j*1.6+k, j*2.3, 0]) cylinder(r=j, j);
|
|
}
|
|
}
|
|
}
|
|
module usbspkr() {
|
|
u = [s[2]-1, 15, extra];
|
|
translate([s[0], s[1]/2, s[2]/2])
|
|
rotate(90, [0, 1, 0]) translate(-u/2) rcube(u, 2);
|
|
spk = [s[2]-4, 14, extra];
|
|
for (y = [15, s[1]-15]) {
|
|
translate([s[0], y, s[2]/2])
|
|
rotate(90, [0, 1, 0]) translate(-spk/2) rcube(spk, 2);
|
|
}
|
|
}
|
|
difference() {
|
|
outer();
|
|
translate([-extra, 0, 0])
|
|
rcube(s + [extra, 0, 0], r/2); // phone cutout
|
|
translate([-extra, t, s[2]-e])
|
|
rcube(s + [0, -t*2, 0], r); // screen cutout
|
|
translate([18+5, s[1]-extra, 2])
|
|
cube([80-12-144+s[0], 20, 4+extra]); // buttons cutout
|
|
usbspkr();
|
|
holes();
|
|
}
|
|
translate([s[0]/2, s[1]/2, -t/2])
|
|
cube([w,w,t], center=true); // clamp mounting plate
|
|
}
|
|
|
|
pixel1();
|