include // 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(); }