3d_print/Neptune4/screen_holder.scad
2025-12-15 23:42:49 +01:00

61 lines
1.4 KiB
OpenSCAD

include <BOSL2/std.scad>
// the original Neptune 4 screen module
module screen() {
// main body
cuboid([87,20,145], chamfer=2, edges=BACK, anchor=BOTTOM);
// space for cable
cuboid([25,20,50]);
xrot(20) cuboid([25,20,50]);
// MAGNET
back(14) up(15 + 25) union() {
cuboid([48,5,30]);
left(62/2) ycyl(d=3.5, h=20);
right(62/2) ycyl(d=3.5, h=20);
}
}
bot_w = 90;
bot_d = 50;
bot_h = 5;
bot_mag_d = 8.5;
bot_mag_h = 2;
bot_mag = [3,3];
// bottom
difference() {
// main base
cuboid([bot_w, bot_d, bot_h], anchor=FWD+BOTTOM, chamfer=1);
// magnet holes
for(i = [0 : bot_mag[0]-1]) {
for(j = [0 : bot_mag[1]-1]) {
left(bot_w/2) right(bot_mag_d) fwd(bot_mag_d)
right(((bot_w - bot_mag_d*2)/(bot_mag[0]-1)) * i)
fwd(((bot_d - bot_mag_d*2)/(bot_mag[1]-1)) * j)
cyl(d=bot_mag_d, h=bot_mag_h, anchor=BOTTOM, chamfer=-0.2);
}
}
}
// vertical upright
vert_h = 50;
vert_t = 5;
// holder
hold_angle = 20;
hold_t = 20;
hold_h = 65;
hold_dist = 5;
difference() {
union() {
// vertical upright
cuboid([bot_w, vert_t, vert_h], anchor=BOTTOM+FWD, chamfer=1);
// holder body
up(vert_h - vert_t) xrot(-hold_angle)
cuboid([bot_w,hold_t,hold_h], anchor=BOTTOM, chamfer=1);
}
up(vert_h - vert_t) xrot(-hold_angle) fwd(hold_t/2 - 3.55) up(hold_dist) screen();
}