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:
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
-
11. prosince 2024
3D grafika
Rhinoceros a skripty II
18. října 2002, 00.00 | V minulém díle jsme si probrali starou metodu skriptování, která též dobře poslouží, ale nemá takové možnosti jako jazyk VBScript. S tím se dnes seznámíme natolik, abychom s ním mohli začít pracovat.
{Rhinoceros a Skripty}
Nádech VBScriptu
V minulém díle jsme si probrali starou metodu skriptování, která též dobře poslouží, ale nemá takové možnosti jako jazyk VBScript. V dnešním díle vás lehce s tímto jazykem seznámím, aby uživatel, který jej nikdy neviděl, mohl začít pracovat s námi a v průběhu seriálu si informace o tomto jazyku doplňoval z MSDN. Lidem, kteří již umí programovat ve Visual Basicu (VB) či Visual Basicu for Aplication (VBA), přechod na VBScript nebude dělat problémy. VBScript totiž výchází z jazyka VB.Co použít za editor na scripty? Je mnoho editorů zdarma, mnoho shareware. Zaleží na vás, můžete používat i normální poznámkový blok (Notepad). Já osobně využívám služeb Code-Genie, což je editor pro programátory a dokáže rozpoznat symboliku pro mnoho jazyků včetně VBScriptu (symboliku jazyka si sami můžete upravovat).
Základy VBScriptu
Zde si probereme jak se deklarují proměnné, jak lze s nimi pracovat, jak usměrňovat tok ve skriptu a podobně. Proměnné se deklarují takto:Dim Zkusebni_Promenna |
Lze definovat více proměnných najednou:
Dim Zkusebni_Promenna, Zkusebni_Promenna2 |
Přiřazení proměnné hodnotu:
Zkusebni_Promenna = 10 'Priradi promenné cele cislo 10 Zkusebni_Promenna2 = 50 'Priradi promenne cele cislo 50 'Priradi promenne hodnotu Zkusebni_Promenna a pricte k ni 'hodnotu Zkusebni_Promenna2 Zkusebni_Promenna = Zkusebni_Promenna + Zkusebni_Promenna2 'Promenna ma nyni hodnotu 60 |
Jak vidíte poznámky se vkládají pomocí apostrofy '. Doporučuji nepoužívat diakritiku a vkládat poznámky k důležitým úsekům kódu. Hodí se to až se k němu budete vracet za měsíc i více, ale také to poslouží lidem, kteří budou po vás kód číst.
Operátory jsou zapisovány standardním způsobem.
'Scitani Zkusebni_Promenna = Zkusebni_Promenna + Zkusebni_Promenna2 'Odecitani Zkusebni_Promenna = Zkusebni_Promenna - Zkusebni_Promenna2 'Deleni Zkusebni_Promenna = Zkusebni_Promenna / Zkusebni_Promenna2 'Nasobeni Zkusebni_Promenna = Zkusebni_Promenna * Zkusebni_Promenna2 'Deleni beze zbytku Zkusebni_Promenna = Zkusebni_Promenna \ Zkusebni_Promenna2 'Exponent Zkusebni_Promenna = Zkusebni_Promenna ^ Exponent |
Existuje samozřejmě více operátorů, ale zatím nám vystačí (doufám) pouze tyto. Pokud vás zajímají, odkážu vás opět na MSDN.
Tok lze řídit standardními příkazy, ale upozorňuji, že jsou okleštěny oproti VB. Opět jenom ty základní:
If Podminka1 Then Prikaz_Pro_Podminku1 ElseIf Podminka2 Then Prikaz_Pro_Podminku2 Else Prikaz_Pro_Zbytek End If |
Řízení toku pomocí podmínky IF je snad v každém jazyce. Pokud je splněna podmínka, vykoná se daný příkaz. Chybí zde parametr GOTO, čili nelze zde skákat v kódu. Pokud chceme spouštět více příkazu za Then a psát pouze na jednom řádku, stačí příkazy oddělit dvojtečkou:
If A > 10 Then A = A + 1 : B = B + A : C = C + B |
Dalším způsobem je cyklus pomocí FOR. Probíháme v cyklu dokud proměnná Pocet nenabyde hodnoty Konec. Možnosti v hranatých závorkách naznačují, že tuto volbu nemusíme použít. Lze tedy skákat po zadaných krocích a cyklus předčasně ukončit.
For Pocet = pocatek To Konec [Step Krok] Prikazy [Exit For] Prikazy Next |
Aby jsem zbytečně nerozepisoval o každé funkci, objektech, nabízím vám seznamy s českým popisem.
Funkce se zapisují takto:
Zkusebni_Promenna = Exp(2) 'Vrati hodnotu 7,389056099 Zkusebni_Promenna = LTrim(" Zijeme jednom jednou") 'Vrati retezec "Zijeme jednom jednou" |
Objekty se vytvářejí takto:
Dim fso, f, ZkouskaCteni 'Nadefinuju promenne objektu Set fso = CreateObject("Scripting.FileSystemObject") 'Vytvorim objekt fso a jeho rodic je FileSystemObject Set f = fso.OpenTextFile("c:\testfile.txt", 2, True) 'Vytvorim objekt f z fso, f je nyni soubor testfile.txt a muzu do nej zapisovat f.Write "Ahoj světe!" 'Zapisu do f text Set f = fso.OpenTextFile("c:\testfile.txt", 1) 'Znova vytvorim objekt f z fso, f je nyni soubor testfile.txt a muzu z nej pouze cist ZkouskaCteni = f.Read(5) 'Prectu z f 5 znaku Msgbox ZkouskaCteni 'Zobrazim dialogove okno s nactenym obsahem |
Jak to použít v Rhinu
To byl teda velmi lehký základ. Jak ale dostat tyto skripty do Rhina?Skripty musíte ukládat s příponou ".RVB". Soubory lze načítat pomocí příkazů. Slouží k tomu:
- LoadScript
- RunScript
LoadScript
Po provedení příkazu se nám objeví dialogové okno, ve kterém lze pomocí tlačítka Add.. načítat skripty do paměti, tlačítkem Load je spouštět, Edit... je měnit, Remove odstranit. Dále je tu zatržítko Save. To vám umožní již načtené skripty uchovat v paměti. Rhino totiž automaticky po skončení skriptu pamět uvolní.RunScript
Po provedení příkazu se nám objeví dialogové okno, které je podobné jako u LoadScript. Pomocí tlačítka Merge.. načteme skript ze souboru. Daný skript se objeví v textovém okně a my je můžem upravovat. Tlačítkem Save... jej můžeme zpětně uložit do souboru a Run jej spustit. Ve spodní části máme ještě volbu jazyka, pro nás je standardně zvolen VBScript.Jak jsem v minulém díle slíbil, že si ukážeme vložení skriptu do tlačítka (přece jenom spouštění skriptů přes tyto obludná dialogová okna není to pravé), tak to bude až v příštím díle, kde si už ukážeme praktické ukázky využítí VBScriptu, a vysvětlíme si hrubou kostru objektů v Rhinu.
[-more-]{Funkce podporované ve VBScriptu}
Funkce podporované ve VBScriptu
Funkce | Popis |
Abs | Vrátí absolutní hodnotu čísla |
Array | Vrátí variantní obsah pole se zadanými hodnotami |
Asc/AscB/AscW | Vrátí ASCII hodnotu znaku |
Atn | Vrátí arcustangent argumentu |
Chr/ChrB/ChrW | Vrátí znak pro specifickou ASCII hodnotu |
Cbool | Konvertuje hodnotu do Boolean |
Cbyte | Konvertuje hodnotu do Byte |
Ccur | Konvertuje hodnotu do Currency |
Cdate | Konvertuje hodnotu do Date |
CDbl | Konvertuje hodnotu do Double |
Cint | Konvertuje hodnotu do Integer |
CLng | Konvertuje hodnotu do Long |
Cos | Vrátí cosinus argumentu |
CreateObject | Vytvoří novou instanci ze zadaného objektu |
CSng | Konvertuje hodnotu do Single |
Date | Vrátí aktuální datum |
DateSerial | Konvertuje hodnoty měsíce, dne, a roku do hodnoty datumu |
DateValue | Vrátí část datumu z hodnoty datumu |
Exp | Vrátí hodnotu dle funkce e^x argumentu |
Filter | Vrátí řetězec pole, který odpovídá daným kriteriím filtru |
Fix | Vrátí celou část z čísla (Fix (1.2) = 1 a Fix(-1.2) = -1) |
FormatCurrency | Zformátuje hodnotu jako měna |
FormatDateTime | Zformátuje hodnotu jako datum nebo čas |
FormatNumber | Zformatuje číslo |
FormatPercent | Zformatuje číslo jako procenta |
GetObject | Vrací vztah k automation objektu |
Hex | Vrátí řetězec obsahující hexadecimální hodnotu čísla |
InputBox | Zobrazí dialogové okno s řádkem pro zadání hodnoty |
InStr/InStrB | Vrátí počáteční pozici daného podřetězce |
InStrRev | Stejné jako InStr, ale začíná na konci řetězce |
Int | Vrací celou část čísla (Fix (1.2) = 1 a Fix (-1.2) = -2) |
IsArray | Vrátí pravdu jestliže argument je pole |
IsDate | Vrátí pravdu jestliže argument obsahuje platnou hodnotu datumu |
IsEmpty | Vrátí pravdu jestliže argument není inicializován |
IsNull | Vrátí pravdu jestliže argument obsahuje platná data |
IsNumeric | Vrítá pravdu jestliže argument obsahuje platné číslo |
IsObject | Vrátí pravdu jestliže argument obsahuje objekt |
Join | Spojí sérii řetězců (opak Split) |
Lcase | Konvertuje řetězec do malých znaků |
Left/LeftB | Vrátí levou část řetězce nebo bytů pole |
Len/LenB | Vrátí délku řetězce nebo bytů pole |
LoadPicture | Nahraje objekt obrázek |
Log | Vrátí log argumentu |
LTrim | Odstraní mezery z levé strany řetězce |
Mid/MidB | Vrátí podřetězec ze středu řetězce nebo bytů pole |
MsgBox | Zobrazí dialogové okno se zprávou |
Oct | Vrátí řetězec obsahující octanovou hodnotu čísla |
Replace | Nahradí jeden podřetězec s jiným podřetězcem definovaný vícekrát |
RGB | Vrátí barvu založenou na hodnotách červené, zelené a modré |
Right/RightB | Vrátí pravou část řetězce nebo bytů pole |
Rnd | Vrátí další náhodné číslo z generátoru náhodných čísel |
Round | Zaokrouhlí hodnotu dle zadaného čísla desetinných míst |
Rtrim | Odstraní mezery z pravé strany řetězce |
Sgn | Vrátí –1 jestliže je argument záporný, 0 jestliže je nula, +1 jestliže je kladný |
Sin | Vrátí sinus argumentu |
Space | Vyplní řetězec zadaným počtem mezer |
Split | Rozdělí řetězec do více řetězců podle podřetězce (opak Join) |
Sqr | Vrátí odmocninu argumentu |
StrComp | Potovná řetězce |
String | Vyplní řetězec zadaným znakem zadaným vícekrát |
StrReverse | Opačné pořadí znaků v řetězci |
Tan | Vrátí tangent argumentu |
Time | Vrátí aktuální čas |
TimeSerial | Konvertuje hodnotu hodiny, minuty, a vteřiny do hodnoty datumu |
TimeValue | Vrátí část času z hodnoty datumu |
Trim | Odstraní mezery z levé i pravé strany řetězce |
TypeName | Vrátí řetězec obsahující jmené typu proměnné |
VarType | Vrátí celé číslo obsahující typ proměnné |
[-more-]{Objekty podporované ve VBScriptu}
Objekty podporované ve VBScriptu
Objekt | Popis | |
Dictionary | Ukládá kolekci znaků a datových hodnot | |
Drive | Zpřístupní informace o diskových jednotkách; část z FileSystemObject | |
Drives | Obsahuje kolekci objektů jednotek; část z FileSystemObject | |
Err | Obsahuje informace o běhových chybách | |
File | Zpřístupní informace o souborech v adresářích; část z FileSystemObject | |
Files | Obsahuje kolekci objektů souborů; část z FileSystemObject | |
FileSystemObject | Poskytuje objektově orientovaný přístup k souborům a adresářům | |
Folder | Zpřístupní adresáře; část z FileSystemObject | |
Folders | Obsahuje kolekci z objektů adresář; část z FileSystemObject | |
TextStream | Zpřístupní obsah souborů; část z FileSystemObject |
[-more-]{Příkazy podporované ve VBScriptu}
Příkazy podporované ve VBScriptu
Příkaz | Popis |
Call | Spustí podprogram |
Const | Nadeklaruje konstantu |
Dim | Nadeklaruje proměnou |
Do/Loop | Provádí smyčku dokud platí podmínka nebo když podmínka je pravdivá |
Erase | Přeinicializuje obsah pole o pevné velikosti a uvolní všechnu paměť přidělenou tomuto poli o pevné velikosti |
For/Next | Provádí smyčku při iterování proměnné |
For Each/Next | Provádí smyčku při iterování skrze skupinu objektů |
Function/End Function | Nadeklaruje funkci která bude vracet hodnotu |
If/Then/Else/End If | Podmíněné provádění jednoho příkazu nebo dalších |
On Error | Vyvolá specifikované akce jestliže vyvstane chybový stav |
Option Explicit | Požaduje aby všechny proměnné byli před použitím nadeklarovány |
Private | Nadeklaruje lokální proměnou |
Public | Nadeklaruje veřejnou proměnou |
Randomize | Inicializuje generátor náhodných čísel |
ReDim | Změní velikost pole |
Select Case/End Select | Vybere jediný podmínku ze seznamu možných podmínek |
Set | Přiřadí vztah k objektu nebo vytvoří nový objekt |
Sub | Nadeklaruje podprogram |
While/Wend | Provádí smyčku dokud je podmínka pravdivá |
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
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
29. listopadu 2013
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
14. října 2024
-
22. října 2024
-
14. listopadu 2024
-
10. prosince 2024