3d_print/Dom/roll_holder.scad

69 lines
No EOL
1.9 KiB
OpenSCAD

include <BOSL2/std.scad>
include <BOSL2/screws.scad>
roll_d = 200;
roll_d_in = 32;
roll_l = 240;
roll_ch_d = 12;
roll_ch_l = 25;
up_w = 20;
base = [100,25,10];
hole_d = 4.5;
r = 2;
t = 7;
t2 = 10;
$slop = 0.2;
clearance = 1; // clearance between rod and hole
$fn = 180;
scr = "M27,20";
scr_l = 20;
module base(thread) {
// base
difference() {
cuboid(base, rounding=r, edges=TOP);
left(base[0]/3) cyl(h=base[2], d=hole_d, chamfer2=-2);
right(base[0]/3) cyl(h=base[2], d=hole_d, chamfer2=-2);
}
// upright and hole
fwd(base[1]/2 - t/2) difference() {
chain_hull() {
left(base[0]/2 - up_w/2 - r) cuboid([up_w,t,base[2]], rounding=r);
up(roll_d/2) xrot(90) cyl(d=roll_d_in + 2*t2, h=t, rounding=r);
right(base[0]/2 - up_w/2 - r) cuboid([up_w,t,base[2]], rounding=r);
}
up(roll_d/2) xrot(90) cyl(d=roll_d_in + clearance, h=t*2);
}
// thread
if(is_string(thread)) {
fwd(base[1]/2 - t/2) up(roll_d/2) xrot(90) difference() {
up(t/2) union() {
cyl(h=scr_l, d=roll_d_in, anchor=TOP, rounding1=r);
cyl(h=t, d=roll_d_in + 2*t, anchor=TOP, rounding1=r);
}
up(t/2) screw_hole(thread, thread=true, l=scr_l+1, anchor=TOP, bevel1=2.5);
}
}
}
// base
base(scr);
fwd(base[1] + t) base();
// long pole
fwd((base[1] + t)*2 + roll_d_in) union() {
// cyl(h=roll_l - roll_ch_l, d=roll_d_in, anchor=BOTTOM);
linear_sweep(circle(d=roll_d_in), h=roll_l - roll_ch_l, texture="diamonds", style="concave", tex_depth=0.5);
up(roll_l - roll_ch_l)
cyl(h=roll_ch_l, d1=roll_d_in, d2=roll_d_in-roll_ch_d, anchor=BOTTOM);
// hex
minkowski() {
cyl(h=t2, d=roll_d_in*2, anchor=BOTTOM, $fn=6);
sphere(d=r);
}
up(roll_l) screw(scr, l=scr_l, anchor=BOTTOM, bevel1=false);
}