3d_print/Sasza/cz_mag.scad
2025-11-14 12:54:17 +01:00

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