//el radio total de la rueda es RAD mas el radio del neumatico: "RAD+(A/2)" //radio rueda :RAD; //ancho rueda :A //numero de huecos :NUM; //rotacion ranura y agujero eje para que coincida entre radios :r_r; //para ampliar la ranura :C; //agujero eje; //radio eje :re; rueda(15, 10, 5, 180, 1, 1.6); $fn=100; module rueda(RAD, A, NUM, r_r, C, re) { difference() { union() { //cilindro base color("red") cylinder(r=RAD,h=A); //cilindro centro color("blue") cylinder(r=RAD/4,h=A); //neumatico color("black") translate([0,0,A/2]) rotate_extrude(convexity=15) translate([RAD,0,A/2]) circle(r = A/2); } //agujero eje intersection() { translate([0,0,A/2])color("Gray") cylinder(r=re,h=A+2, center=true); rotate ([0,0,r_r]) translate([-(re-1),0,A/2])color("Gray") cube([2*re,5,A+2], center=true); } //ranura rotate ([0,0,r_r]) translate([-RAD/8,0,A/2])color("lime") cube([RAD/4,C,A+2], center=true); //agujeros en la rueda for(i = [0:NUM-1]) { rotate(i*360/NUM,[0,0,1]) translate([RAD/2,0,A/2])color("Green") cylinder(r=RAD/4,h=A+2, center=true); } } }