OpenSCAD - tworzenie własnego modułu rysującego obiekty parametryczne
Stronę tą wyświetlono już: 1295 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:
- module bearing(dz = 120, dw = 60, n = 8, $fn = $fn){
- h = (dz - dw) / 2;
- g = 2;
- rk = h / 3;
- ray = (dz + dw) / 4;
- for(angle = [0 : 360 / n : 360]){
- rotate([0, 0, angle])
- translate([ray, 0, 0]){
- sphere(r = rk);
- }
- }
- difference(){
- difference(){
- union(){
- cylinder(r = ray + rk / 2, h = 5, center = true);
- for(angle = [0 : 360 / n : 360]){
- rotate([0, 0, angle])
- translate([ray, 0, 0]){
- difference(){
- sphere(r = rk + g);
- sphere(r = rk);
- }
- }
- }
- }
- // I cut inside part
- cylinder(r = ray - rk / 2, h = 3 * rk, center = true);
- }
- // I cut outside part
- difference(){
- cylinder(r = (ray + rk * 2) * 2, rk * 4, center = true);
- cylinder( r = ray + rk / 2, h = rk * 5, center = true);
- }
- }
- difference(){
- cylinder(r = ray - rk / 1.5, h = h, center = true);
- cylinder(r = dw / 2, h = h + 1, center = true);
- rotate_extrude(angle = 360)
- translate([ray, 0, 0])
- circle(r = rk, center = true);
- }
- difference(){
- cylinder(r = dz / 2, h = h, center = true);
- cylinder(r = ray + rk / 1.5, h = h + 1, center = true);
- rotate_extrude(angle = 360)
- translate([ray, 0, 0])
- circle(r = rk, center = true);
- }
- }
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
- rotate([90, 0, 0])
- color([.8, .8 , .8])
- bearing(120, 60, 8);