OFRII.com - Red Rocket OFRII.com - 8k wallpapers, foto OFRII.com - Samuraj - bojove umeni - zbrane OFRII.com - Svt Ponorek OFRII.com - 3D medely - 3D tisk - 3D scan OFRII.com - Akvaristika, Akvarijn ryby, Akvarijn rostliny ORFII.com - Freediving - voln potapn ORFII.com - Astrologie - horoskop, znamen, souhvzd, zvrokruhy ORFII.com - Vesmr - planety, galaxie, hvezdy ORFII.com
Reklama
3D tiskárny
AONN.cz
NIKEE Hvezdna brana SG-1 StarGate online na nikee.net
Spřátelené Weby
1HRY.cz - hry online zdarma
NIKEE HRY, superhry, 1000her, webhry, flash hry, hry online, hry zdarma
HRY2.eu - hry online, 1000her, mimoni, planeta mimonu, herna, webhry, herni, minihry
Uloz si video Nahnoji.cz
biotechart.cz - animovane obrazky GIF z oblasti biologie, technologie a umeni
Globální mediální server TetriSys

Programy - OpenSCAD

Pro 3D modelovaní existuje nespočet programů. Ve většině z nich ale uživatel modeluje v režimu WYSIWYG, tedy myší manipuluje s objekty přímo v projekci. V OpenSCADu ale modely programujete: vytváříte základní tvary a ty k sobě např. přičítáte nebo od sebe odečítáte. Říká se tomu CSG modeling. Pokud budete vyrábět film nebo hru, asi budete chtít pracovat spíše s vizuální stránkou věci; oproti tomu, pokud budete modelovat součástku do stroje, bude vás spíš zajímat absolutní kontrola nad tvarem objektu. V tom případě by vás mohl OpenSCAD zaujmout. Používá se převážně k návrhům součástek.




OpenSCAD nepracuje na rozdíl od většiny modelovacích nástrojů a CADů v režimu WYSIWYG (What You See Is What You Get, česky co vidíš, to dostaneš), ale v režimu WYSIWYM (What You See Is What You Meant, česky vidíš, cos měl na mysli). Každý uživatel preferuje jinou metodu tvorby obsahu, někteří mají raději první metodu a text sázejí třeba ve Scribusu, jiní mají raději druhý přístup a texty sázejí v TeXu.

Typický WYSIWYG 3D modelovací nástroj Blender
Typický WYSIWYG 3D modelovací nástroj Blender
Kromě rozdílu v preferencích uživatelů je tu také druhý aspekt, totiž účel. Pokud budete vyrábět film nebo hru, asi budete chtít pracovat spíše s vizuální stránkou věci; oproti tomu, pokud budete modelovat součástku do stroje, bude vás spíš zajímat absolutní kontrola nad tvarem objektu. V tom případě by vás mohl OpenSCAD zaujmout.

Instalace OpenSCADu

Přestože se jedná o svobodný software, OpenSCAD pravděpodobně nenajdete v repozitářích své distribuce. Na domovské stránce programu najdete repozitáře pro Ubuntu a openSUSE, ale i binární archiv pro libovolný Linux (32 i 64 bitů). Stažený archiv stačí rozbalit a v terminálu s právy roota spustit instalační skript. Poté si ještě můžete stáhnout ikonku a spouštěč a umístit je do složek /usr/local/share/pixmaps respektive /usr/local/share/applications. Program OpenSCAD pak najdete v nabídce aplikací v kategorii Grafika.

Uživatelské rozhraní

Po spuštění OpenSCADu uvidíte relativně prázdné okno rozdělené na tři části. V levé polovině je prostor na zdrojový kód modelu, v pravé části pak nahoře prostor pro vykreslený model a dole zprávy programu.

Prázdné okno OpenSCADu při spuštění
Prázdné okno OpenSCADu při spuštění
Více pochopíte, pokud si otevřete nějaký příklad. Součástí instalace OpenSCADu je dvaadvacet příkladů, které lze otevřít z nabídky File | Examples. Po otevření příkladu jej můžete zkompilovat (a vykreslit) z nabídky Design | Compile, nebo klávesovou zkratkou [F5].

