Nacházíte se zde: Rhino3D.cz > Články > Rhinoceros > RhinoScript 4. díl: Operátory a funkce


RhinoScript 4. díl: Operátory a funkce

Publikováno: 6.7.2005 | Autor: David Rutten | Rubrika: Rhinoceros | Komentáře: 0 - Doporučit

Rhino Script - úvodČísla a proměnné jsme už probrali. (Aritmetické) operátory by vám měly být známé z každodenního života. vbScript je používá stejně, jako jste to dělali vy v hodinách matematiky. vbScript nabízí omezený počet operátorů a ty se vždy používají mezi proměnnými/hodnotami, na které se vztahují.

4 Operátory & funkce

4.1 Co jsou vůbec zač a k čemu je potřebuji?

Když jsme probírali numerické proměnné, ukazovali jsme si příklady, jak provádět matematické operace s čísly:

x = 15 + 26
x = 15 + 26 * 2.33
x = Sin(15 + 26) + Sqr(2.33)
x = Tan(15 + 26) / Log(55)

To by vám mělo být povědomé... jak vidíte, výše uvedené řádky obsahují 4 druhy kódu:

  • čísla: 15, 26, 2.33
  • proměnné: x,y
  • operátory: =, *, /
  • funkce: Sin(), Sqr(), Log()

Čísla a proměnné jsme už probrali. (Aritmetické) operátory by vám měly být známé z každodenního života. vbScript je používá stejně, jako jste to dělali vy v hodinách matematiky. vbScript nabízí omezený počet operátorů a ty se vždy používají mezi proměnnými/hodnotami, na které se vztahují. Zde vidíte seznam všech operátorů ve vbScriptu:

+ součet dvou hodnot
- rozdíl dvou hodnot
* součin dvou hodnot
/ podíl dvou hodnot
\ celočíselný podíl dvou hodnot
^ umocní číslo exponentem
Mod zbytek po celočíselném dělení

Následující operátory pracují s booleovskými hodnotami, možná vám nebudou moc povědomé. Podrobně si je objasníme v 5. dílu.

And - logická konjunkce (součet)
Eqv - logická ekvivalence
Imp - logická implikace
Not - logická negace
Or - logická disjunkce (rozdíl)
Xor - logické výlučné Or

Funkce se vždy píší před hodnotu(y), kterou používají jako svůj vstup. Tyto hodnoty jsou uzavřeny do závorek a píší se za funkci:

Sin(5) - sinus čísla
Cos(x) - kosinus čísla
Atn(x/y) - arcTangent čísla
Log(t^2) - přirozený logaritmus čísla většího než 0
Sqr(3+a) - odmocnina jakéhokoliv kladného čísla
Abs(pi/i) - absolutní (kladná) hodnota jakéhokoliv čísla

To bylo jenom pár příkladů dostupných funkcí. Nápověda Microsoft vbScript uvádí 89 dostupných funkcí. Všechny jsou součástí vbScriptu. Můžete je použít kdykoliv chcete a vždy budou fungovat. Nicméně existuje i mnoho nenativních funkcí. Můžete například nahrát FileSystemObject, který vám umožní manipulovat se soubory a složkami na pevném disku. Pokud spustíte váš vbScript v prostředí Rhina, je automaticky nahrán Rhino-objekt. Rhino k syntaxi přidá 200 dalších funkcí. Všechny jsou uvedeny v nápovědě k RhinoScriptu.
Když použijete funkce, které jsou součástí Rhina, není už možné spustit váš vbScript v jiných aplikacích. Jakmile přidáte do vbScript obsah, který je specifický pro Rhino, stane se z něj RhinoScript! Abychom předešli pozdějším zmatkům, budeme vbScriptové nativní funkce nazývat 'funkce' a nenativní funkce 'metody'. Při použití v kódu se všechny chovají stejně.

Pro tuto chvíli se ale zaměříme na nativní funkce vbScriptu. Funkce mohou provádět širokou paletu operací. Nejsou omezeny pouze na matematické užití, ačkoliv mnoho funkcí provádí numerické úlohy:

x = Sin(3.1415 / dblAlpha) + Cos(dblAlpha / Sqr(dblBeta))

Jiné pracují se řetězci:

a = Left("Rollercoaster", 6) & UCase(Trim(" Everett McGill "))

Numerický příklad je zřejmý. Funkci Sin() můžete předat přímo číselné hodnoty i numerické proměnné. Nemůžete zadat více ani méně než 1 hodnotu. Funkce Sin() je velice jednoduchá.
Druhá ukázka obsahuje funkce, které pracují se řetězci.
Left() vrátí prvních 6 znaků zleva z řetězce > "Roller".
Trim() odstraní všechny uvozující a koncové mezery z řetězce > "Everett McGill".
UCase() převede obsah řetězce na velké znaky > "EVERETT MCGILL".

