Nacházíte se zde: Rhino3D.cz > Články > Zásuvné moduly > Monkey pro Rhino 4 - chytrá opoce!


Monkey pro Rhino 4 - chytrá opoce!

Publikováno: 5.11.2006 | Autor: Jan Slanina | Rubrika: Zásuvné moduly | Komentáře: 6 - Doporučit

Monley - ikonaNení žádných pochyb o tom, že skriptování je extrémně silný a užitečný nástroj pro zvýšení schopností Rhina v oblastech, kde samotné Rhino nabízí nedostatečné nebo žádné nástroje a také v situacích, kdy si chcete ulehčit nebo zautomatizovat určité činnosti. Dosud bylo nutné psát skripty v jednoduchém editoru, ale nyní se situace výrazně zlepšuje a to díku Davidu Ruttenovi, takto skriptovacímu polobohu.

Na úvod začnu několika slovy o skriptování v praxi. Před pár dny jsem seděl na akci Rhino v4.0 in Architecture (podrobný referát z tohoto setkání najdete brzo na tomto serveru) a poslouchal jsem přednášku Davida Ruttena, autora skriptovacího rozhraní Monkey. Z jeho slov bylo jasné, že to autoři Rhina se skriptováním myslí vážně a považují je za velice silnou zbraň Rhina. Tuto myšlenku pak potvrdily prezentace několika high-end architektonických projektů, které jsou v této chvíli již prakticky realizovány. Jedno je jisté - v Rhinu se dají dělat neuvěřitelné výzkumné a inovativní práce, na takové úkoly si ale dnes již s obyčejným modelováním nevystačíte. Chcete udělat na fasádě padesátimetrovou ocelovou větev stromu a obalit ji subdivision plochami,optimalizovat ji, vyhladit ji a rozdělit ji na subdivision pláty a nalézt a označit automaticky všechny pláty s jednoduchou i s dvojitou křivostí? Chcete mít na fasádě fraktál z automaticky vygenerovaných Sierpinského trojúhelníků se zadnou tloušťkou a s konstrukčními prvky? Chcete si nechat automaticky vygenerovat nosníky složité mostní konstrukce volného tvaru? To vše pro vás udělá šikovně napsaný skript. Pokud to s použitím Rhina v praxi myslíte vážně, je opravdu nejvyšší čas začít se o skripty zajímat. Díky Monkey teď máte jednodušší výchozí pozici než kdykoliv předtím.

Co je to Monkey?

Monkey je nové skriptovací prostředí v Rhinu 4, které můžete použít pro editaci, spouštění a ladění skriptů. Obsahuje veškeré standardní funkce programátorského editoru, jako je nalezení a nahrazení (s regulárními výrazy), vícedokumentové rozhraní, stromy kódu a integrované soubory nápovědy.

Monkey je DotNET plugin, to znamená, že na vašem počítačí musíte mít nainstalován Microsoft DotNET Framework 2.0. Většina počítačů již splňuje požadavky DotNET, takže si jej budete muset stáhnout a nainstalovat pouze tehdy, když nebude Monkey fungovat (v takovém případě obdržíte chybové hlášení, které vám sdělí důvod selhání).

Použití a funkce

Po instalaci Monkey by se mělo v Rhinu objevit nové menu, které vám poskytne přístup do editoru skriptů, do rekordéru skriptů a do kompileru skriptů. Záznam skritpů je experimentální funkce a v tomto textu nebude probírána. Kompiler skriptů je externí nástroj (může být spuštěn mimo Rhina, ale musíte mít nainstalované Rhino4), který lze spustit z menu Monkey.

Monkey pro Rhino 4 - 01

Kompiler skriptů

Tento průvodce vám umožní zkompilovat jakýkoliv počet souborů RhinoScript do zásuvného modulu DotNET, který lze spustit na všech podobných verzích Rhina po celém světě. Mezi bezprostřední přínosy patří:

  • kód skriptu je zapouzdřený (nečitelný)
  • skripty budou napojené na uživatelské příkazy
  • pro spouštění svých skriptů můžete do Rhina přidávat menu
  • snazší distribuce
  • můžete balit velké soubory s knihovnami skriptů

Kompiler je typická aplikace typu průvodce, které vás provede čtyřim nezbytnými kroky:

  1. definice atributů skriptu
  2. definice atributů příkazů skriptu
  3. definice nastavení kompilace
  4. vlastní kompilace

Musíte zadat platný název svého zásuvného modulu (pluginu) a všechny jeho příkazy (žádné exotické znaky, bez mezer). Pokud zadáte konfliktní název (například zadáte název již existujícího příkazu "Circle"), bude sice zásuvný modul překompilován, ale nenahraje se. Všechna ostatní políčka atributů zásuvného modulu kromě názvu jsou nepovinna.