Zkompilovaný příklad číslo jedna

Zkompilovaný příklad číslo jedna

S náhledem na objekt můžete manipulovat myší. Tažením objektu levým tlačítkem jím otáčíte, tažením pravým nebo prostředním tlačítkem jej posouváte a pomocí kolečka na myši jej přibližujete a oddalujete. Z nabídky View můžete měnit způsob zobrazení náhledu, zapnout nebo vypnout zobrazování hran, os apod.

Zobrazené osy a hrany
Zobrazené osy a hrany

Rozbor příkladu

Abyste pochopili způsob programování objektů, rozeberu teď první příklad.
module example001()
{
	function r_from_dia(d) = d / 2;

	module rotcy(rot, r, h) {
		rotate(90, rot)
			cylinder(r = r, h = h, center = true);
	}

	difference() {
		sphere(r = r_from_dia(size));
		rotcy([0, 0, 0], cy_r, cy_h);
		rotcy([1, 0, 0], cy_r, cy_h);
		rotcy([0, 1, 0], cy_r, cy_h);
	}

	size = 50;
	hole = 25;

	cy_r = r_from_dia(hole);
	cy_h = r_from_dia(size * 2.5);
}

example001();
Jak si můžete všimnout, celý zdrojový kód je zabalen v bloku module, který je pak následně zavolán. Můžete to chápat jako proceduru nebo funkci. Na prvním řádku modulu je definice velmi jednoduché funkce r_from_dia(), která počítá poloměr z průměru dělením dvěma. Ve spodní části kódu jsou definovány konstanty. Můžete vidět, že nemusí být definovány v kódu nad místem, kde jsou použity, ale kdekoli. Bude použita poslední uložená hodnota. Pokud konstanty spočítáte ručně, dostanete se k následujícímu kódu:
module rotcy(rot, r, h) {
	rotate(90, rot)
		cylinder(r = r, h = h, center = true);
}

difference() {
	sphere(r = 25);
	rotcy([0, 0, 0], 12.5, 62.5);
	rotcy([1, 0, 0], 12.5, 62.5);
	rotcy([0, 1, 0], 12.5, 62.5);
}
Na začátku je definován modul (funkce) rotcy(), po dosazení dostáváme:
difference() {
	sphere(r = 25);
	rotate(90, [0, 0, 0]) cylinder(r = 12.5, h = 62.5, center = true);
	rotate(90, [1, 0, 0]) cylinder(r = 12.5, h = 62.5, center = true);
	rotate(90, [0, 1, 0]) cylinder(r = 12.5, h = 62.5, center = true);
}
Blok difference() od prvního objektu v něm odečte všechny ostatní. Pojďme se tedy podívat na jednotlivé objekty. Jako první je zde koule, tedy sphere. Pomocí parametru r se určuje její poloměr, pomocí dalších (zde nepoužitých) se dá změnit rozlišení (počet použitých plošek). Všimněte si, že u všech parametrů je uveden i jejich název. Nezáleží tedy na jejich pořadí, ale na názvu. Pokud názvy neuvedete, bude se postupovat podle výchozího pořadí, sphere(25); tedy bude také fungovat.

sphere(r = 25);sphere(r = 25);

Dalším použitým objektem je válec, zastoupený zde objektem cylinder, který ale může představovat i komolý kužel. Parametr r opět udává poloměr, při použití parametrů r1 a r2 můžete definovat poloměr na začátku a na konci. Dalším parametrem je h, tedy výška. Jen doplním, že všechny uvedené rozměry jsou zadávané v milimetrech. Posledním parametrem je center, který definuje, jestli se má objekt vycentrovat na počátek souřadnicového systému.

cylinder(r = 12.5, h = 62.5, center = true);cylinder(r = 12.5, h = 62.5, center = true);

