Nacházíte se zde: Rhino3D.cz > Články > Rhinoceros > Píšeme skripty v programu Rhinoceros


Píšeme skripty v programu Rhinoceros

Publikováno: 11.7.2005 | Autor: Jan Slanina | Rubrika: Rhinoceros | Komentáře: 0 - Doporučit

Píšeme skripty - ikonaJak jste už jistě víte, na tomto serveru publikujeme překlad velice kvalitní příručky k RhinoScriptu od Davida Ruttena. Protože se tento seriál zabývá skriptováním spíše z pohledu Visual Basicu a jeho syntaxe, nebude na škodu, když si v tomto článku povíme něco o skriptování z pohledu Rhina.

Píšeme skripty v programu Rhinoceros

Jak jste už jistě víte, na tomto serveru publikujeme překlad velice kvalitní příručky k RhinoScriptu od Davida Ruttena. Protože se tento seriál zabývá skriptováním spíše z pohledu Visual Basicu a jeho syntaxe, nebude na škodu, když si v tomto článku povíme něco o skriptování z pohledu Rhina.


Text vznikl jako rozšířený překlad nápovědy k RhinoScriptu, která je v Rhinu zašitá tak důkladně, že o ní naprostá většina uživatelů vůbec neví. Tato nápověda byla poněkud přepracována na nejnovější verzi RhinoScriptu, která se projevuje zejména zcela novým vzhledem okna pro psaní a úpravu skriptů. Konkrétně pracuji v „předfinální" verzi servisního balíčku č. 4.

Úvod

Microsoft® Windows® Script je komplexní skriptovací infrastruktura pro platformu Windows. Windows Script nabízí skriptovací jazyky, jako je Visual Basic® Scripting Edition, které mohou být začleněny do Windows aplikací a také rozsáhlou paletu podpůrných technologií, které uživatelům usnadňují skriptování.


Visual Basic Scripting Edition, známý také pod názvem VBScript®, umožňuje autorům psát skripty pomocí podmnožiny jazyka Microsoft Visual Basic. Pokud již programujete ve Visual Basicu, nepo pokud nejste programátorem, ale hledáte skriptovací jazyk, který se snadno naučíte, mohl by pro vás být VBScript tím pravým. VBScript je implementován jako rychlý, přenosný interpreter pro použití ve webových prohlížečích a v aplikacích, které používají řídicí prvky ActiveX™ a OLE Automation servery.


VBScript je podmnožinou jazyka Visual Basic for Applications, která se používá v populárních aplikacích, jako je Microsoft Excel®, Microsoft Access® a Microsoft Project®. VBScript byl navržen tak, aby byl rychlý, takže nepodporuje použití typů strict -- podporuje pouze variants. Také musí být bezpečný pro web, takže nebosahuje funkčnost pro přímý přistup k operačnímu systému klientského počítače nebo k souborovému systému. Nemůžete například provádět souborové operace nebo číst registry na klientském počítači.


RhinoScript je zásuvný modul pro Rhinoceros®, který implementuje Windows Script. Nad rámec podpory VBScriptu RhinoScript také spouští OLE Automation server, který zpřístupňuje vnitřní činnost Rhina automatickému zpracování.


Začínáme

Tento návod vám ukáže, jak v Rhinu zobrazit okno s nápisem "Ahoj světe". Probereme si základní postupy úprav, nahrávání a spouštění skriptů. Předpokládám, že máte v Rhinu 3.0 nainstalovaný nejnovější servisní balíček


Toto je celý skript:

MsgBox "Ahoj světe"

Otestujeme si skript

  • Spusťte Rhino
  • V příkazovém řádku zadejte příkaz UpravitSkript (EditScript) a stiskněte Enter
  • Objeví se dialogové okno UpravitSkript
  • Do tohoto okna zadejte:

MsgBox "Ahoj světe"


dialogové okno

  • V roletovém menu dialogového okna UpravitSkript vyberte položku Nástroje > Spustit (Tools > Run). Ve starších verzích RhinoSkriptu se na boku okna nacházelo tlačítko Spustit (Run).
  • Objeví se výsledek našeho snažení - následující okno:

ahoj svete

Procedura AhojSvete