Do zásuvného modulu musíte přidat nejméně jeden skript. Když přidáte skript, uvidíte vyskakovací dialogové okno, které vám umožní změnit atributy příkazu skriptu:

Můžete specifikovat název uživatelského příkazu a skupinu uživatelských atributů:

Monkey pro Rhino 4 - 03

  1. Hide command - zabrání příkazu v tom, aby se objevil v autokompletačním menu v příkazovém řádku
  2. Disable undo - zaznamenávání kroků upět (undo) bude během chodu tohoto skriptu vypnuto
  3. Echo script - před spuštěním bude skript zobrazen v příkazové historii
  4. Add to plugin menu - název příkazu skriptu bude přidán do menu zásuvného modulu
  5. Procedure library - určuje, že tento skript je knihovna procedur, to znamená, že neobdrží název příkazu, ale bude nahrán před spuštěním jakéhokoliv příkazu jiného zásuvného modulu

Po přidání všech skriptů do zásuvného modulu vás tlačítko [Next] přesune na stránku nastavení kompileru. V této chvíli můžete uložit Compiler project stiskem tlačítka s rozvinutým políčkem. To vám umožní rychle obnovit projekt, pokud jej potřebujete překompilovatit (například když byla vydána nová verze Rhina nebo když jste provedli změny ve skriptech).

Pokud chcete mít se svým zásuvným modulem asociované menu, zatrhněte políčko "Create plugin menu". V okamžiku nahrání zásuvného modulu můžete také zobrazit uživatelské hlášení v příkazové historii Rhina.

Když stisknete tlačítko [Compile], vytvoří průvodce nový zásuvný modul Rhina (*.rhp) v zadaném umístění (standardně na ploše). Tento zásuvný modul můžete nahrát jeho přetažením do Rhina4.

Monkey editor

Editor skriptů Monkey je skutečný zásuvný modul pro Rhino, což znamená, že může být spuštěn pouze uvnitř Rhina4. Můžete spustit buď příkaz _Monkey, nebo můžete tento editor vyvolat přes menu Monkey. Po krátké prodlevě (ano, já vím, na rychlejším nahrávání usilovně pracujeme) uvidíte editor v celé jeho kráse:

Velký strom vlevo zobrazuje všechny metody RhinoScriptu, které můžete použít. Pokud na nějakou poklepete myší, dostanete se na příslušnou stránku v nápovědě RhinoScriptu. Tyto metody můžete přetáhnout myší do okna editoru. Strom metod můžete prohledávat pomocí textového políčka v horní části nebo můžete kliknutím na vyhledávací tlačítko otevřít okno s pokročilým vyhledáváním. Pokročilé vyhledávání vám umožňuje vyhledávat více termínů najednou (oddělených mezerami) a zobrazí všechny položky splňující kritéria, místo pouhé první z nich.

Většina voleb jsou standardní funkce a nebudu se jimi zde zabývat. Zde je seznam položek menu, které nejsou obvyklé:

•View » Link To Rhino Zobrazí dialogové okno Monkey editor, při změně je nutné restartovat Rhino
•View » Hide during Execution Během spuštění skriptu skryje okno Monkey
•View » Hide during Recording Během záznamu skriptu skryje okno Monkey
•View » Code Blocks Zobrazí sbalitelné rámečky kolem procedur a struktur tříd
•Source » Run Spustí právě aktivní skript
•Source » Debug Spustí právě aktivní skript a zastaví všechny breakpoint řádky
•Tools » Options Zobrazí dialogové okno s volbami Monkey
•Tools » ASCII Table Zobrazí ASCII tabulku Monkey

Laděni skriptu

Monkey do Rhina přináší funkce ladění skriptů. Pokud na určité řádky skriptu přidáte "breakpoints" a spustíte jej v režimu Debug, bude provádění skriptu na těchto breakpointech zastaveno. Bude zobrazeno dialogové okno, které vypíše hodnoty všech dostupných proměnných. Níže uvedený skript má breakpointy na řádcích 10 a 12.

Breakpoints jsou experimentální funkce, takže je raději moc nepoužívejte.

Pod článkem najdete odkaz na stažení Monkey pro Rhino 4 beta z 23. října. Sledujte pravidelně tento odkaz, protože se zde budou objevovat nové verze, překompilované pro nové betaverze Rhina 4.

Související odkazy

Nahoru ↑

