//Vibrot design script. Licence CC-BY-SA (https://creativecommons.org/licenses/by/4.0/) //resolution $fn=200; //geometry cap_height=2.0; cy_radius = 7.5; leg_pos = 6.4; leg_height=10; leg_shift=1.3; leg_radius = 0.5; leg_angle = 18; n_legs=7; ls_angle=360/n_legs; lowercut = 10; // main code difference(){ mirror([0,0,0]){ union(){ // draw cylinder cap translate([0,0,0.26]) cylinder(h=cap_height-0.26, r=cy_radius); // draw round-of-cylinder bottom to remove overshot translate([0,0,0]) cylinder(h=0.26, r2=cy_radius, r1=0.98*cy_radius); // draw bottom heavy cylinder cylinder(h=leg_height-1,r=cy_radius-2); // round of edges minkowski(){ translate([0,0,1]) cube([20,2.5,1.48],center=true); sphere(r=0.3,$fn=6); } minkowski(){ translate([0,0,1]) rotate([0,0,90]) cube([20,2.5,1.48],center=true); sphere(r=0.3,$fn=6); } //draw legs difference() { for ( i = [0:(n_legs-1)] ) { echo(leg_pos*sin(i*ls_angle)); echo(leg_pos*cos(i*ls_angle)); translate([leg_pos*sin(i*ls_angle), leg_pos*cos(i*ls_angle), leg_shift]) { rotate(a=leg_angle, v=[sin(i*ls_angle),cos(i*ls_angle),0]) { cylinder(h=leg_height,r=leg_radius); } } } translate([0,0,lowercut]) cylinder(h=100,r=2*cy_radius); } } } }