OpenSCAD - tworzenie własnego modułu rysującego obiekty parametryczne

Stronę tą wyświetlono już: 103 razy

OpenSCAD pozwala na tworzenie własnych modułów, których konstrukcja umożliwia tworzenie obiektów 2W czy też 3W. Moduły w odróżnieniu od funkcji nie mogą zwracać żadnych wartości liczbowych, zaś funkcje nie mogą tworzyć żadnych obiektów a jedynie generować dane niezbędne do ich utworzenia.

Konstrukcja modułu składa się z słowa kluczowego module, następującej po nim nazwy modułu, listy parametrów i ciała, gdzie umieszczane są instrukcje. Oto przykładowy kod takiego modułu, który generuje model łożyska kulkowego:

Listing 1
  1. module bearing(dz = 120, dw = 60, n = 8, $fn = $fn){
  2. h = (dz - dw) / 2;
  3. g = 2;
  4. rk = h / 3;
  5. ray = (dz + dw) / 4;
  6. for(angle = [0 : 360 / n : 360]){
  7. rotate([0, 0, angle])
  8. translate([ray, 0, 0]){
  9. sphere(r = rk);
  10. }
  11. }
  12. difference(){
  13. difference(){
  14. union(){
  15. cylinder(r = ray + rk / 2, h = 5, center = true);
  16. for(angle = [0 : 360 / n : 360]){
  17. rotate([0, 0, angle])
  18. translate([ray, 0, 0]){
  19. difference(){
  20. sphere(r = rk + g);
  21. sphere(r = rk);
  22. }
  23. }
  24. }
  25. }
  26. // I cut inside part
  27. cylinder(r = ray - rk / 2, h = 3 * rk, center = true);
  28. }
  29. // I cut outside part
  30. difference(){
  31. cylinder(r = (ray + rk * 2) * 2, rk * 4, center = true);
  32. cylinder( r = ray + rk / 2, h = rk * 5, center = true);
  33. }
  34. }
  35. difference(){
  36. cylinder(r = ray - rk / 1.5, h = h, center = true);
  37. cylinder(r = dw / 2, h = h + 1, center = true);
  38. rotate_extrude(angle = 360)
  39. translate([ray, 0, 0])
  40. circle(r = rk, center = true);
  41. }
  42. difference(){
  43. cylinder(r = dz / 2, h = h, center = true);
  44. cylinder(r = ray + rk / 1.5, h = h + 1, center = true);
  45. rotate_extrude(angle = 360)
  46. translate([ray, 0, 0])
  47. circle(r = rk, center = true);
  48. }
  49. }

Jak widać, moduł bearing (łożysko) przyjmuje kilka następujących parametrów:

  • dz - średnica zewnętrzna łożyska;
  • dw - średnica wewnętrzna łożyska;
  • n - liczba kulek;
  • $fn - parametr sterujący dokładnością rysowania kształtu

Poniżej można zobaczyć przykładowe łożysko wygenerowane tym skryptem.

OpenSCAD - łożysko kulkowe wygenerowane za pomocą modułu
Rys. 1

OpenSCAD - łożysko kulkowe wygenerowane za pomocą modułu

Listing 2
  1. rotate([90, 0, 0])
  2. color([.8, .8 , .8])
  3. bearing(120, 60, 8);

Komentarze