Spielstein2.scad 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /* [OpenSCAD] */
  2. $fn=90;
  3. //* [Spielstein] */
  4. // Form, Größe, Füllung
  5. //Form = 0; // [0:Eckig, 1:Rund]
  6. //Size = 1; // [0:Klein, 1:Groß]
  7. //Hohl = 0; // [0:Nein, 1:Ja]
  8. /* [Maße] */
  9. // Breite bzw. Durchmesser
  10. Breite = 20;
  11. // Höhe [lang, kurz] +5mm
  12. Hoehe = [20, 30];
  13. /* [Spielstein] */
  14. // Loch für Magnet im Fuß
  15. Magnet = 0; // [0:Nein, 1:Ja]
  16. /* [Hidden] */
  17. /////////////////////////////////////////////////////////////
  18. translate([0,15,0]) spielstein(0,0,0);
  19. translate([30,15,0]) spielstein(0,0,1);
  20. translate([60,15,0]) spielstein(0,1,0);
  21. translate([90,15,0]) spielstein(0,1,1);
  22. translate([0,-15,0]) spielstein(1,0,0);
  23. translate([30,-15,0]) spielstein(1,0,1);
  24. translate([60,-15,0]) spielstein(1,1,0);
  25. translate([90,-15,0]) spielstein(1,1,1);
  26. /////////////////////////////////////////////////////////////
  27. // Param: Form, Size, Hohl
  28. module spielstein(F,S,H) {
  29. difference() {
  30. union() {
  31. if (F==0) {
  32. eckig(F,S,H);
  33. }
  34. else {
  35. rund(F,S,H);
  36. }
  37. }
  38. if (Magnet==1) {
  39. translate([0,0,-0.01]) union() {
  40. cylinder(d=3, h=5);
  41. translate([0,0,5]) cylinder(d1=3, d2=1, h=1.5);
  42. }
  43. rotate([90,0,0]) cylinder(d=1, h=2*Breite, center=true);
  44. rotate([90,0,90]) cylinder(d=1, h=2*Breite, center=true);
  45. translate([0,0,0.5*Hoehe[S]]) cylinder(d=1, h=2*Hoehe[S], center=true);
  46. // Luer-Konus fuer Spritze
  47. translate([0,0,0.75]) mirror([0,0,1]) cylinder(d1=4.0, d2=4.3, h=7.5);
  48. }
  49. }
  50. }
  51. module eckig_umfang(hoehe) {
  52. Kanten_Radius = 1.5;
  53. hull() {
  54. for (i=[0:90:360]) {
  55. rotate([0,0,i]) translate([ (Breite/2-Kanten_Radius), (Breite/2-Kanten_Radius), 0]) cylinder(r=Kanten_Radius, h=hoehe);
  56. }
  57. }
  58. }
  59. module oben(F){
  60. intersection(){
  61. translate([0,0,-20]) sphere(25);
  62. if (F==1) {
  63. translate([0,0,3]) cylinder(d=Breite, h=6, center=true);
  64. }
  65. else {
  66. eckig_umfang(6);
  67. }
  68. }
  69. }
  70. module eckig(F,S,H) {
  71. difference() {
  72. hull() {
  73. translate([0,0,Hoehe[S]]) oben(F);
  74. eckig_umfang(2);
  75. }
  76. if (H==1) {
  77. translate([0,0,Hoehe[S]+5]) cylinder(d=8, h=10, center=true);
  78. }
  79. translate([0,0,8]) for (i=[0:90:360]) {
  80. rotate([0,0,i]) translate([Breite/2,0,0]) rotate([90,0,0]) cylinder(d=2, h=2*Breite, center=true);
  81. }
  82. }
  83. }
  84. module rund(F,S,H) {
  85. difference() {
  86. hull() {
  87. translate([0,0,Hoehe[S]]) oben(F);
  88. translate([0,0,1]) cylinder(d=Breite, h=2, center=true);
  89. }
  90. if (H==1) {
  91. translate([0,0,Hoehe[S]+5]) cylinder(d=8, h=10, center=true);
  92. }
  93. translate([0,0,8]) rotate_extrude() translate([Breite/2,0]) circle(d=2);
  94. }
  95. }