include include /* ccube(x, y, z); ccyldr(r, h); ccone(rb, h, rt); csquare(x, y); gear(n, r, t); bevelgear(xtr, r, n, t); rectchamfer(ch, sqx, sqy, off); triang(R, r); elliptogon(n, R, r); ring(r, h); cylfoot(r, o, h); // Cylinder with a fillet at the foot bbearg(ir, shaft rotn); rbearg(ir, shaft rotn); */ // Drawing 800% = mm /* $vpr=[ -25, -65, -40 ]; //$vpt=[ 20, 50, 55 ]; $vpt=[ 00, 50, 55 ]; $vpf=8; $vpd=2400; // +200 */ $vpr=[ -10, -115, -40 ]; $vpt=[ 00, 30, 15 ]; $vpf=8; $vpd=2400; // +200 /* */ $fn=100; e = 24; l = 100; // Running lines b = 49; // Bolt radius49 f=100; // Facets crank // Colours steel0=[0.9, 0.9, 0.8]; steel1=[0.81, 0.81, 0.72]; //steel1="peru"; steel2=[0.73, 0.73, 0.65]; steel3=[0.65, 0.63, 0.58]; //steel2="darkkhaki"; //steel2=[0.5, 0.33, 0.0]; // Darkperu crank=[0.8, 0.3, 0.3]; crank="darkkhaki"; crank="peru"; piston=[0.87, 0.87, 0.7]; piston=[0.85, 0.85, 0.8]; // Al piston=[0.4, 0.5, 0.7]; // wedgw module crankside() { translate([e, 0, 25]) { difference() { ccyldr(20, 26, $fn=f); rotate([0, 90, 0]) translate([0, 0, 16]) ccyldr(2.5, 10); } translate([0, 0, -14]) ccone(22, 2, 20, $fn=f); translate([0, 0, 14]) ccone(20, 2, 22, $fn=f); } // Outer web hull() { translate([0, 0, 58]) rotate_extrude($fn=f) polygon([ for (i=[0:4:112]) [23.3*sin(i), 6*cos(i)], [0, +2], ]); translate([e/2, 0, 50]) rotate([0, 15, 0]) scale([1.55, 1, 0.5]) sphere(23, $fn=f); translate([e, 0, 42]) rotate_extrude($fn=f) polygon([ for (i=[0:4:112]) [23.3*sin(i), 6*cos(i)], [0, -2], ]); } translate([0, 0, 78]) { ccyldr(20, 34, $fn=100); translate([0, 0, -17]) ccone(22, 2, 20, $fn=100); }} module fastgear25() { difference() { color(steel1) linear_extrude(28, center=true, convexity=3) rotate([0, 0, -4]) gear(25, 37, 2.5); for ( i = [-12-2, 12]) translate([0, 0, i]) color([0.8, 0, 0]) rotate_extrude() translate([21, 0]) offset(3) square([5, 2]); ccyldr(13, 29); }} module fastgear50() { rotate([0, 0, -$t*720]) color(steel1) difference() { linear_extrude(28, center=true, convexity=3) difference() { gear(50, 74, 2.5); circle(62); } translate([0, 0, 14.1]) rotate_extrude() translate([62-0.1, 0]) polygon([ [0, 0], [0.5, 0], [0, -0.5], ]); translate([0, 0, -14.1]) rotate_extrude() translate([62-0.1, 0]) polygon([ [0, 0], [0, 0.5], [0.5, 0], ]); }} module outercrank() { translate([0, 0, 97]) difference() { translate([0, 0, -13]) color([0.8, 0, 0]) rotate_extrude() polygon([ [0, 0], [0, 14], [61.5, 14], [62, 13.5], [62, 0.5], [61.5, 0], ]); // Holes color([0.8, 0, 0]) for ( i = [-60, -120]) rotate([0, 0, i]) translate([b, 0, -14]) cylinder(r=9, h=16); } translate([0, 0, 84]) { color(steel1) translate([0, e, -14]) mirror([0, 0, 1]) cylfoot(24, 2, 7.5); // Cwt { rotate([0, 0, 210]) difference() { translate([0, 0, -38]) color(steel2) union() { rotate_extrude(angle=120) translate([35, 3]) offset(5) square([28, 22]); translate([49, 0, 14]) rotate([90, 0, 0]) rectchamfer(1, 28, 22, 5); rotate([0, 0, 120]) translate([49, 0, 14]) rotate([-90, 0, 0]) rectchamfer(1, 28, 22, 5); } // Holes color(steel3) for ( i = [90, 30]) rotate([0, 0, i]) translate([b, 0, -41]) cylinder(r=9, h=6.1); } /* // D-cwt rotate([0, 0,180]) difference() { intersection() { translate([0, 0, -7/2]) linear_extrude(25+14) polygon([ for (i=[-78 : 1 : 78]) [62*sin(i), 62*cos(i)], ]); rotate([0, 0, 10]) hull() { rotate_extrude(angle=160) translate([20, 4]) offset(7) square([49-7*2, 24]); }} translate([0, 16.3, 31.55]) difference() { ccube(130, 7, 7); translate([0, 3.5, -3.5]) rotate([0, 90, 0]) ccyldr(7, 131); } for ( i = [130, 50]) rotate([0, 0, i]) translate([b, 0, 28]) cylinder(r=9, h=15); }*/ // Crank arm color(steel1) translate([0, 0, -14]) linear_extrude(14) offset(-10) offset(10) polygon([ for ( i = [-25 : 5 : 25]) [62*sin(i), 62*cos(i) ], [26, -8], //for ( i = [115]) //[62*sin(i), 62*cos(i) ], for ( i = [115 : 5 : 245]) [62*sin(i), 62*cos(i) ], //for ( i = [245]) //[62*sin(i), 62*cos(i) ], [-26, -8], ]); // Shaft steps color(steel1) { translate([0, 0, 19]) ccyldr(20, 24); translate([0, 0, 64]) difference() { ccyldr(18, 71); ccyldr(14, 72); }}} // Nuts&bolts color(steel2) for ( i = [270-30, 270+30]) rotate([0, 0, i]) translate([b, 0, -15]) { translate([0, 0, 2.5]) cylinder(r=7, h=53, center=true, $fn=6); translate([0, 0, -20.5]) cylinder(r=4, h=9, center=true); } // Bearings color(steel0) translate([0, 0, 23]) rbearg(20, 360); color(steel0) translate([0, 0, 92]) bbearg(18, 360); }} module bearing() { difference() { union() { rotate_extrude() translate([r+1.25,0]) offset(0.5) square([1.5,6], center=true); rotate_extrude() translate([r+6-0.25,0]) offset(0.5) square([1.5,6], center=true); } rotate_extrude() translate([r+3.5,0]) circle(ball); } rotate([0,0,$t*rot]) for (i=[0:9]) rotate(i*360/10) translate([r+3.5,0]) sphere(ball); } module pistassy() { rotate([0, 90, 0]) color(piston) difference() { union() { // Crosshead linear_extrude(48, convexity=3) difference() { offset(-0) offset(0) { polygon([ for ( i = [-90 : 5 : 90]) [-(12.5-5)/2*sin(i)-5-(12.34-5)/2, i/90*7+37], //[-12.5, 43], for (i = [-15:1:15]) [48*sin(i), 48*cos(i)], //[12.5, 43], for ( i = [90 : -5 : -90]) [-(12.5-5)/2*sin(-i)+5+(12.34-5)/2, i/90*7+37], //[5, 33], //[5, -33], for ( i = [90 : -5 : -90]) [-(12.5-5)/2*sin(i)+5+(12.34-5)/2, i/90*7-37], for (i = [-15:1:15]) [-48*sin(i), -48*cos(i)], //[12, -43], //[-12, -43], for ( i = [-90 : 5 : 90]) [(12.5-5)/2*sin(i)-5-(12.34-5)/2, i/90*7-37], //[-5, -33], //[-5, 33], ]); scale([1, 1.4]) rotate([0, 0, 45]) elliptogon(4, 13.25, 0.75); } // Holes for bolts for ( i = [-(40), (40)]) translate([0, i, 0]) circle(4); } translate([0, 0, 48]) rotate_extrude() translate([10, 0]) circle(0); // Bearing side translate([5, 0, 0]) rotate([90, 0, 90]) rotate_extrude(angle=180) polygon([ [0, -0.1], [0, 7.5], [27, 7.5], for ( i = [90 : 5 : 180]) [-3.2*sin(i)+27+3.2, 3.2*cos(i)+3.2-0.1], ]); // Bearing side translate([-5, 0, 0]) rotate([-90, 180, 90]) rotate_extrude(angle=180) polygon([ [0, -0.1], [0, 7.5], [27, 7.5], for ( i = [90 : 5 : 180]) [-3.2*sin(i)+27+3.2, 3.2*cos(i)+3.2-0.1], ]); } // Bearing eye rotate([0, 90, 0]) ccyldr(21.5, 26); } // Bearing shell rotate([0, 90, 0]) translate([-12.5, 0, 0]) rotate([90, 0.5, 90]) color([0.8, 0.8, 0.8]) color([0.8, 0.7, 0.0]) rotate_extrude(angle=181) translate([20, 0]) square([1.5, 25]); // Rod translate([60+8+8+26, 0, 0]) rotate([0, 90, 0]) color(piston) ccyldr(10, 120); // Piston d=0.3; translate([120+8+8+26, 0, 0]) rotate([0, 90, 0]) color(piston) rotate_extrude() polygon([ for ( i = [0 : 1 : 15]) [(2*e-d)/sin(15)*sin(i), (2*e-d)/sin(15)*cos(i) - (2*e-d)/sin(15)*cos(15)+30], [2*e-d, 30], [2*e-d, 30-5], [2*e+d, 30-5], [2*e+d, 30-8], [2*e-d, 30-8], [2*e-d, 30-11], [2*e+d, 30-11], [2*e+d, 30-14], [2*e-d, 30-14], [2*e-d, 30-17], [2*e+d, 30-17], [2*e+d, 30-20], [2*e-d, 30-20], [2*e-d, 5], for ( i =[-90 : 5 : 95]) [-6*i/180+42, 8*sin(i)+13], for ( i =[95 : 5 : 270]) [-10*i/180+27, 10*sin(i)+6], [0, -4], [0, 30], ]); } module cldr() { render() difference() { linear_extrude(2*(122+118), convexity=3, center=true) difference() { circle(48+6); circle(48); } rotate([0, 90, 0]) hull() { translate([-81, 54, 0]) ccyldr(39, 110); //translate([0, 53, 0]) translate([81, 54, 0]) ccyldr(39, 110); } rotate([0, 90, 0]) hull() { translate([-81, -54, 0]) ccyldr(39, 110); //translate([0, -53, 0]) translate([81, -54, 0]) ccyldr(39, 110); }}} module camshaft(rot) rotate([0, 0, -$t*360]) { color(steel1) linear_extrude(12, center=true) difference() { rotate([0, 0, 4]) gear(56, 48, 1.8); for ( i = [1:1:8]) rotate([0, 0, 360/8*i]) translate([30, 0]) circle(8); circle(12); } rotate([0, 0, rot]) difference() { union() { translate([0, 0, 8]) rotate([180, 0, 0]) color(steel1) cylinder(r=16, h=52); // Cam translate([0, 0, -24]) color(steel0) hull() { cylinder(r=19, h=15); for ( i = [-10, 10]) rotate([0, 0, i]) translate([16, 0, 0]) cylinder(r=10, h=15); } // Cam translate([0, 0, -41]) rotate([0, 0, 90]) color(steel0) hull() { cylinder(r=19, h=15); for ( i = [-10, 10]) rotate([0, 0, i]) translate([16, 0, 0]) cylinder(r=10, h=15); }} translate([0, 0, 8.5]) rotate([180, 0, 0]) color(steel2) cylinder(r=12, h=54); }} module txm() { window = [876, 640]; translate($vpt) rotate($vpr) scale($vpd / window.y) scale( tan($vpf) / tan(22.5-0.70) ) translate([x,y,z]) rotate([X,Y,Z]) linear_extrude(0.001) text(txt, valign = "center", halign = side, font="Times New Roman", size=s); } color("black") { txm(x=-205, y=120, z=0, X=0, Y=0, Z=0, side="left",txt="Balandin MB4 engine", s=8); txm(x=-205, y=-120, z=80, // normal view //txm(x=-195, y=-117, z=80, // persp. view X=0, Y=0, Z=0, side="left",txt="Double-slider compound-eccentric mechanism", s=7); } // Inner crankshaft rotate([0, 0, $t*720+180]) translate([0, e, 0]) rotate([0, 0, -$t*1440-90]) color(crank) { // Middle web color(steel1) difference() { hull($fn=f) { translate([-e, 0, -8]) rotate_extrude() polygon([ for (i=[0:4:112]) [23.3*sin(i), 6*cos(i)], //[22, -2], [0, -2], ]); translate([e, 0, 8]) mirror([0, 0, 1]) rotate_extrude() polygon([ for (i=[0:4:112]) [23.3*sin(i), 6*cos(i)], //[22, -2], [0, -2], ]); for ( i = [-1, 1]) translate([11*i, 0, 0]) scale([2, 2, 1]) sphere(10); } // Holes translate([-27, 0, 4]) ccyldr(12, 15); translate([27, 0, -4]) ccyldr(12, 15); } color([0.5, 0.5, 0.4]) { for ( i = [-1, 1]) translate([27*i, 0, 3.9*i]) { circle(12); rotate_extrude() translate([11.5, 0]) circle(1.5); }} color(steel1) { crankside(); rotate([0, 180, 0]) crankside(); }} // Outer cranks rotate([0, 0, $t*720+180]) { outercrank(); mirror([0, 0, 1]) outercrank(); } for (i=[-1, 1]) translate([0, 0, 84*i]) fastgear50(); // Drive end translate([0, 0, 70+28/2+64+70-3]) rotate([0, 0, $t*720]) { color(steel1) difference() { ccyldr(16, 70); for ( i = [1: 8]) rotate([0, 0, 360/8*i]) rotate_extrude(angle=360/16) translate([16, 10.1]) csquare(6, 50); } translate([0, 0, 47]) /* difference() { color(steel1) union() { ccyldr(13, 20); translate([0, 0, 10.5]) ccone(13, 1, 12); } color(steel2) ccyldr(10, 23); translate([0, 0, 5]) rotate([0, 90, 0]) color(steel2) ccyldr(2, 27); } */ color(steel1) difference() { intersection() { poly= [ [-2.5,-1], [-2.5,1], [0,1] , [1.7-0.17, 0.1], [1.7-0.17, -0.1], [0,-1]]; spiral_sweep(poly, h=26, r=11, turns=13); ccyldr(14, 24); } translate([0, 0, 8]) rotate([0, 90, 0]) color(steel2) ccyldr(2, 27); } /* */ } // Timing (s) and accessory gears for ( i = [-122, 160]) translate([0, 0, i]) rotate([0, 0, $t*720]) color(steel1) linear_extrude(12, center=true) gear(28, 24, 1.8); // Timing gears (l) & camshafts for ( i = [0:3]) rotate([0, 0, 90*i]) translate([72, 0, 160]) camshaft(rot=45*i); // 0 // Sync shaft rotate([0, 0, -45]) translate([0, 74*1.5, 0]) { rotate([0, 0, -$t*1440]) difference() { color(steel1) ccyldr(13, 210); color(steel2) ccyldr(10, 211); } for ( i = [-64, 64]) color(steel0) translate([0, 0, i]) bbearg(13, 1440); // Aux end / bevel gear translate([0, 0, -155]) color(steel1) { translate([0, 0, 5]) rotate([0, 180, $t*1440]) // reverse intersection() { bevelgear(7, 20, 25, 1.3); rotate([180, 0, 0]) ccone(25, 7, 18.5); } rotate([0, 0, -$t*1440]) { translate([0, 0, -8]) cylinder(r=5, h=60); translate([0, 0, -5]) cylinder(r=8, h=5, $fn=6); cylinder(r=9, h=16); translate([0, 0, 12.5]) bbearg(9, -1440); translate([0, 0, 43]) cylinder(r=10, h=10); }} for ( i = [-1, 1]) translate([0, 0, 84*i]) rotate([0, 0, $t*1440]) // reverse fastgear25(); } // Pistons translate([0, -2*e*sin($t*720+90), -25]) rotate([0, 0, -90]) pistassy(); translate([-2*e*cos($t*720+90), 0, 25]) { pistassy(); //mirror([1, 0, 0]) //pistassy(); } /* // Y-cylinders color("lightgrey", 0.2) for ( i = [-1, -1]) translate([0, 0, -25]) rotate([90, 0, 0]) cldr(); // X-cylinders color("lightgrey", 0.3) for ( i = [1, 1]) translate([0, 0, 25]) rotate([90, 0, 90]) cldr(); */ /// Watermark color ("white", 0.2) { for(x = [-180 : 120 : 180]) for(y = [-180*tan(30) : 120*tan(30) : 180*tan(30)]) txm(x=x, y=y, z=40, X=0, Y=0, Z=30, side="center", txt="Mayer MultiFAZE", s=7); for(x = [-120 : 120 : 120]) for(y = [-120*tan(30) : 120*tan(30) : 120*tan(30)]) txm(x=x, y=y, z=40, X=0, Y=0, Z=-30, side="center", txt="Since 1982", s=7); }