49 lines
1.5 KiB
OpenSCAD
49 lines
1.5 KiB
OpenSCAD
include <BOSL2/std.scad>
|
|
|
|
// external model
|
|
down(7.3) left(20) back(0.35) import("/home/sasza/Pobrane/1.stl", center=true);
|
|
|
|
t = 1.5;
|
|
frame_dist = 0.4;
|
|
$fn = 46;
|
|
|
|
thumb_size = [14,17,2];
|
|
thumb_fwd = 10;
|
|
thumb_up = 2;
|
|
thumb_clearance = 0.4;
|
|
|
|
// base for the hinge
|
|
chain_hull() {
|
|
cyl(d=8.5, h=2.22, anchor=TOP, $fn=36);
|
|
down(t - frame_dist) right(thumb_fwd) fwd(thumb_up) zrot(180+45)
|
|
cuboid([t,thumb_size[1],t], anchor=LEFT+BOTTOM);
|
|
}
|
|
|
|
hinge_d = 2.5;
|
|
hinge_hole = 0.8;
|
|
hinge_num = 5;
|
|
hinge_h = 3;
|
|
|
|
// hinged part
|
|
down(t - frame_dist) right(thumb_fwd) fwd(thumb_up) zrot(180+45) xrot(-90) difference() {
|
|
down(thumb_size[1]/2) right(hinge_d/2) fwd(hinge_d/2 + t + 0.1)
|
|
for(i=[0 : hinge_num-1]) {
|
|
up(hinge_h/2 + i * (thumb_size[1]-hinge_h) / (hinge_num-1))
|
|
if(i%2==0) {
|
|
back(t/2) cuboid([hinge_d,hinge_d+t,hinge_h], rounding=1, edges="Z");
|
|
} else {
|
|
left(t/2) cuboid([hinge_d+t,hinge_d,hinge_h], rounding=1, edges="Z");
|
|
|
|
}
|
|
}
|
|
// hole for hinge wire
|
|
up(0) right(hinge_d/2) fwd(hinge_d/2 + t + 0.1)
|
|
cyl(d=hinge_hole, h=thumb_size[1]*2, $fn=36);
|
|
}
|
|
|
|
// thumb part
|
|
right(thumb_fwd) fwd(thumb_up) zrot(180+45) down(t - frame_dist) yrot(-90) down(t)
|
|
up(hinge_d/2 + t/2) union() {
|
|
cuboid(thumb_size, anchor=LEFT+BOTTOM, rounding=t/2, edges=["X","Z", RIGHT]);
|
|
cuboid([t,thumb_size[1]-t,thumb_clearance], anchor=LEFT+TOP, chamfer=thumb_clearance/2, edges=BOTTOM);
|
|
}
|