CAD/bikemount/holder.scad

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();