Operácie

OpenSCAD

Zo stránky SensorWiki

Verzia z 11:06, 29. marec 2020, ktorú vytvoril Balogh (diskusia | príspevky)

OpenSCAD je voľne dostupný softvér pre počítačom podporovanú CAD (computer-aided design) tvorbu 3D objektov. Je založený na skriptovacom jazyku, ktorým sú jednotlivé objekty vytvárané. Graficky sa dajú len prezerať a natáčať, ale nedá sa pracovať interaktívne s myšou. Základom jazyka sú primitívne geometrické útvary (napr. guľa, hranol, valec a pod.) a tieto modifikujeme pomocou základných geometrických a matematických operácií (napr. posun, prienik, rozdiel a pod.) čím vznikne požadovaný objekt -- 3D model. Program je zástupcom programov skupiny CSG -- t.j. constructive solid geometry (CSG). Softvér existuje vo verzii pre Windows, Linux aj OS X.

Príklady:


Príklady:

    cylinder(d=6,h=10);
Jednoduchý valec


Kompilácia a rendrovanie modelu

Príkaz pre vykreslenie valčeka vložíme do príkazového okna a skompilujeme ho klávesou F5. Ak bol preklad úspešný, zároveň uvidíte v pravom okne náhľad objektu. Ak potrebujete kvalitný obraz, vyrendrujte ho klávesou F6, ale počítajte s dlhším časom potrebným na výpočet.


   ekvivalentné príkazy
   cube(size = 18);
   cube(18);
   cube([18,18,18]);
   .
   cube(18,false);
   cube([18,18,18],false);
   cube([18,18,18],center=false);
   cube(size = [18,18,18], center = false);
   cube(center = false,size = [18,18,18] );
Kocka
]
   sphere(r = 10);
  
   translate([0,25,0])
   color([0,1,0])  
   sphere(d = 20);

   translate([0,50,0])
   color([0.8,0.1,1])  
   sphere(d = 20);
Guľa

Na poslednom príklade vidno aj možnosť zmeny farby objektu. Farba sa zadáva ako trojica komponentov RGB farby, akurát namiesto obvyklých hodnôt 0 - 255 sa zadávajú ako reálne čísla v intervale 0,0 - 1,0. Okrem toho môžete používať aj pomenované farby, pričom sa používajú tie isté ako pre web -- Web colors, napríklad: color("red") cube();

Pozn.: farby sa prejavia len v režime Preview mode (F5); render mode (F6) zatiaľ farby nepodporuje.

Export do STL

Transformácie

translate

Príkaz translate presunie svoje komponenty podľa daného vektora.

   sphere(r = 10);
  
   translate([0,25,0])
   sphere(d = 20);
Guľa



difference

Príkaz difference odpočíta druhý (a všetky nasledujúce) objekty od prvého.

   difference() 
   {
     cylinder (h = 4, r=1, center = true, $fn=100);
     rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100);
   }
Difference

union

Príkaz union spraví zjednotenie všetkých nasledujúcich objektov.

   union() 
   {
     cylinder (h = 4, r=1, center = true, $fn=100);
     rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100);
   }
Union


intersection

Príkaz intersection spraví prienik všetkých nasledujúcich objektov.

   intersection() 
   {
     cylinder (h = 4, r=1, center = true, $fn=100);
     rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100);
   }
Intersection

Text

Text je 2D objekt, ktorý musíme neskôr "extrudovať" aby z neho vznikol 3D objekt. Všimnite si rozdiel medzi preview [F5] a render [F6].

   text("Ahoj");
Basic Text

Ďalšími parametrami príkazu vieme meniť font, jeho veľkosť, typ a zarovnanie textu.

 text(text = "Ahoj", font = "Arial:style=Bold", size = 10, halign = "center", valign = "center");

Zoznam dostupných fontov získate z menu Help -> Font List

   linear_extrude(height = 10, center = true)
     text(text = "Ahoj", font = "Arial:style=Bold", size = 10, halign = "center", valign = "center");
3D Text

Viac o texte - pozri https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Text


Funkcie - moduly

Až s využitím viacnásobného volania funkcie (v OpenSCADe sa volá module) a pomocou parametrov vynikne sila a efektivita tohoto nástroja.

   spacer(30);

module spacer(length=15)
{
$fn = 15;

difference()
 { 
  cylinder(d=6, h=length, $fn=6);
  translate([0,0,-1])
       cylinder(d=3.2,h=length+2);
 }
}
Práca s modulmi.


Konvexná obálka - hull

Príkazom hull obalíme objekty a vytvoríme celistvý povrch. To sa dá niekedy veľmi elegantne využiť pri konštrukcii.


 /* Dve kruznice (2D objekt): */

    translate([15,0,0]) circle(10);
    circle(10);


 /* Obal dvoch kruznic:   */

   hull()
     {
      translate([15,0,0]) circle(10);
      circle(10);
     }

 /* Trojrozmerna suciastka: */
$fn=64;


linear_extrude(height=5)
{
  difference()
  {
   hull()
     {
      translate([15,0,0]) circle(10);
      circle(10);
     }
     translate([15,0,0]) circle(5);
     circle(5);
 }       
    
}
Práca s modulmi.


Minkowského suma

Príkazom minkowski vytvoríme Minkowského súčet dvoch objektov, s výhodou sa táto pomerne neobvyklá transformácia používa napr. na zaobľovanie rohov.

Povedzme, že máme hranatú krabičku, ktorá by lepšie vyzerala so zaoblenými hranami. Dá sa to urobiť rozličnými spôsobmi, ale príkaz minkowski je na to ako stvorený. Ku krabičke pridáme na jednu hranu valec:

   $fn=50;

   cube([10,10,1]);
   cylinder(r=2,h=1);
Východisková situácia.


Potom tento valec spočítame minkowskeho operátorom a máame hotovo. Všimnite si však, že rozmery objektov sa spočítali, takže rozmery krabičky sú teraz 10 + 2 + 2 = 14 x 14 x 2, pretože aj výška objektov sa spočítala. :

  $fn=50;

  minkowski() 
  {
    cube([10,10,1]);
    cylinder(r=2,h=1);
  }
Výsledok minkowski.


Cykly a premenné

  for (x=[0:3])
{
 for (y=[0:3])
 {
  translate([x*25,y*25,0])
   {
       cube(20);
   }
 }   
}
Cyklus FOR.



Čo ďalej? Pozrite si OpenSCAD príklady