91 lines
1.5 KiB
OpenSCAD
91 lines
1.5 KiB
OpenSCAD
|
e = 0.1;
|
||
|
|
||
|
$fn = 60;
|
||
|
|
||
|
module motor() {
|
||
|
translate([0, 0, 18+21])
|
||
|
cylinder(3, d=6.5, d=6.5);
|
||
|
translate([0, 0, 18])
|
||
|
cylinder(18, d=23.5, d=23.5);
|
||
|
cylinder(21, d=25, d=25);
|
||
|
}
|
||
|
|
||
|
module wheel() {
|
||
|
spokes = 5;
|
||
|
r = 20; // Wheel radius
|
||
|
w = 2; // Spoke radius
|
||
|
rt = 4; // Rim thickness
|
||
|
|
||
|
module spokes() {
|
||
|
rotate([0, 90, 0])
|
||
|
for (i = [0:360/spokes:360]) {
|
||
|
rotate([i, 0, 0])
|
||
|
cylinder(r, w, w);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module hub() {
|
||
|
translate([0, 0, -w])
|
||
|
cylinder(w*2, d=19, d=19);
|
||
|
}
|
||
|
|
||
|
module slot(o) {
|
||
|
t = 1;
|
||
|
translate([0, 0, o])
|
||
|
difference() {
|
||
|
translate([0, 0, -w])
|
||
|
linear_extrude(t)
|
||
|
circle(r+rt+e);
|
||
|
translate([0, 0, -w-e])
|
||
|
linear_extrude(t+2*e)
|
||
|
circle(r+rt-t);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module rim() {
|
||
|
difference() {
|
||
|
translate([0, 0, -w])
|
||
|
linear_extrude(w*2)
|
||
|
circle(r+rt);
|
||
|
translate([0, 0, -w-e])
|
||
|
linear_extrude(w*2+2*e)
|
||
|
circle(r);
|
||
|
slot((rt-1)/2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module cap() {
|
||
|
v = 6;
|
||
|
cylinder(v, 5, 5);
|
||
|
translate([0, 0, v])
|
||
|
sphere(5);
|
||
|
}
|
||
|
|
||
|
translate([0, 0, w])
|
||
|
union() {
|
||
|
// spokes();
|
||
|
hub();
|
||
|
// rim();
|
||
|
cap();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module shaft() {
|
||
|
h = 9.8+3;
|
||
|
r = 2 + 0.4;
|
||
|
|
||
|
difference() {
|
||
|
translate([0, 0, -2])
|
||
|
cylinder(h, r, r);
|
||
|
translate([2*2-2.5, -2*r, -2-e])
|
||
|
cube([4, 4*r, h+e*2]);
|
||
|
}
|
||
|
translate([0, 0, -e])
|
||
|
cylinder(0.6, r+1, r+1);
|
||
|
}
|
||
|
|
||
|
difference() {
|
||
|
wheel();
|
||
|
shaft();
|
||
|
}
|