42 lines
No EOL
1.1 KiB
OpenSCAD
42 lines
No EOL
1.1 KiB
OpenSCAD
include <BOSL2/std.scad>
|
|
|
|
mag_base = 16 + 1;
|
|
mag_h = 6 + 1; // height of the wider base
|
|
mag_width = 11 + 0.5;
|
|
mag_length = 37;
|
|
|
|
magnet_h = 0.8;
|
|
magnet_d = 4.3;
|
|
magnet_n1 = 7;
|
|
magnet_n2 = 3;
|
|
|
|
t = 3;
|
|
n = 4;
|
|
h = 20;
|
|
|
|
width = n * mag_base + (n+1) * t;
|
|
l = mag_length + t;
|
|
|
|
$fn = 360;
|
|
|
|
difference() {
|
|
round3d(0.75, $fn=3) {
|
|
back(width/4) cuboid([width, t, h]);
|
|
difference() {
|
|
cuboid([width,l,h]);
|
|
xrot(-3) left(width/2) for(i = [0 : n-1]) {
|
|
up(h/2) down(t) down(magnet_h) down(mag_h/2)
|
|
right((i+1)*t) right(i*mag_base) right(mag_base/2) union() {
|
|
cuboid([mag_base,l+0.1,mag_h]);
|
|
down(mag_h/2) down(h/2) cuboid([mag_width,l+0.1,h+0.1]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
up(h/2) down(magnet_h/2 - 0.1) left(width/2 - magnet_d/2 - t) back(l/2 - magnet_d/2 - t)
|
|
for(i = [0 : (width - magnet_d - t*2)/(magnet_n1-1) : width]) {
|
|
for(j = [0 : (l - magnet_d - t*2)/(magnet_n2-1) : l]) {
|
|
right(i) fwd(j) cyl(d=magnet_d, h=magnet_h);
|
|
}
|
|
}
|
|
} |