Rhinoceros a skripty III - první lehký praktický příklad - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

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:

Poptávka práce
Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se narodil známý fotograf František Drtikol?

V dnešní soutěži hrajeme o:



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.

Okno editace 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.

Tvorba nové lišty

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.

Okno editace lišt s novou lištou

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.

Okno editace 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.

Odkaz na strukturu Rhina

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í: Skript rtroj.rvb 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.

Výsledek skriptu


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):

Tématické zařazení:

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: