3dparts/wheel.scad

33 lines
896 B
OpenSCAD

$fn=100;
module wheel(radius, width, thickness, spokes) {
echo("axle width:", (radius-thickness)/(spokes));
union() {
difference() {
// basis for our wheel - a sphere
sphere(radius);
// upper cut-out
translate([0,0,(width/2)])
cylinder(radius-(width/2) +1, radius, radius, 0);
// lower cut-out
translate([0,0,-radius -1])
cylinder(radius-(width/2) +1, radius, radius, 0);
/*
inner cut-out
removing 1 from z on translate and making the cylinder
higher by two to generate slightly more valid objects
*/
translate([0,0,-(width/2) -1])
cylinder(width +2, radius-thickness, radius-thickness, 0);
}
// spokes
union() {
for (i = [0:(360/spokes):360]) {
rotate([0,0,i])
translate([-(radius-thickness),-(radius-thickness)/(spokes*2), -(width/2)])
cube([(radius-thickness), (radius-thickness)/(spokes), width]);
}
}
}
}