A lot of schools are now teaching OpenSCAD as a "programming language".
I just started with the tutorials and played around.
$fn=60;
numofrings=12;
rotate(19, [0,1, 0])
union() {
difference() {
rotate(a=[0,90,0]) {
// the rings
for (i=[0:numofrings-1]) {
rotate(i*360/numofrings, [3, 0, 1])
translate([0,25,0])
rotate_extrude(convexity=3)
translate([25,0,0])
circle(5);
}
// supports for the top to bottom
rotate(20, [0, -1, 0])
rotate(90, [0, 1, 0])
sphere(12, center=true);
}
rotate(19, [0, -1, 0]) {
//windows for the ball in the middle
rotate(90, [1,0,0])
cylinder(h=24, r=5, center=true);
rotate(90, [0,1,0])
cylinder(h=24, r=5, center=true);
sphere(7);
cylinder(h=40, r=3.5, center=true); // leave space for axle
}
}
//ball in the middle
rotate(19, [0,-1,0])
cylinder(h=57, r=2, center=true);
sphere (4.5);
//hold disk on bottom
rotate(19, [0,-1,0])
rotate(13,[0,0,-1])
translate([0,0,-29])
for (i=[0:numofrings-1]) {
rotate(360/numofrings*i, [0,0,1])
hull() {
translate([27,0,0]) cylinder(h=1, r=2);
cylinder(h=1, r=2);
}
}
}