Pokud byste psali složitější skript a chtěli byste zobrazit "Ahoj světe" na nejrůznějších strategických místech roztroušených ve skriptu, mohli byste zadat kód MsgBox "Ahoj světe" pokaždé, když byste chtěli, aby se tato zpráva zobrazila.


Pokud byste však změnili názor a chtěli byste místo toho zobrazit hlášení "Nazdar světe", museli byste najít všechna místa, kde jste použili "Ahoj světe" a tyto řetězce zaměnit.


Snadnějším řešením tohoto problému je napsání procedury. Na různých místech skriptu pak budete volat tuto procesuru, anglicky Suborutine (zkráceně Sub). Procedura obstará zobrazení zprávy, takže stačí, když zprávu změníte na jediném místě.


Takto by naše procedura vypadala:

Sub AhojSvete()
   MsgBox "Ahoj světe"
End Sub


Proceduru zavoláte tak, že jednoduše napíšete:


AhojSvete

 

Testujeme proceduru AhojSvete

  • v příkazovém řádku zadejte příkaz UpravitSkript (EditScript) a stiskněte Enter
  • objeví se dialogové okno UpravitSkript
  • do tohoto okna zadejte:

Sub AhojSvete()
   MsgBox "Ahoj světe"
End Sub

 

  • v roletovém menu dialogového okna UpravitSkript vyberte položku Nástroje > Spustit (Tools > Run). Nic se nestalo? To proto, že RhinoScript sice definoval proceduru, ale vůbec jste ji nezavolali.
  • proceduru zavoláme tak, že přidáme odpovídající řádek kódu a spustíme program znovu

 

Sub AhojSvete()
   MsgBox "Ahoj světe"
   End Sub
AhojSvete

 

Uložení procedury AhojSvete


Pokud napíšete více než jen pár řádků skriptu, budete chtít tento skript uložit do souboru, abyste jej mohli příště už jenom nahrát a spustit, bez nutnosti jej opět psát.


Uložení skriptu:

  • v roletovém menu dialogového okna UpravitSkript vyberte položku Soubor > Uložit jako (File > Save As)
  • uložte soubor jako "Ahoj svete.rvb"


Spuštění procedury AhojSvete.rvb

  • v příkazovém řádku zadejte příkaz NahrátSkript (NahrátSkript) a stiskněte Enter.
  • v dialogovém okně Nahrát soubor se skriptem (Load Scrip File) klikně na Přidat... (Add...)
  • vyberte soubor "Ahoj světe.rvb" a klikněte na Otevřít.
  • v políčku Vyberte skript, který chcete nahrát zvolte "Ahoj světe.rvb".
  • klikněte na Nahrát (Load).


Skript se spustí a zobrazí známé okno "Ahoj světe".

Nahrávání skriptů

Příkaz NahrátSkript (NahrátSkript) se používá k nahrávání skriptů z disku do paměti systému VBScriptu. Příkaz NahrátSkript lze vyvolat buď z menu Nástroje (Tools) nebo zadáním příkazu "NahrátSkript" (NahrátSkript) v příkazovém řádku.

okno

Volby a operace příkazu NahrátSkript

Nahrát

Nahraje vybraný soubor se skriptem do paměti systému VBScriptu.

Zavřít

Zavře dialogové okno.


Přidat

Přidá jeden nebo více souborů se skriptem do seznamu dostupných souborů. Výchozí koncovka VBScriptových souborů pro RhinoScript je "RVB".

Odstranit

Odstraní jeden nebo více souborů se skriptem ze seznamu dostupných souborů.

Upravit

Nahraje vybraný soubor se skriptem do výchozího editoru skriptů. Viz. kapitolu Volby skriptování pro podrobnosti o přiřazování výchozího editoru skriptů.

Nápověda

Zobrazí elektronickou nápovědu.


Uložit seznam

Pokud je zatrženo, bude mezi jednotlivými sezeními Rhina uložen soubor dostupných souborů se skripty.

Pokud nahraný soubor se skriptem obsahuje pouze procedury nebo definice funkcí VBScriptu, pak není kód skritptu spuštěn, ale je zkontrolován na chyby syntaxe a je nahrán do paměti interpreteru VBScriptu, takže může být později vyvolán buď uživatelem nebo jinými funkcemi či procedurami VBScriptu. To je skvělý způsob nahrávání společných funkcí, používaných mnoha různými procedurami nebo pro nahrávání velkých skriptů, které může být časově náročné, kdybyste je chtěli nahrát pokaždé, když chcete spustit skript.


