cyl_d = 10; cyl_h = 15; cyl_hole_d = 4; sphere_r = 7; slit_width = 1; difference() { cylinder(d=cyl_d, h=cyl_h, center=true); cylinder(d=cyl_hole_d, h=cyl_h+0.1, center=true, $fn=20); translate([0,-cyl_d/2,0]) cube([slit_width,cyl_d,cyl_h+ 0.1], center=true); // translate([0,0,-cyl_h/2 - sphere_r/3]) sphere(sphere_r, $fn=8); } g_r = 15; g_h = 2.5; g_t = 4; g_l = 10; for (i = [0,180]) { rotate([0,0,i]) translate([g_t/2 + 0.4,g_t/2,cyl_h/2 + g_l/2])rotate([90,0,0]) union() { gripper(g_r, g_h, g_t, g_l); translate([0.8,10,0]) rotate([0,0,190]) gripper(g_r, g_h, g_t, g_l); } } module gripper(r, h, thickness, l) { $fn=100; translate([r-h/2,0,0]) difference() { cylinder(r=r, h=thickness); translate([0,0,-0.01]) cylinder(r=r-h, h=thickness+0.02); translate([0,-r,-0.5]) cube([2*r, 2*r, thickness+1]); for (i = [0,180]) { rotate([0,0,i]) translate([-r, l/2, -0.5]) cube(2*r,2*r,thickness+1); } } }