OpenSCAD
Zo stránky SensorWiki
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.
- homepage,
- on-line editor,
- portable,
- book
- wiki book
- CAD with Code - introduction by Xavier Dominguez
Príklady:
Príklady:
cylinder(d=6,h=10);
|
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] );
|
] | |
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);
|
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);
|
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);
}
|
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);
}
|
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);
}
|
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");
|
Ď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");
|
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);
}
}
|
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);
}
}
|
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);
|
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);
}
|
Cykly a premenné
for (x=[0:3])
{
for (y=[0:3])
{
translate([x*25,y*25,0])
{
cube(20);
}
}
}
|
Čo ďalej? Pozrite si OpenSCAD príklady