My self-made 3D-printable designs, mainly in OpenSCAD
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

NecksCaps.scad 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. // Necks & Caps for DIY projects
  2. // Xavan June 2016
  3. //https://www.thingiverse.com/thing:1654620
  4. //***** Bouchons / Caps *****
  5. //38mm3start ();
  6. //28PCO1810 ();
  7. //28PCO1881 ();
  8. //TestMotif ();
  9. //***** Goulots / Necks *****
  10. //N38mm3start ();
  11. //N28PCO1810 ();
  12. //N28PCO1881 ();
  13. //TestMotif (); // threadform test
  14. //***** ************ *****
  15. $fn=64;
  16. module screw (Sta,End,Pas,Ray){ // filet - thread
  17. Ste=5;//pas angulaire
  18. //Pas mm/360°
  19. //Ray rayon centre du motif
  20. //Sta angle de départ
  21. //End angle de fin
  22. for (Rz = [Sta:Ste:End]) {//Rz rotation Z
  23. a= Rz>Sta ? 1: 0;
  24. b= Rz<End ? 1: 0;
  25. Ap=Pas*(Rz-Sta)/360;//Ap avancement du pas en Z
  26. Ap1=Ap+Pas*Ste/360;//Ap1 avancement du pas en Z+1
  27. hull (){
  28. rotate ([0,0,Rz])translate([Ray,0,Ap])motif (a);
  29. rotate ([0,0,Rz+Ste]) translate([Ray,0,Ap1])motif (b);
  30. }
  31. }
  32. }
  33. module motif (a){//trapeze - threadform
  34. //$Z1 largeur base
  35. //$Z2 largeur sommet
  36. //$X1 distance base sommet
  37. // dans le plan x-z
  38. cube([0.1,0.1,$Z1],true);
  39. translate([-a*$X1,0,0])cube([0.1,0.1,$Z2],true);
  40. }
  41. module bouchon (Rb,Hb,Ep,Nc){//cap
  42. //Rb ray bouchon interieur
  43. //Hb haut bouchon interieur
  44. //Eb epais bouchon
  45. //Nc nb crans
  46. difference(){
  47. translate ([0,0,(Hb+Ep)/2])cylinder(Hb+Ep, r=Rb+Ep, center=true);
  48. translate ([0,0,(Ep)/2])
  49. translate ([0,0,Hb/2+Ep])cylinder(Hb, r=Rb, center=true);
  50. }
  51. // crans
  52. for (Rz = [0:360/Nc:360]) {
  53. rotate ([0,0,Rz])translate ([Rb+Ep,0,Hb/2+Ep])cube([Ep/2,Ep,Hb],true);
  54. }
  55. }
  56. module goulot (Rb,Hb,Ep){//neck
  57. //Rb ray goulot exterieur
  58. //Hb haut goulot
  59. //Eb epais goulot
  60. difference(){
  61. union(){
  62. hull(){//exterieur
  63. translate ([0,0,Hb/2])cylinder(Hb, r=Rb-Ep/3, center=true);translate ([0,0,(Hb-Ep/3)/2])cylinder(Hb-Ep/3, r=Rb, center=true);
  64. }
  65. hull(){//base
  66. translate ([0,0,Ep/4])cylinder(Ep/2, r=Rb+Ep, center=true);
  67. translate ([0,0,Ep/2])cylinder(Ep, r=Rb, center=true);
  68. }
  69. }
  70. translate ([0,0,Hb/2])cylinder(Hb, r=Rb-Ep, center=true); //interieur
  71. }
  72. }
  73. module TestMotif (){
  74. $Z1=2;//largeur base
  75. $Z2=1;//largeur sommet
  76. $X1=1;//distance base sommet (std 1.0)
  77. hull(){
  78. motif (1);
  79. }
  80. }
  81. //****************BOUCHONS-CAPS*********************
  82. module 38mm3start () {
  83. jeu=0.5;//jeu
  84. Ray=38/2+jeu;//rayon centre du motif
  85. Pas=9;//pas de vis
  86. Ep=1.5;//épaisseur bouchon
  87. Ej=0;//épaisseur joint gasket
  88. Dd=1.5+Ej+(Pas/3)/2;//distance demarrage depuis la base
  89. Df=2;//distance fin
  90. $Z1=2;//largeur base
  91. $Z2=1;//largeur sommet
  92. $X1=1;//distance base sommet (std 1.0)
  93. translate([0,0,Ep+Dd]){
  94. screw (0,180,Pas,Ray);
  95. screw (120,300,Pas,Ray);
  96. screw (240,420,Pas,Ray);
  97. }
  98. bouchon (Ray,Dd+Pas/2+Df,Ep,32);
  99. }
  100. module 28PCO1810 () {
  101. jeu=0.5;//jeu
  102. Ray=27.43/2+jeu;//rayon centre du motif
  103. Pas=3.18;//pas de vis
  104. Ep=1;//épaisseur bouchon
  105. Ej=0;//épaisseur joint gasket
  106. Dd=1.5+Ej+Pas/2;//distance demarrage depuis la base
  107. Df=2;//distance fin
  108. $Z1=2;//largeur base
  109. $Z2=1;//largeur sommet
  110. $X1=1.1;//distance base sommet (std 1.18)
  111. translate([0,0,Ep+Dd]){
  112. screw (0,720,Pas,Ray);
  113. }
  114. bouchon (Ray,Dd+2*Pas+Df,Ep,48);
  115. }
  116. module 28PCO1881 () {
  117. jeu=0.5;//jeu
  118. Ray=27.40/2+jeu;//rayon centre du motif
  119. Pas=2.7;//pas de vis
  120. Ep=1;//épaisseur bouchon
  121. Ej=0;//épaisseur joint gasket
  122. Dd=1.5+Ej+Pas/2;//distance demarrage depuis la base
  123. Df=2;//distance fin
  124. $Z1=1.8;//largeur base
  125. $Z2=0.8;//largeur sommet
  126. $X1=1.1;//distance base sommet (std 1.165)
  127. translate([0,0,Ep+Dd]){
  128. screw (0,650,Pas,Ray);
  129. }
  130. bouchon (Ray,Dd+2*Pas+Df,Ep,48);
  131. }
  132. //******************GOULOTS-NECKS*******************
  133. module N28PCO1810 () {
  134. Ray=25.07/2;//rayon externe
  135. Pas=3.18;//pas de vis
  136. Ep=1.7;//épaisseur bouchon
  137. Dd=13;//hauteur depuis l'épaulement
  138. Df=1.7;//distance fin
  139. $Z1=2;//largeur base
  140. $Z2=1;//largeur sommet
  141. $X1=-1;//distance base sommet (std 1.0)
  142. translate([0,0,Dd+Ep-Df-2*Pas-$Z1/2]){
  143. screw (0,720,Pas,Ray);
  144. }
  145. goulot (Ray,Dd+Ep,Ep);
  146. }
  147. module N28PCO1881 () {
  148. Ray=25.07/2;//rayon externe
  149. Pas=2.7;//pas de vis
  150. Ep=1.0;//épaisseur bouchon
  151. Dd=10;//hauteur depuis l'épaulement
  152. Df=1.7;//distance fin
  153. $Z1=1.8;//largeur base
  154. $Z2=0.8;//largeur sommet
  155. $X1=-1.1;//distance base sommet (std 1.165)
  156. translate([0,0,Dd+Ep-Df-650*Pas/360-$Z1/2]){
  157. screw (0,650,Pas,Ray);
  158. }
  159. goulot (Ray,Dd+Ep,Ep);
  160. }
  161. module N38mm3start () {
  162. Ray=36/2;//rayon externe
  163. Pas=9;//pas de vis
  164. Ep=1.4;//épaisseur bouchon
  165. Dd=9.2;//hauteur depuis l'épaulement
  166. Df=1.5;//distance fin
  167. $Z1=2;//largeur base
  168. $Z2=1;//largeur sommet
  169. $X1=-1;//distance base sommet (std 1.165)
  170. translate([0,0,Dd+Ep-Df-Pas/2-$Z1/2]){
  171. screw (0,180,Pas,Ray);
  172. screw (120,300,Pas,Ray);
  173. screw (240,420,Pas,Ray);
  174. }
  175. difference(){
  176. goulot (Ray,Dd+Ep,Ep);
  177. //biseautage
  178. translate ([0,0,Dd])cylinder(h=2*Ep, r1=Ray-Ep, r2=Ray-Ep/1.5, center=true);
  179. }
  180. }