Před jednotlivými válci je transformační funkce rotate(), která otočí objekt o zadaný úhel podle zadaných os. Existují dvě možnosti, jak otáčecí funkci volat, prvním je zadat tři úhly, o které se má objekt otočit po jednotlivých osách v pořadí x, y, z. Následující příklad otočí objekt vzhůru nohama:
rotate([0, 180, 0]) ...
Druhou možností je zadat jeden úhel a poté říct, podle kterých os se má otáčet:
rotate(180, [0, 1, 0]) ...
V našem příkladě se setkáváte s druhou možností:
  • rotate(90, [0, 0, 0]) nemá žádný efekt
  • rotate(90, [1, 0, 0]) otočí válec o 90° podle osy x
  • rotate(90, [0, 1, 0]) otočí válec o 90° podle osy y
rotate(90, [1, 0, 0]) cylinder(r = 12.5, h = 62.5, center = true); rotate(90, [1, 0, 0]) cylinder(r = 12.5, h = 62.5, center = true);

Tyto tři válce... Tyto tři válce... ...se odečtou od koule ...se odečtou od koule

Další objekty a transformace

Kromě již zmíněných objektů je ještě možné vytvářet hranoly (cube) či mnohostěny (polyhedron). Všechny objekty jsou podrobně popsány v odkazované dokumentaci, zde jen pro představu několik jednoduchých příkladů:

cube([10,15,20]); cube([10,15,20]); cylinder(r1 = 10, r2 = 0, h = 20); cylinder(r1 = 10, r2 = 0, h = 20);

polyhedron(points = [[0,0,0],[100,0,0],[0,100,0],[0,100,100]], triangles = [[0,1,2], [1,0,3], [0,2,3], [2,1,3]]);
polyhedron(points = [[0,0,0],[100,0,0],[0,100,0],[0,100,100]], triangles = [[0,1,2], [1,0,3], [0,2,3], [2,1,3]]);

polyhedron(points = [[0,0,0],[100,0,0],[0,100,0],[0,100,100]], triangles = [[0,1,2], [1,0,3], [0,2,3]]); (Odebrán poslední trojú
polyhedron(points = [[0,0,0],[100,0,0],[0,100,0],[0,100,100]], triangles = [[0,1,2], [1,0,3], [0,2,3]]); (Odebrán poslední trojúhelník)


Kromě otáčení existují samozřejmě i další transformace, mezi ně patří škálování (scale), posunutí (translate), překlopení (mirror) a další. Mezi zajímavou transformaci patří obarvení:
color([ R/255, G/255, B/255 ]) ...
color("green") ...
OpenSCAD bohužel obarvení neukáže v náhledu.

Více funkcí a informací

Kromě základních objektů a transformací toho umí OpenSCAD daleko více, namátkou forcykly, podmínky... Vše důležité najdete v obsáhlé dokumentaci. Vzhledem k tomu, že se jedná v podstatě o programování, je přirozené, že vznikají knihovny složitějších tvarů. Mezi nejzajímavější patří knihovna součástek, která dokáže generovat ozubená kola apod.

Příklad vygenerovaných ozubených kolPříklad vygenerovaných ozubených kol

Rendering a export

Finální objekt je nejprve třeba vyrendrovat (Design | Compile and Render (CGAL) nebo [F6]) a poté jej můžete exportovat mj. do formátu STL k následnému použití, například k vytištění na 3D tiskárně. Formát STL lze také importovat, pomocí klauzule import().

Alternativní cesta

Pokud hledáte způsob, jak modelovat součástky precizně, bez nutnosti pokročilejších znalostí klasických modelovacích nástrojů a CADů, nebo pokud je vám programovací způsob modelování prostě bližší, je pro vás OpenSCAD řešením. Pomocí OpenSCADu a dalších knihoven můžete naprogramovat model mnohem rychleji a efektivněji, než kdybyste jej modelovali ručně.
©Ofrii 2012
NIKEE.net
ALYSS.cz
SIFEE.biz
ENKII.cz
OFRII.com