OpenSCAD: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
|||
(15 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 2: | Riadok 2: | ||
zástupcom programov skupiny CSG -- t.j. constructive solid geometry (CSG). Softvér existuje vo verzii pre Windows, Linux aj OS X. | zástupcom programov skupiny CSG -- t.j. constructive solid geometry (CSG). Softvér existuje vo verzii pre Windows, Linux aj OS X. | ||
* [http://www.openscad.org/ | * [http://www.openscad.org/ homepage], | ||
* [http://openscad.net/ on-line], | * [http://openscad.net/ on-line editor], | ||
* [http://files.openscad.org/OpenSCAD-2015.03-2-x86-32.zip portable], | * [http://files.openscad.org/OpenSCAD-2015.03-2-x86-32.zip portable], | ||
* [http://reso-nance.org/files/ressources/openscad/openscad-manual.pdf book] | * [http://reso-nance.org/files/ressources/openscad/openscad-manual.pdf book] | ||
* [https://en.wikibooks.org/wiki/OpenSCAD_User_Manual wiki book] | |||
* [https://hackmd.io/@xavidominguez/HkqzwFe4N?type=view CAD with Code - introduction] by Xavier Dominguez | |||
Príklady: | '''Príklady:''' | ||
* YouTube kanál s príkladmi v slovenčine: https://www.youtube.com/playlist?list=PLmh6bwr3ZDwDQG2mJzvW8x1oJy1AZJpN- | |||
* [http://www.thefrankes.com/wp/?p=2674 Highly customizable wheel], | * [http://www.thefrankes.com/wp/?p=2674 Highly customizable wheel], | ||
* [https://www.thingiverse.com/thing:231651 Parametric Lego Brick] | * [https://www.thingiverse.com/thing:231651 Parametric Lego Brick] | ||
* [https://www.thingiverse.com/thing:4708988 Knob Factory] | |||
* [https://www.thingiverse.com/thing:2187167 Parametric Hinge] | |||
Riadok 107: | Riadok 112: | ||
|} | |} | ||
=='''Text''' | === union === | ||
Príkaz union spraví zjednotenie všetkých nasledujúcich objektov. | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
union() | |||
{ | |||
cylinder (h = 4, r=1, center = true, $fn=100); | |||
rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); | |||
} | |||
</source> | |||
| [[Súbor:OpenSCAD-union.png|thumb|Union]] | |||
|} | |||
=== intersection === | |||
Príkaz intersection spraví prienik všetkých nasledujúcich objektov. | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
intersection() | |||
{ | |||
cylinder (h = 4, r=1, center = true, $fn=100); | |||
rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100); | |||
} | |||
</source> | |||
| [[Súbor:OpenSCAD-intersection.png|thumb|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]. | |||
{| width="100%" | {| width="100%" | ||
| | | | ||
Riadok 118: | Riadok 157: | ||
|} | |} | ||
Ď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 | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
linear_extrude(height = 10, center = true) | |||
text(text = "Ahoj", font = "Arial:style=Bold", size = 10, halign = "center", valign = "center"); | |||
</source> | |||
| [[Súbor:OpenSCAD-Ahoj3D.png|thumb|3D Text]] | |||
|} | |||
Viac o texte - pozri https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/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. | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
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); | |||
} | |||
} | |||
</source> | |||
| [[Súbor:OpenSCAD-Spacer.png|thumb|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. | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
/* 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); | |||
} | |||
} | |||
</source> | |||
| [[Súbor:OpenSCAD-Hull.png|thumb|Práca s modulmi.]] | |||
|} | |||
== Minkowského suma == | |||
Príkazom minkowski vytvoríme [https://dml.cz/bitstream/handle/10338.dmlcz/141371/PokrokyMFA_52-2007-4_6.pdf 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: | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
$fn=50; | |||
cube([10,10,1]); | |||
cylinder(r=2,h=1); | |||
</source> | |||
| [[Súbor:OpenSCAD-mink1.png|thumb|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. : | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
$fn=50; | |||
minkowski() | |||
{ | |||
cube([10,10,1]); | |||
cylinder(r=2,h=1); | |||
} | |||
</source> | |||
| [[Súbor:OpenSCAD-mink2.png|thumb|Výsledok minkowski.]] | |||
|} | |||
== Cykly a premenné == | |||
{| width="100%" | |||
| | |||
| <source lang="C++"> | |||
for (x=[0:3]) | |||
{ | |||
for (y=[0:3]) | |||
{ | |||
translate([x*25,y*25,0]) | |||
{ | |||
cube(20); | |||
} | |||
} | |||
} | |||
</source> | |||
| [[Súbor:OpenSCAD-forCycle.png|thumb|Cyklus FOR.]] | |||
|} | |||
== Čo ďalej? == | |||
* -> Pozrite si [[OpenSCAD príklady]] | |||
* Preštudujte si [http://edutechwiki.unige.ch/en/OpenScad_beginners_tutorial podrobnejší tutorial] ako tento | |||
* Pozrite sa na [http://edutechwiki.unige.ch/en/Doblo_factory Doblo Factory] | |||
[[Category:OpenSCAD]] [[Category:DTV]] [[Category:NAVEZ]] | [[Category:OpenSCAD]] [[Category:DTV]] [[Category:NAVEZ]] |
Aktuálna revízia z 18:45, 14. marec 2021
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:
- YouTube kanál s príkladmi v slovenčine: https://www.youtube.com/playlist?list=PLmh6bwr3ZDwDQG2mJzvW8x1oJy1AZJpN-
- Highly customizable wheel,
- Parametric Lego Brick
- Knob Factory
- Parametric Hinge
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
- Preštudujte si podrobnejší tutorial ako tento
- Pozrite sa na Doblo Factory