$fn=128; phi=90*sin(360*$t); m=5; z1=12; z2=24; z3=18; z4=30; hartafstand=m*(z1+z4)/2; v1=phi*105; v2=45*phi*30/12; x=v1-v2; phi2=x*60; echo(v1,v2,x,phi2); // samenstelling translate ([0,-32.2,240]) rotate ([90,0,0]) { // wiel z1 tanden rotate ([0,0,phi]) { translate ([0,hartafstand,0]) rotate ([0,0,phi*z4/z1]) { difference() { color ([0.2,0.2,0.2,1]) union() { Wiel (8,m,z1); // naaf translate ([0,0,-2]) cylinder (12,10,10); }; // einde union translate ([0,0,-15]) cylinder (30,6.25,6,25); }; // einde difference // lagerbrons color ([0.9,0.6,0.35,1]) difference() { translate ([0,0,-14.2]) cylinder (24.4,6.25,6.25); translate ([0,0,-20]) cylinder (40,4.25,4.25); }; // einde difference }; // einde rotate translate ([0,0,13.2]) Koppelarm (hartafstand); translate ([0,0,-47.3]) Stelring (); translate ([0,hartafstand,-19.2]) Stelring (); }; // einde rotate // wiel z2 tanden rotate ([0,0,phi]) translate ([0,hartafstand,-12]) rotate ([0,0,phi*z4/z1]) { difference() { color ([0.4,0.4,0.4,1]) union() { Wiel (8,m,z2); // naaf translate ([0,0,-2]) cylinder (12,10,10); }; // einde union translate ([0,0,-15]) cylinder (30,6.25,6,25); }; // einde difference // paspennen color ([1,1,1,1]) for (i=[0,1,2]) rotate ([0,0,i*120]) translate ([16.5,0,-0.5]) cylinder (21,2,2); }; // wiel z3 tanden translate ([0,0,-12]) rotate ([0,0,180/z3-(phi*z4*z2)/(z1*z3)+phi]) { difference() { color ([0.3,0.3,0.3,1]) union() { Wiel (8,5,z3); // naaf translate ([0,0,-2]) cylinder (12,10,10); }; // einde union translate ([0,0,-15]) cylinder (30,6.25,6,25); }; // einde difference // lagerbrons color ([0.9,0.6,0.35,1]) difference() { translate ([0,0,-2.1]) cylinder (12.2,6.25,6.25); translate ([0,0,-10]) cylinder (30,4.25,4.25); }; // einde difference }; // wiel z4 tanden rotate ([0,0,180/z4]) { color ([0.45,0.5,0.65,1]) { difference() { Wiel (8,m,z4); translate ([0,0,-5]) cylinder (20,0.83*75,0.83*75); }; difference() { union() { // spaak translate ([0,0,4]) for (i=[0,1,2]) rotate ([90,0,60-180/z4+i*120]) scale ([1,0.5,1]) cylinder (0.85*75,6,5); // naaf translate ([0,0,-2]) cylinder (12,10,10); }; // einde union translate ([0,0,-10]) cylinder (30,6.25,6.25); }; // einde difference }; // einde color // lagerbrons color ([0.9,0.6,0.35,1]) difference() { translate ([0,0,-2]) cylinder (12.2,6.25,6.25); translate ([0,0,-10]) cylinder (30,4.25,4.25); }; // einde difference }; // einde rotate }; // einde plaatsen in Klem_2 translate ([0,0,221]) rotate ([0,0,180]) Klem_2 (); translate ([0,0,221]) Spanner_2 (); translate ([0,0,45]) Kolom (160); translate ([0,0,0]) Voet (); module Wiel (tandbreedte,m,z) { pi=3.1415; linear_extrude (height=tandbreedte, convexity=10) { circle (m*(z/2-1.25)); for (i=[0:1:z-1]) rotate ([0,0,i*360/z]) polygon ([[pi*m/4,m*z/2-1.5*m],[-pi*m/4,m*z/2-1.5*m],[-pi*m/4,m*z/2],[-pi*m/8,m*(z/2+1)],[pi*m/8,m*(z/2+1)],[pi*m/4,m*z/2]]); }; // einde extrude }; // einde module Wiel module Koppelarm (L) { difference() { color ([0.18,0.16,0.16,1]) union() { for (i=[0,L]) { translate ([0,i,-3]) cylinder (6,10,10); translate ([0,i,-3]) cylinder (12,7,7); }; // einde for translate ([-7,0,-1.5]) cube ([14,L,3]); }; // einde union translate ([0,0,-8]) cylinder (20,4.25,4.25); translate ([0,L,-8]) cylinder (20,4.25,4.26); }; // einde difference // assen color ([0.6,0.63,0.66,1]) translate ([0,0,-61]) cylinder (70.4,4.25,4.25); color ([0.6,0.63,0.66,1]) translate ([0,L,-33]) cylinder (43,4.25,4.25); }; // einde module Koppelarm module Stelring () { color ([0.6,0.63,0.66,1]) { difference() { cylinder (5,6,6); translate ([0,0,-2]) cylinder (10,4.25,4.25); }; // einde difference translate ([0,4,2.5]) rotate ([-90,0,0]) { cylinder (5,1,1); translate ([0,0,4]) cylinder (1.6,2,2,$fn=6); }; // einde translate rotate }; // einde color }; // einde module Stelring module Klem_2 () { color ("gray") difference() { union() { translate ([0,0,-10]) cube ([40,18,8],true); translate ([0,-10,19]) rotate ([-90,0,0]) cylinder (28,8,8); translate ([0,0,-6]) cylinder (2,7,7); translate ([-7,0,-6]) cube ([14,15,2]); translate ([0,0,-16]) cylinder (2,9,9); translate ([-20,9,-14]) cube ([40,8,40]); translate ([-20,-9,18]) cube ([40,18,8]); }; // einde union translate ([0,0,-20]) cylinder (20,3,3); translate ([0,-30,19]) rotate ([-90,0,0]) cylinder (60,4.25,4.25); }; // einde difference // lagerbrons color ([0.9,0.6,0.35,1]) translate ([0,-10.1,19]) rotate ([-90,0,0]) difference() { cylinder (28.2,6.25,6.25); translate ([0,0,-5]) cylinder (40,4.25,4.25); }; // einde difference }; // einde module Klem_2 module Spanner_2 () { color ("Silver") difference() { union() { translate ([0,0,-4]) cylinder (1.5,6,6); translate ([0,0,-2.5]) cylinder (4.5,5,5,$fn=6); }; // einde union translate ([0,0,-20]) cylinder (28,2.5,2.5); }; // einde difference translate ([0,0,-35]) cylinder (38,2.5,2.5); }; // einde module Spanner_2 module Kolom (L) { color ("gray") difference() { union() { translate ([0,0,L]) rotate_extrude (angle=360,convexity=10) { difference() { union() { translate ([0,-4,0]) square ([10,4]); translate ([10,-4,0]) circle (4); }; // einde union translate ([0,-19,0]) square ([40,15]); }; // einde difference difference() { translate ([0,-8,0]) square ([11,4]); translate ([12,-7.8,0]) circle (4); }; // einde difference translate ([0,-15]) square ([7.7,7]); translate ([0,-16.5]) square ([8.7,1.5]); }; // einde extrude cylinder (L-16,12,8); translate ([0,0,8]) rotate_extrude (angle=360,convexity=10) { difference() { union() { translate ([4,-7.,0]) square ([10,4]); translate ([14,-4,0]) circle (4); }; // einde union translate ([0,-3.8,0]) square ([40,15]); }; // einde difference difference() { translate ([4,-4.4,0]) square ([11,4]); translate ([16,0,0]) circle (4); }; // einde difference }; // einde extrude }; // einde union translate ([0,0,L-30]) cylinder (50,2.5,2.5); translate ([0,0,-5]) cylinder (35,4,4); }; // einde difference }; // einde module Kolom module Voet () { color ([0.35,0.1,0,1]) difference() { union() { translate ([0,0,45]) rotate_extrude (angle=360,convexity=10) { difference() { translate ([0,-20,0]) square ([25,20]); translate ([72,0,0]) circle (54); }; // einde difference }; // // einde extrude translate ([0,0,30]) rotate_extrude (angle=360,convexity=10) { difference() { translate ([0,-140,0]) circle (140); translate ([-150,-320,0]) square (300); translate ([-150,-100,0]) square (150); }; // einde difference }; // einde extrude cylinder (10,74,73); cylinder (7,75,74); cylinder (4,75,75); }; // eine union translate ([0,0,10]) cylinder (60,7,7); }; // einde difference color ("gray") translate ([0,0,15]) difference() { cylinder (30,7,7); cylinder (50,4,4); }; // einde difference }; // einde module Voet