Pokud nahraný soubor se skriptem obsahuje kód VBScriptu mimo rozsah definice procedury nebo funkce, je kód skriptu zkontrolován, interpretován a okamžitě vykonán. To je užitečné, když definujete globální proměnné nebo pokud chcete jenom spustit blok kódu, když je nahrán soubor se skriptem.

 


Skriptování příkazu NahrátSkript

Stejně jako je tomu ve většině příkazů Rhina, lze i NahrátSkript použít ve skriptech a tak obejít interaktivní dialogové okno. Chcete-li skriptovat příkaz NahrátSkript, jednoduše před jeho název zařaďte pomlčku, když jej budete zadávat v příkazovém řádku. Například takto:


-NahrátSkript


Po odeslání příkazu budete vyzváni k zadání názvu souboru se skriptem, který chcete nahrát. Jednoduše zadejte plnou cestu k souboru se skriptem. V případě dlouhých názvů souborů nebo cest, které obsahují mezery, můžete použít uvozovky. Pokud nezadáte plnou cestu bude příkaz NahrátSkript hledat soubor se skriptem v následujících umístěních:

  1. složka aktuálního modelu
  2. každá složka, uvedená v uživatelem definované vyhledávací cestě Rhina (pro kontrolu nebo úpravu této cesty použijte příkaz Volby (Options), stránka Soubory (Files)
  3. všechny systémové složky Rhina
  4. složka se spustitelným souborem Rhina


Přiřazení příkazu NahrátSkript k nástrojovému tlačítku

Příkaz NahrátSkript lze také přiřadit pod nástrojové tlačítko Rhina. Klikněte pravým tlačítkem myši společně s klávesou Shift na tlačítko, pod které chcete skript přiřadit (nové tlačítko do palety přidáte tak, že klikněte pravým tlačítkem myši na titulek odpoutané nástrojové palety a v menu, které se objeví, vyberete položku Přidat tlačítko... (Add button...)). Do pole pro příkazy pak zadáte buď příkaz ! -NahrátSkript nebo univerzálněji ! -_LoadScript, následovaný názvem souboru se skriptem, případně s plnou cestou.

okno

Spouštění skriptů

Příkaz SpustitSkript (SpustitSkript) se používá pro vykonání procedur skriptu, které byly nahrány do systému VBScriptu příkazem NahrátSkript (LoadScript).

okno

Operace SpustitSkript

Dialogové okno SpustitSkript zobrazí pouze seznam nahraných subrutin, které neobsahují žádné argumenty. Pokud se tedy pokusíte pomocí příkazu NahrátSkript nahrát následující skript:

Sub Test1()
   MsgBox "Test1"
End Sub
Sub Test2(strHlaseni)
   MsgBox strHlaseni
End Sub
Function Test3()
   MsgBox strHlaseni
   Test3 = strHlaseni
End Function


V dialogovém okně SpustitSkript se objeví pouze procedura "Test1", protože je to jediná deklarace procedury, která je bez argumentů. Uvědomte si, že procedury "Test2" a "Test3" jsou nahrané, ale pouze nejsou viditelné v dialogovém okně SpustitSkript.


Skriptování příkazu SpustitSkript

Stejně jako je tomu ve většině příkazů Rhina, lze i SpustitSkript použít ve skriptech a tak obejít interaktivní dialogové okno. Chcete-li skriptovat příkaz SpustitSkript, jednoduše před jeho název zařaďte pomlčku, když jej budete zadávat v příkazovém řádku. Například takto:


-SpustitSkript


Po odeslání příkazu budete vyzváni k zadání názvu nahrané procedury skriptu, kterou chcete spustit.


Přiřazení příkazu SpustitSkript k nástrojovému tlačítku

Příkaz SpustitSkript lze také přiřadit pod nástrojové tlačítko Rhina. Klikněte pravým tlačítkem myši společně s klávesou Shift na tlačítko, pod které chcete skript přiřadit (nové tlačítko do palety přidáte tak, že klikněte pravým tlačítkem myši na titulek odpoutané nástrojové palety a v menu, které se objeví, vyberete položku Přidat tlačítko... (Add button...)). Do pole pro příkazy pak zadáte buď příkaz ! -NahrátSkript nebo univerzálněji ! -_LoadScript, následovaný názvem souboru se skriptem, případně s plnou cestou.


Když je přiřazen pod nástrojové tlačítko, může příkaz SpustitSkript vykonat procedury, které již byly nahrány příkazem NahrátSkript nebo může vykonat surový kód VBScriptu. Chcete-li začlenit surový kód VBScriptu pod tlačítko, musíte kód vložit mezi kulaté závorky.

okno

Úprava skriptů

Pro psaní nebo úpravy skriptů můžete použít jakýkoliv jednoduchý textový editor, například Notepad. Když ukládáte skript do souboru, ujistěte se, že mu dáte koncovku RVB, která je specifická pro soubory RhinoScriptu.


Skripty můžete také vytvářet a upravovat přímo v Rhinu pomocí příkazu UpravitSkript (EditScript). Příkaz UpravitSkript lze vyvolat buď z menu Nástroje (Tools) nebo zadáním příkazu "UpravitSkript" (resp. EditScript ) v příkazovém řádku. Skriptovatelná verze příkazu UpravitSkript neexistuje.

editor

Editace skriptů pomocí Microsoft Visual Studia 6.0

Ačkoliv Visual Studio 6.0 neobarvuje text souborů VBScriptu podle syntaxe, vybarvuje text svých vlastních VBScript makro souborů, které mají koncovku .DSM. Ukazuje se, že vybarvování syntaxe VBScriptu pro jiný typ souborů je velice jednoduché - stačí přidat koncovku souboru do seznamu v registru.


Ještě než začnete, ukončete Visual Studio, protože jinak by tento program zpětně opravil všechny úpravy registrů, které byste provedli, zatímco byl otevřený. Poté spusťte editor registrů, například Regedit a najděte klíč registru HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Text Editor\Tabs/Language Settings\VBS Macro. Obsahuje hodnotu REG_SZ (řetězec) s názvem FileExtensions. Tato hodnota bude již obsahovat "DSM"; pokud ji upravíte, aby obsahovala "DSM;VBS;RVB" a poté restartujete Visual Studio, budou nyní soubory VBScriptu s koncovkou .VBS a soubory RhinoScriptu s koncovkou .RVB vybarvovány podle syntaxe, stejně jako makro soubory Visual Studia.

registry



Volby skriptování

Existuje několik voleb, které si můžete v prostředí RhinoScriptu upravit. Tyto volby jsou dostupné buď v menu Nástroje (Tools) nebo zadáním příkazu Volby (Options) v příkazovém řádku Rhina.

Volby RhinoScriptu

Znovu inicializovat...

Pokud je tato volba zatržena, pak budou všechny funkce, proměnné a procedury skriptu, nahrané během modelovacího sezení, při otevření nového modelu Rhina vymazány. Pokud volba zatržena není (výchozí hodnota), potom budou veškeré procedury, funkce a proměnné zachovány i při otevření nového modelu.

Textový editor...

Tato volba určuje výchozí editor, který se použije po stisknutí tlačítka Upravit (Edit) v dialogovém okně příkazu NahrátSkript (LoadScript).


Tyto skripty nahrát...

Tato volba vám umožní specifikovat jeden nebo více skriptů, které budou nahrány automaticky při každém spuštění Rhina. Pokud je zatržena volba „Znovu inicializovat...", poté bude skript nahrán pokaždé, když je otevřen nový model. Pokud je zadána relativní cesta, bude Rhino hledat spouštěcí skripty v následujících umístěních:

  1. složka aktuálního modelu
  2. každá složka uvedená v uživatelem definované vyhledávací cestě (příkaz Volby (Options), panel Soubory (Files))
  3. všechny systémové složky Rhina
  4. složka se spustitelným souborem Rhina

Další informace najdete v nápovědě RhinoScriptu, kterou si můžete vyvolat tak, že zadáte příkaz UpravitSkript (EditScript) a stisknete klávesu F1.