33 lines
896 B
OpenSCAD
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]);
|
|
}
|
|
}
|
|
}
|
|
}
|