Operácie

OpenSCAD: Rozdiel medzi revíziami

Z SensorWiki

(Konvexná obálka - hull)
(Konvexná obálka - hull)
Riadok 173: Riadok 173:
 
|
 
|
 
| <source lang="C++">
 
| <source lang="C++">
  '''Dve kruznice (2D objekt):'''
+
  /* Dve kruznice (2D objekt): */
  
 
     translate([15,0,0]) circle(10);
 
     translate([15,0,0]) circle(10);
Riadok 179: Riadok 179:
  
  
  '''Obal dvoch kruznic:'''
+
  /* Obal dvoch kruznic:   */
  
 
   hull()
 
   hull()
Riadok 186: Riadok 186:
 
       circle(10);
 
       circle(10);
 
     }
 
     }
  '''Trojrozmerna suciastka:'''
+
 
 +
  /* Trojrozmerna suciastka: */
 
$fn=64;
 
$fn=64;
  

Verzia zo dňa a času 16:21, 12. marec 2018

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

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.