nppilot-v2/hw/front_mount.scad

80 lines
1.1 KiB
OpenSCAD

$fn = 20;
through = 20;
d = 4.5;
e = 0.01;
function midxy(a, b) = [(a[0]-b[0])/2, (a[1]-b[1])/2, 0];
function centerx(w) = [-w/2, 0, 0];
module rcube(s, r=2) {
hull() {
for (y = [r, s[1]-r]) {
for (x = [r, s[0]-r]) {
translate([x, y, 0]) {
cylinder(r=r, s[2]);
}
}
}
}
}
module midmounts() {
m = 2;
ow = 18.5;
oh = 6.5;
h = 3;
w = 7.5;
w2 = 10;
for (y = [h+m/2, h+oh-m/2]) {
for (x = [-ow/2+m/2, ow/2-m/2]) {
translate([x, y, -through/2]) {
cylinder(d=m, through);
}
}
}
for (y = [h+oh-m/2]) {
for (x = [-ow/2+m/2-w2, ow/2-m/2+w2]) {
translate([x, y, -through/2]) {
cylinder(d=m, through);
}
}
}
}
module bar() {
w = 100;
h = 10;
t = 2;
r = 2;
d = 28-t;
d2 = d+5;
translate(centerx(w)) {
hull() {
translate([r+d2, r, 0])
cylinder(r=r, t);
translate([w-r-d2, r, 0])
cylinder(r=r, t);
translate([0, d-r, 0])
cube([r, r, t]);
translate([w-r, d-r, 0])
cube([r, r, t]);
}
}
translate([0, d, 0]) {
translate(centerx(w))
cube([w, t, t+2]);
}
}
module assembly() {
module cutout() {
midmounts();
}
difference() {
bar();
cutout();
}
}
assembly();