Tylon

OpenScad Knob

Mar 12th, 2021 (edited)
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. /*[[Parameters]]*/
  2. //knob height
  3. KnobHeight = 7;
  4. //Number of rimpels of the Knob
  5. NumberOfSides=24;
  6. //Diameter of the knob
  7. Durchmesser = 24;
  8. //rimple from 0.5 to ......
  9. rimple=0.6;
  10. //Height of the axel
  11. heightAxel = 15;
  12. //Outer diameter of Axel
  13. AussenDurchmesser = 10;
  14. //Inner diameter of axel
  15. InnenDurchmesser = 4.4;
  16.  
  17.  
  18. /*[[Extra Nut settings]]*/
  19. InsertExtraNut = 0;
  20. //Nut Diameter
  21. NutDiameter = 0;
  22. //NutHeight
  23. NutHeight = 24.6;
  24.  
  25. OuterDiameter = AussenDurchmesser/2;
  26. InnerDiameter = InnenDurchmesser/2;
  27. radius=Durchmesser/2;
  28.  
  29. $fn=72;
  30. Cr =radius*sin(180/NumberOfSides);
  31. offset= sqrt(pow(radius,2)-pow(Cr,2));
  32.  
  33. echo(Cr);
  34. echo(offset);
  35.  
  36. module oval()
  37. {
  38. scale([rimple,1,1])
  39. circle(r=Cr);
  40. }
  41.  
  42. module knob()
  43. {
  44. linear_extrude(height=KnobHeight)
  45. difference(){
  46. union(){
  47. circle(r=radius,$fn=NumberOfSides);
  48. for(a=[0:360/NumberOfSides*2:360])
  49. {
  50. rotate(a,0,0)translate([offset,0,0])oval();
  51. }
  52. }
  53. for(a=[360/NumberOfSides:360/NumberOfSides*2:360])
  54. {
  55. rotate(a,0,0)translate([offset,0,0])oval();
  56. }
  57. }
  58. }
  59.  
  60. module Main(){
  61. render(10)
  62. difference(){
  63. union(){
  64. knob();
  65. cylinder(r=OuterDiameter,h=heightAxel);
  66. };
  67. cylinder(r=InnerDiameter,h=heightAxel);
  68. if (InsertExtraNut==1){
  69. translate([0,InnerDiameter+1.25,heightAxel-5.4])NutInMaterial();
  70. mirror([0,1,0])
  71. translate([0,InnerDiameter+1.25,heightAxel-5.4])NutInMaterial();
  72. }
  73. difference(){
  74. cylinder(r=NutDiameter, h=NutHeight, $fn=6);
  75. cylinder(r=InnerDiameter+0.5,h=NutHeight);
  76.  
  77. }
  78. };
  79.  
  80. }
  81.  
  82. module NutInMaterial()
  83. {
  84. rotate([-90,0,0])
  85. union(){
  86. cylinder(r=2.7,h=2.3,$fn=6, center=true);
  87. translate([0,-3.2,0])cube([5.4,6.4,2.3],center=true);
  88. translate([0,0,-2.7])cylinder(r=1.65, h=10, $fn=24);
  89. }
  90. }
  91.  
  92. //TEST difference
  93. module torus(r1, r2, h, center=false) {
  94. torus_pipe_r=(r2-r1)/2;
  95. translate([0,0,center?0:h/2])
  96. rotate_extrude(convexity = 10)
  97. translate([r2-torus_pipe_r, 0, 0])
  98. scale([1,1/(torus_pipe_r*2)*h,1])
  99. circle(r = torus_pipe_r);
  100. }
  101.  
  102. module cylinder_to_plate(r1,r2, h, center=false) {
  103. translate([0,0,center?-h/2:KnobHeight])
  104. difference() {
  105. difference() {
  106. cylinder(h=h,r1=r2,r2=r2);
  107. cylinder(h=h,r1=r1,r2=r1);
  108. }
  109. torus(r1=r1, r2=r2+r2-r1,h=h*2);
  110. }
  111. }
  112.  
  113. //cylinder(h=25,r1=5, r2=5);
  114. cylinder_to_plate(r1=OuterDiameter,r2=(Durchmesser/2)-rimple*2,h=(heightAxel-KnobHeight)/1.5);
  115. //TEST
  116. //NutInMaterial();
  117. Main();
  118.  
  119.  
Add Comment
Please, Sign In to add comment