Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
3D grafika
Rhinoceros a skripty III - první lehký praktický příklad
1. listopadu 2002, 00.00 | Nyní se dostáváme již k praktické ukázce VBScriptu v Rhinu. Tento příklad nebude vyžadovat jakýkoliv vstup uživatele, čili po spuštění skriptu se provedou sledy příkazů. Budeme modelovat plochu rovnostranného trojúhelníka v rovině TOP v předem daném místě.
První lehký praktický příklad
Nyní se dostáváme již k praktické ukázce VBScriptu v Rhinu. Tento příklad nebude vyžadovat jakýkoliv vstup uživatele, čili po spuštění skriptu se provedou sledy příkazů. Budeme modelovat plochu rovnostranného trojúhelníka v rovině TOP v předem daném místě. Ukážeme si jak vytvářet body, plochy a využívat příkazů Rhina. Zatím na velmi jednoduchém příkladě.Volání skriptu přes tlačítko
Minule jsem slíbil ukázku, jak volat skripty přes tlačítko. Je to přece velmi výhodné. Nejdříve si musíme vytvořit vlastní lištu s tlačítky. Spustíme příkazem ToolBar (Tools > Toolbar Layout ...) editaci lišt.Dle obrázku vybereme Toolbar > New ... a novou lištu nazveme třeba "Skripty". Ponecháme standardní velikost ikonek. Ale pokud chcete, můžete si dokonce navolit svoji vlastní velikost. Docela výhodné pro 21" a 24" monitory.
Nově vytvořená lišta se nám objeví vedle dialogového okna s jedním prázdným tlačítkem. Nyní ji ještě nemůžeme editovat. Dále si povšimněte, že se nám zobrazil název naší lišty v seznamu dole v dialogovém okně. Zde si danou lištu můžeme vypnout a opět zapnout.
Zbytek tohoto dialogového okna vám nebudu popisovat, snad jen to, že si zde můžete vytvářet svoje nastavení lišt, tzv. "Workspace", čili pracovní plochy. Přejdeme k editaci tlačítka.
Umístěte si lištu s tlačítkem na vaši oblíbenou pozici v programu. Nyní přijeďte kursorem myši nad tlačítko a podržte klávesu SHIFT. Všimněte si, že se zobrazí nápověda, co lze s daným tlačítkem dělat. Pokud zmáčknete a budete držet levé tlačítko myši, můžete tlačítko přesouvat po liště či do úplně jiných lišt, které jsou zobrazeny. Pokud zmáčknete pravé tlačítko myši, zobrazí se vám vlastnosti daného tlačítka (což je naším cílem). Další možností je držet klávesu CTRL, jež nám umožní tlačítko kopírovat. Nyní již k editaci tlačítka.
Jak jste si všimli, vytvořil jsem rychle ikonku rovnostranného trojúhelníka přes tlačítko Edit Bitmap. Spustí se vám jednoduchý editor ikonek. Barev moc nepobral, ale vše lze nahradit, protože umožňuje import hodně grafických formátů. Vraťme se k editaci tlačítka. Do textového pole Tooltip vyplníme text, který se nám bude zobrazovat nad tlačítkem, pokud nad ním ponecháme kursor. Je to krásné, ale vždyť máme funkce pro levé a pravé tlačítko myši. Rhino na to myslel, a proto nápovědní text pro levé a pravé tlačítko myši oddělte tímto znakem |. Nám zatím postačí levé tlačítko. Do textového pole pro levé tlačítko vyplníme příkaz pro načtení skriptu "LoadScript /rtroj.rvb". Lomítko tam musí být, protože nám zaručuje spuštění skriptu, jinak by se pouze načetlo dialogové okno příkazu LoadScript. Soubor "rtroj.rvb" musí být umístěn v adresáři Scripts v instalačním adresáři Rhina. Zatím tam není, protože jej teprve budeme vytvářet.
PseudoObjektová struktura Rhina
Osobně programuju v mnoha programech (počínaje MS OFFICE a konče Autodesk Inventor) a všude s výhodami používám krásných a přehledných grafických objektových stromů daných programů. Bohužel Rhino se zatím v tomto nepoučil a všechny funkce nabalil do jednoho objektu "Rhino". Je to velmi nepřehledné, ale jako koncový uživatelé s tím nic nenaděláme.Proto jsem si řekl, že uvítáte, když vám takovou PseudoObjektovou strukturu vytvořím. Je "Pseudo", protože mé rozdělení nemůžete považovat za rozdělení objektové, ale pouze příkazové. Sami pochopíte až uvidíte. Je trošku objemnější, ale to při programování bývá. Kdo umí anglicky, již pochopí které operace jsou v Rhinu podporovány. Odkaz přes obrázek.
Kód
Už jsme se dostali k samotnému kódu. Vytvoříme nový soubor "rtroj.rvb" a uložíme jej do adresáře Scripts v Rhinu. Níže vidíte samotný zdrojový kód.
Sub VytvorTrojuhelnik 'Nadeklaruji promenne Dim Bod1(2),Bod2(2),Bod3(2) 'Vytvorim body a priradim je do objektu Bod1(0) = 0 'x Bod1(1) = 0 'y Bod1(2) = 0 'z - vyskytujeme se pouze ve 2D 'Lze pouzit i radkovy zapis kde ENTER nahrazuje dvojtecka Bod2(0) = 10:Bod2(1) = 0:Bod2(2) = 0 Bod3(0) = 5:Bod3(1) = 8.66:Bod3(2) = 0 'Vytvoreni a prirazeni ObjBod1 = Rhino.AddPoint(Bod1) ObjBod2 = Rhino.AddPoint(Bod2) ObjBod3 = Rhino.AddPoint(Bod3) 'Vytvorim plochu pomoci prikazu Rhina SrfPt Dim Plocha Plocha = Rhino.Command("SrfPt " & Pt2Str(Bod1) & Pt2Str(Bod2) & Pt2Str(Bod3) & " ENTER") End Sub 'Funkce pro prevod souradnic pro zadavani ve World formatu Function Pt2Str(pointObj) Pt2Str = " w" & pointObj(0) & "," & pointObj(1) & "," & pointObj(2) End Function 'Samotne telo kodu VytvorTrojuhelnik |
Soubor ke stažení:
V minulém díle jsem opomenul říci, že je nutné mít kód v podprogramech (čili Sub) a ty pak volat. Na začátku si nadeklarujeme proměnné jednotlivých bodů. Body jsou pole o rozměru 3 x 1, čili vektor o třech údajích, kde jednotlivé položky udávají souřadnice v ose x, y a z. Při deklaraci je v závorce uvedena dvojka, protože pole začíná indexováním od nuly.
Údaje přiřazované bodu 1 jsou nulové, tedy bod leží v počátku souřadného systému. Jeho zápis je sice přehledný, ale zbytečně prodlužuje délku kódu. Proto lze s výhodou použít zápis další, který je uveden u bodů 2 a 3.
V další části již vytváříme body přiřazením "nějakému" objektu pomocí funkce "Rhino.AddPoint". S tímto objektem lze dále pracovat (v našem programu to ale nepotřebujeme), jako například zjišťovat zpětně souřadnice nebo ID objektu. ID objektu v Rhinu představuje jednoznačné označení každé entity v souboru a tím umožňuje jej přesně identifikavat, hledat a pod.
Plochu vytvoříme pomocí funkce "Rhino.Command" přes který pošleme příkaz pro tvorbu plochy ze 4 bodů. Zde postupujeme stejně jako v prvním díle našeho seriálu. Mezera znamená enter. Dále zde využíváme funkci, kterou máme napsanou níže - Pt2Str. Ta nám převádí souřadnice jednotlivých bodů do World formátu. Zjednoduší to práci a volání funkce "Rhino.Command" nebude tak dlouhé. Nakonec musíme potvrdit, že čtvrtý bod již nechceme zadávat.
Nyní musíme do těla skriptu napsat samotný podprogram. Teď již můžeme stisknout tlačítko a vytvoří se nám plocha rovnostranného trojúhelníka o straně 10 milimetrů a ve vrcholech trojúhelníka budou body.
Nedílnou součástí skriptování v Rhinu (tedy i spíše modelování) je i to, že k výsledku se dá dojít vícero metodami. Lze vytvořit pouze jeden bod a ten zkopírovat nadvakrát do vrcholů trojúhelníka. Lze vytvořit jeden bod, ten zkopírovat nadvakrát do dalšího vrcholu a jeden z těchto bodů pak otočit o 60 stupňů. Nemusíme ani fyzicky vytvářet tyto body, stačí předat souřadnice těchto bodů přímo funkci pro tvorbu plochy. Jak vidíte, je toho dost. Tyto metody si ukážeme v příštím díle a pokud čas dá, přejdeme do prostoru a vytvoříme si čtyřstěn (tetraedr).
Obsah seriálu (více o seriálu):
- Rhinoceros a skripty - úvod
- Rhinoceros a skripty II
- Rhinoceros a skripty III - první lehký praktický příklad
- Rhinoceros a skripty - druhý střední praktický příklad
- Rhinoceros a skripty - třetí praktický příklad
Tématické zařazení:
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
11. května 2014
-
23. května 2014
Epson na konferenci Droidcon Berlin ukázal nové možnosti čekající na vývojáře OS Android
-
24. listopadu 2014
-
13. května 2014
Samsung NX3000: retro styl, špičkový výkon a snadná konektivita v jednom přístroji
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
15. prosince 2014
Konica Minolta pomůže živnostenským úřadům s digitalizací dokumentů
-
11. května 2014
-
26. listopadu 2014
Canon Junior Awards již posedmé ocení mladé fotografy v rámci Czech Press Photo
-
21. srpna 2014