3d_print/Artur/neuroshima_hex.scad
2025-11-02 15:53:42 +01:00

59 lines
1.3 KiB
OpenSCAD

include <BOSL2/std.scad>
include <BOSL2/screws.scad>
$slop=0.5;
$fn=36;
in_d = 37;
thread = "M45x3,80";
in_h = 80;
t = 3;
th_h = 10;
cap_h = 12;
out_d = in_d + 2*t;
cap_d = 50;
cap_n = 24; // how many cutouts on edge
hole_d = 15;
difference() {
union() {
down(th_h/2) cyl(h=in_h - th_h, d=in_d + 2*t, rounding1=2);
up(th_h/2) screw(thread);
}
down(th_h) difference() {
cyl(h=in_h, d=out_d*2);
cyl(h=in_h, d=out_d);
}
// inside hollow
up(t) cyl(d=in_d, h=in_h);
// cutoff at the top
up(50 + in_h/2 + t/2)cuboid([100,100,100]);
// hole in the bottom
down(in_h/2 - t/2) cyl(h=t+0.1, d=hole_d, rounding=-1);
}
right(100) union() {
difference() {
union() {
nut(thread, thickness=th_h, bevel=false, ibevel=false, anchor=CENTER);
up(th_h/2 + t/2) cyl(h=t, d=cap_d, rounding2=2);
difference() {
down(cap_h/2) cyl(d=cap_d, h=cap_h, rounding=2);
down(cap_h/2) cyl(d=in_d+2*t+1, h=cap_h+1);
}
}
difference() {
cyl(d=cap_d*2, h=100);
cyl(d=cap_d, h=101);
}
for(i = [0 : 360 / cap_n : 360]) {
zrot(i) left(cap_d/2) cyl(h=cap_h*2);
}
// hole
up(th_h/2 + t/2) cyl(h=t+0.1, d=hole_d, rounding=-1);
}
}