80 lines
1.1 KiB
OpenSCAD
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();
|