$fn=128; Riem_Getwist (12,120,400,10,1,25,8,5,4,0); module Riem_Getwist (wielbreedte,wieldia,hartafstand,riembreedte,riemdikte,naafdia,asdia,spaakdikte,spaakaantal,stand) { // berekening helling=asin(wieldia/hartafstand); lengte=wieldia/tan(helling); echo("helling=",helling); echo("lengte=",lengte); // 3D beeld // 2x getwist riemdeel tussen de schijven color ("SaddleBrown") for (i=[0,1]) mirror ([0,i,0]) translate ([hartafstand/2,0,0]) rotate ([0,0,-helling]) rotate ([0,90,0]) translate ([0,0,-lengte/2]){ linear_extrude (height=wieldia/tan(helling),convexity=10,twist=180) { translate ([-riembreedte/2,-riemdikte/2,0]) square ([riembreedte,riemdikte]); }; }; // 2x omspannen boog color ("SaddleBrown") for (i=[0,1]) translate ([i*hartafstand,0,0]) rotate ([0,i*180,0]) rotate ([0,0,90-helling]) rotate_extrude (angle=180+2*helling,convexity=10) translate ([wieldia/2-riemdikte/2,-riembreedte/2,]) square ([riemdikte,riembreedte]); // eerste schijf (in de oorsprong) translate ([0,0,0]) rotate ([0,0,-$t*90]) Riemschijf (wielbreedte,wieldia,naafdia,asdia,spaakdikte,spaakaantal,stand); // tweede schijf (op hartafstand) translate ([hartafstand,0,0]) rotate ([0,0,$t*90]) Riemschijf (wielbreedte,wieldia,naafdia,asdia,spaakdikte,spaakaantal,stand); }; // einde module Riem_Getwist module Riemschijf (wielbreedte,wieldia,naafdia,asdia,spaakdikte,spaakaantal,stand) { // velg color ([0.6,0.63,0.67]) rotate_extrude (angle=360,convexity=10) { translate ([wieldia/2-1,-wielbreedte/2,0]) square ([1.2,wielbreedte]); translate ([wieldia/2-1.3,0,0]) circle (1.2); }; // naaf met asgat color ([0.4,0.4,0.4,1]) difference() { union() { translate ([0,0,-wielbreedte/2]) cylinder (wielbreedte,naafdia/2,naafdia/2); // spaken for (i=[0:1:spaakaantal-1]) rotate ([0,0,i*(360/spaakaantal)+stand]) scale ([1,1,0.6]) rotate ([0,90,0]) cylinder ((wieldia/2-0.4),spaakdikte,0.85*spaakdikte); }; translate ([0,0,-wielbreedte]) cylinder (2*wielbreedte,asdia/2,asdia/2); }; }; // einde module Riemschijf