Diskuse k článku

  • [6] fuzzy3d16. 11. 2006, 06:07 – reakce na [5]

    reagovat

    Díky za podrobný komentář.
    Na stránkách Microsoftu chodím pro pomoc sem:
    http://msdn.microsoft.com/library/default.asp?url= /library/en-us/script56/html/ddfa5183-d458-41bc-a4 89-070296ced968.asp
    Přiznám se že většinu posaných problémů beru jako normální syntax tohoto nástroje, který se může lišit od toho který člověk používal dosud a je to subjektivní (např. že arrBod(2) má 3 prvky mi přijde normální). Taky při psaní preferuju přehlednost a čitelnost před kompaktním kódem- abych se v tom dobře vyznal já nebo mí následovníci i po letech. Nemusím optimalizovat (zatím) pro rychlost nebo velikost kódu.
    Víc mne trápí že v dokumentech o RhinoScriptu od fy. McNeela se dost často mění styl psaní jednotlivých příkladů.
    Hlavně ze Scriptig booku jsem dost zklamaný.
    Určitě to psalo víc lidí, ale měli se domluvit. Microsoft mi připadá víc pořádnější, proto jsem přešel na jeho štábní kulturu.

  • [5] tyglik – 15. 11. 2006, 22:34 – reakce na [4]

    Reaguje: [6] - reagovat

    Aby nedošlo k nedorozumnění. Rhinoscript, tedy VBScript rozšířený o stovky metod objektu Rhino, je skutečně silný nástroj v němž lze stvořit v podstatě cokoliv; pro mne je to však jazyk záludný, na první pohled jednoduchý, časem ale zjistíte, že většina kódu je balast, a že musíte napsat spoustu řádků, abyste vyjádřil jednoduchou myšlenku. Samozřejmě že to může být jen můj pocit...
    Na co si dát pozor?
    -používat vynucenou deklaraci proměnných; klíčové slovo Option Explicit!
    pro zpřehlednění kódu je užitečné vědět, že:
    -výrazy se oddělují na řádku dvojtečkou dim a, b: a = 5 : b = 10
    -jeden výraz se dá naopak rozdělit na více řádků použitím podtržítka na konci řádku
    dim a
    a =_
    5 \' tohle bude fungovat, ale není to ukázka přehlednosti!

    -pole deklarované pomocí t(5) má šest prvků, ne pět; stejně tak t(2,2) je matice 3x3 o devíti prvcích; první prvek má vždy index nula
    -vnímat rozdíly při zacházení s polem charakteru matice vytvořeným pomocí dim t: t(2,3) versus polem-polí vytvořeným pomocí funkce Array, t = Array(Array(10,20), Array(30,40)); přístup k prvku matice je přes t(1,2) = \"hodnota\", k prvku pole polí však přes t(1)(0) = \"hodnota\"
    -vše je datový typ Variant, občas však budete muset explicitně převést proměnnou na určitý podtyp; funkce CStr(), CDbl(), atd.
    -ujasnit si volání funkcí a procedur, kdy závorky okolo argumentů ne, a kdy ano; popřípadě používat klíčové slovo Call
    -operátor = je používán pro přiřazení x = 5, stejně jako při vyhodnocení výrazu if (x = 5) then \"něco\"; lze používat klíčové slovo Eval
    -pochopit způsob, jakým se defaultně předávají argumenty funkcím (function) a procedurám (sub); klíčová slova ByRef, ByVal
    -ujasnit si rozsah platnosti deklarovaných proměnných
    -naučit se používat For Each ... Next
    ...... a chcete-li ušetřit víc nervových buněk než já, tak zavčas přečíst http://www.dritsas.net/scripting/scripting_book.ht ml a
    http://www.rhino3d.com/rhinoscript101 a najít nápovědu k VBScriptu na počítači (u mne na PC název Script56.chm) nebo ji stáhnout někde ze stránek microsoftu... nápověda k Rhinoscriptu pojednává pouze o metodách objektu Rhino

  • [4] fuzzy3d15. 11. 2006, 06:22 – reakce na [3]

    Reaguje: [5] - reagovat

    Mohl bys to rozvést? Některé věci se mi zdají jiné než jsem byl zvyklý, ale bral jsem to jako fakt a jako svoji neznalost. Napiš stručně na co si dát pozor u VBscriptu- pro mne a ostatní.
    Dík.

  • [3] tyglik – 14. 11. 2006, 14:03

    Reaguje: [4] - reagovat

    Možná to skutečně autoři Rhina se skriptováním myslí vážně a považují je za velice silnou zbraň Rhina, já naopak považuju výběr skriptovacího jazyka VBScript za největší omyl v historii Rhina. VBScript obsahuje dost podivností, které lidi byť jen trochou zkušeností s programováním musí připadat jako noční můra. Třebaže ve verzi pro Rhino4 jsou již zahrnuty funkce pro zacházení s vektory, nějaký z tzv. "array programming languages" by CAD aplikaci slušel mnohem víc...

  • [2] Jan Slanina14. 11. 2006, 07:14 – reakce na [1]

    reagovat

    Myslím že Monkey bude volně ke stažení, možná se stane součástí Rhina 4 až bude hotov.

  • [1] fuzzy3d14. 11. 2006, 06:13

    Reaguje: [2] - reagovat

    Jak se bude monkey distribuovat? Bude volný nebo se dá odhadnout cena...