Všimněte si, že Trim() je proveden před UCase(). Stejně jako v matematické syntaxi, závorky určují pořadí provádění funkcí. Po dokončení všech operací bude proměnná obsahovat řetězec:

"RollerEVERETT MCGILL"

4.2 Použití dalších předdefinovaných funkcí

OK... přečtěte si následující proceduru a pokuste se pochopit, co dělá. Některé ze zde použitých funkcí nebudete znát, tak zkuste trochu hádat... Nebojte se, vše si vysvětlíme:

1 Sub Main()
2 Dim strVstupJmeno
3 Dim strVstupPrijmeni
4 Dim strVysledekJmeno
5 Dim strVysledekPrijmeni
6 Dim strVysledekKodJmena
7
8 strVstupJmeno = Rhino.GetString("Jaké je vaše jméno?")
9 strVstupPrijmeni = Rhino.GetString("Jaké je vaše příjmení?")
10
11 strVysledekJmeno = UCase(strVstupJmeno)
12 strVysledekPrijmeni = UCase(strVstupPrijmeni)
13
14 strVysledekJmeno = Left(strVysledekJmeno, 1)
15 strVysledekPrijmeni = Left(strVysledekPrijmeni, 3)
16
17 strVysledekKodJmena = strVysledekJmeno & "." & strVysledekPrijmeni
18
19 Rhino.Print ("Váš osobní kód jména je " & strVysledekKodJmena)
20 End Sub

Až do řádku 7 by vám mělo být vše důvěrně známé. Pouze zde inicializujeme proceduru a deklarujeme proměnné. Na řádku 8 najednou narazíme na metodu Rhino.GetString(). Všechny 'věci' které začínají na „Rhino." nazýváme 'metody', vzpomínáte?
Metodu Rhino.GetString() používáme pro komunikaci s uživatelem. Metoda pracuje následovně:

Příkazový řádek

Do závorek musíte zadat jeden řádek textu (ve formátu řetězce, pochopitelně) a tento text se zobrazí v příkazovém řádku:

Příkazový řádek

Poté může uživatel zadat nový řetězec, který bude předán do proměnné před metodou Rhina (v našem případě strVstupJmeno):

Nyní tedy naše řetězcová proměnná strVstupJmeno obsahuje "Wilhelm". Stejný trik použijeme s proměnnou strVstupPrijmeni. Předpokládejme, že se uživatel jmenuje Wilhelm Hegel. Proměnná strVstupPrijmeni tedy po řádku 9 bude obsahovat "Hegel".

Na řádcích 11 a 12 opět použijeme identické funkce pro obě proměnné se jmény. Tentokrát na oba vstupní řetězce použijeme funkci UCase() (což je nativní funkce vbScriptu) a výsledek uchováme ve výsledkových proměnných (strVysledekJmeno a strVysledekPrijmeni). UCase je zkratkou 'Upper case' - velká písmena. Proto funkce UCase() převede řetězec mezi závorkami na identický řetězec, ale s velkými písmeny. To znamená, že strVysledekJmeno bude obsahovat "WILHELM" a strVysledekPrijmeni bude obsahovat "HEGEL".

Na řádcích 14 a 15 znovu použijeme funkci Left(). Jediný rozdíl je, že tentokrát použijeme stejnou proměnnou nalevo a také ve volání funkce. To je zcela vpořádku. Proměnnou můžete využít ke změně své vlastní hodnoty:

lngPocet = lngPocet + 1
strJmeno = UCase(strJmeno)
blnDostatecnaVyska = Not blnDostatecnaVyska

První numerický příklad ukazuje, jak zvýšit hodnotu proměnné typu long. Druhý příklad ukazuje, jak převést řetězec na velké znaky a ve třetím příkladě vidíte, jak převrátit hodnotu booleovské proměnné. Pokud blnTallEnough bylo vbTrue, pak se stane nepravdou, čili vbFalse.

Na řádcích 14 a 15 jsme zkrátili výslednou proměnnou typu řetězec na danou délku. strVysledekJmeno nyní obsahuje "W" a strVysledekPrijmeni obsahuje "HEG".

Na řádku 17 spojíme dvě výsledné řetězcové proměnné dohromady a vložíme mezi ně tečku. strVysledekKodJmena bude obsahovat "W.HEG". Nakonec zobrazíme výseldný řetězec na obrazovce, aby uživatel věděl, jaký je kód pro jeho jméno:

Příkazový řádek, osobní kód

V jazyce vbScript existuje množství jednoduchých funkcí. K dispozici máte také stovky metod Rhina. Problém je najít tu nejvhodnější...
Pokud nemůžete najít vhodnou funkci nebo metodu, máte vždy ještě možnost vytvořit svoji vlastní. Toto téma probereme v 8. dílu.

Přeložil Jan Slanina

Nahoru ↑