#local GearPCD= function(nTeeth) {nTeeth*.221875} #local rnd=function(r) { mod(sin(r*r*5003), 919) } #local RadialPanels=function(x, y, a) { rnd(int(sqrt((x*x)+(y*y))*a)/a) } #declare tDull= texture { pigment{colour rgb<1, 1, .9>} finish { ambient 0.25 brilliance 4 diffuse 0.5 metallic specular 0.80 roughness 1/7 reflection 0.5 phong .125 phong_size 5 } } #declare tShiny= texture { pigment{colour rgb<1, 1, .9>} finish { ambient 0.25 brilliance 4 diffuse 0.5 metallic specular 0.80 roughness 1/20 reflection 0.5 phong .875 phong_size 20 } } #declare tLathed= texture { function{RadialPanels(x/12, y/12, 10)} texture_map { [0.0 tDull] [1.0 tShiny] } scale .1 } #macro Gear(nTeeth) #local PCD=nTeeth*.221875; union { #if(nTeeth>15) difference { cylinder{<0, 0, -.5>, <0, 0, .5>, PCD-.65} cylinder{<0, 0, -1>, <0, 0, 1>, PCD-1.65} } difference { cylinder{<0, 0, -.5>, <0, 0, .5>, 2.5} cylinder{<0, 0, -1>, <0, 0, 1>, 1.55} box{<-.55, 0, -1>, <.55, 2, 1>} text { ttf "arialbd.ttf" str(nTeeth, 0, 0), .1, 0 rotate<0, 0, 180> translate<.5, -1.6, .45> } } difference { cylinder{<0, 0, -.25>, <0, 0, .25>, PCD-1} cylinder{<0, 0, -1>, <0, 0, 1>, 2} } #end #local rz=0; #while(rz<360) intersection { intersection { cylinder{<0, 0, -.5>, <0, 0, .5>, 1 translate<0, -.5, 0>} cylinder{<0, 0, -.5001>, <0, 0, .5001>, 1 translate<0, .5, 0>} scale<1.25, 1, 1> translate rotate <0, 0, rz> } difference { cylinder{<0, 0, -.5002>, <0, 0, .5002>, PCD+.3} cylinder{<0, 0, -.5003>, <0, 0, .5003>, PCD-1.1} } } #local rz=rz+(360/nTeeth); #end } #end #macro SimpleGear(nTeeth) #local PCD=nTeeth*.221875; union { cylinder{<0, 0, -.5>, <0, 0, .5>, PCD-.65} #local rz=0; #while(rz<360) intersection { intersection { cylinder{<0, 0, -.5>, <0, 0, .5>, 1 translate<0, -.5, 0>} cylinder{<0, 0, -.5001>, <0, 0, .5001>, 1 translate<0, .5, 0>} scale<1.25, 1, 1> translate rotate <0, 0, rz> } difference { cylinder{<0, 0, -.5002>, <0, 0, .5002>, PCD+.3} cylinder{<0, 0, -.5003>, <0, 0, .5003>, PCD-1.1} } } #local rz=rz+(360/nTeeth); #end } #end #macro PlasticGear40() #local PCD=40*.221875; union { difference { cylinder{<0, 0, -.5>, <0, 0, .5>, PCD-.65} cylinder{<0, 0, -1>, <0, 0, 1>, .555} #local rz=0; #while(rz<360) cylinder{<0, 0, -1>, <0, 0, 1>, .555 translate<3.333, 0, 0> rotate<0, 0, rz>} #local rz=rz+45; #end #local rz=0; #while(rz<360) cylinder{<0, 0, -1>, <0, 0, 1>, .555 translate<6.666, 0, 0> rotate<0, 0, rz>} #local rz=rz+30; #end } #local rz=0; #while(rz<360) intersection { intersection { cylinder{<0, 0, -.5>, <0, 0, .5>, 1 translate<0, -.51, 0>} cylinder{<0, 0, -.5001>, <0, 0, .5001>, 1 translate<0, .51, 0>} scale<1.25, 1, 1> translate rotate <0, 0, rz> } } #local rz=rz+(360/40); #end scale<2.25, 2.25, 6> } #end