Labels Milestones
BackDistanceBetweenKnurls = 3*1; TimerKnobConst = 1.8*1; PI=3.14159265*1; KnobMajorRadius = KnobDiameter/2; KnobMinorRadius = KnobDiameter/2 * (1 - TaperPercentage/100); KnobRadius = KnobMinorRadius + (KnobMajorRadius-KnobMinorRadius)/2; KnobCircumference = PI*KnobDiameter; Knurls = round(KnobCircumference/DistanceBetweenKnurls); Divot=CapType; TaperAngle=asin(KnobHeight / (sqrt(pow(KnobHeight, 2) + pow(KnobMajorRadius-KnobMinorRadius,2)))) - 90; DivotRadius = KnobMinorRadius*.4; // Primary knob cylinder for (i=[0 : Knurls-1] rotate([0, 0, 45] cube([2, 2, KnobHeight+.001], center=true); cube([RingWidth*.5, MarkingWidth, 2], center=true); cube([8, 3, KnobHeight], center=true); if (style == "nut"){ // a round cutout (to use an m3 heat-set insert //hole(s) for anchor // visual indicator of space pot body takes up // visual indicator of space switch takes up } module knurled_finish(ord, ird, lf, sh, fn, rn [ ord*cos(lf2), ord*sin(lf2), h0], [ ird*cos(lf1), ird*sin(lf1), h0], [ ird*cos(lf1), ird*sin(lf1), h2], [ ird*cos(lf1), ird*sin(lf1), h0], [ ird*cos(lf0), ird*sin(lf0), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ord*cos(lf1), ord*sin(lf1), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ord*cos(lf0), ord*sin(lf0), h0], [ ird*cos(lf1), ird*sin(lf1), h2], [ ird*cos(lf1), ird*sin(lf1), h0], [ ird*cos(lf0), ird*sin(lf0), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ird*cos(lf2), ird*sin(lf2), h1], [ ord*cos(lf0), ord*sin(lf0), h2], [ ord*cos(lf2), ord*sin(lf2), h2] ], triangles=[ [0,1,2],[2,3,0], [1,0,4],[4,0,7],[7,8,4], [8,7,9],[10,9,7], [10,7,6],[6,7,0],[3,6,0], [2,1,4],[3,2,6],[10,6,9],[8,9,4], [4,5,2],[2,5,6],[6,5,9],[9,5,4] ], convexity=5); } } module mounting_hole_m3(h=thickness, flange=8, style="nut"){ cube([flange, flange, h], center=true); if (RingWidth>0 cylinder(r1=KnobMajorRadius + RingWidth, r2=KnobMinorRadius, h=RingThickness, $fn=50, center=true); if (RingMarkings>0 for (i=[0 : RingMarkings-1] rotate([0, 0, i * (360/RingMarkings)] cube([RingWidth*.5, MarkingWidth, 2], center=true); if (style == "nut"){ } module.
New Pull Request