phi=$t*360; AB=100; BC=200; CD=133; DA=217; translate ([-DA/2,-14.4,225]) Vierstangen (AB,BC,CD,DA); translate ([0,0,221]) Spanner_1 (0); translate ([0,0,221]) Klem_1 (); translate ([0,0,45]) Kolom (160); translate ([0,0,0]) Voet (); module Vierstangen (AB,BC,CD,DA) { BD=sqrt(pow(AB,2)+pow(DA,2)-2*AB*DA*cos(phi)); ADB=acos((pow(DA,2)+pow(BD,2)-pow(AB,2))/(2*BD*DA)); BDC=acos((pow(BD,2)+pow(CD,2)-pow(BC,2))/(2*BD*CD)); BCD=acos((pow(BC,2)+pow(CD,2)-pow(BD,2))/(2*BC*CD)); hoek1=-((BCD-(180-ADB-BDC))); hoek2=-((BCD-(180+ADB-BDC))); color ([0.55,0.58,0.65,1]) rotate ([90,0,0]) { rotate ([0,0,phi]) Stang (AB); Scharnierpen (-11); translate ([0,0,-7.2]) Stang (DA); translate ([DA,0,0]) Scharnierpen (-11); if (phi>=0&&phi<=180) { translate ([DA,0,0]) rotate ([0,0,180-(BDC+ADB)]) { Stang (CD); translate ([CD,0,0]) Scharnierpen (-4); }; translate ([AB*cos(phi),AB*sin(phi),0]) rotate ([0,0,hoek1]) { translate ([0,0,7.1]) Stang (BC); Scharnierpen (-4); }; } else { translate ([DA,0,0]) rotate ([0,0,180-(BDC-ADB)]) { Stang (CD); // CD translate ([CD,0,0]) Scharnierpen (-4); }; translate ([AB*cos(phi),AB*sin(phi),0]) rotate ([0,0,hoek2]) { translate ([0,0,7.1]) Stang (BC); Scharnierpen (-4); }; }; }; }; // einde module Vierstangen module Scharnierpen (X) { translate ([0,0,X]) cylinder (15,3,3); }; // einde module Scharnierpen module Stang (L) { difference() { union() { translate ([0,-6,-2]) cube ([L,12,4]); translate ([0,0,-3]) cylinder (6,8,8); translate ([0,0,-3.5]) cylinder (7,4.5,4.5); translate ([L,0,-3]) cylinder (6,8,8); translate ([L,0,-3.5]) cylinder (7,4.5,4.5); }; // einde union for (i=[0,L]) translate ([i,0,-15]) cylinder (30,3,3); }; // einde difference }; // einde module Stang module Klem_1 () { color ("gray") difference() { union() { cube ([40,18,28],true); translate ([0,0,14]) cylinder (2,7,7); translate ([0,0,-16]) cylinder (2,9,9); }; // einde union translate ([0,-8,4]) cube ([60,6,12],true); translate ([0,-6,9.6]) cube ([60,20,0.8],true); translate ([0,0,-20]) cylinder (40,3,3); }; // einde difference }; // einde module Klem_1 module Spanner_1 (explode) { color ("Silver") translate ([0,0,explode*60]) { difference() { union() { translate ([0,0,16+12*explode]) cylinder (1.5,6,6); translate ([0,0,17.5+17*explode]) cylinder (4.5,5,5,$fn=6); }; // einde union translate ([0,0,25]) cylinder (18,2.5,2.5); }; // einde difference translate ([0,0,-35]) cylinder (58,2.5,2.5); }; // einde color }; // einde module Spanner_1 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