Nacházíte se zde: Rhino3D.cz > Články > Rhinoceros > RhinoScript příloha B: Metody rozhraní Rhina


RhinoScript příloha B: Metody rozhraní Rhina

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

Ikona - prilohaRhino je aplikace s příkazovým řádkem i s grafickým rozhraním. RhinoScript nabízí metody pro práci s oběma. V našich příkladech jsme již některé z těchto metod použili. V podstatě existují 2 typy metod rozhraní - metody pro zprávy a získávací metody. První skupina metod „zásobuje“ uživatele informacemi, druhá skupina metod poskytuje datovou interakci s uživatelem.

B Metody rozhraní Rhina

B.1 Prvky rozhraní a dialogy

Rhino je aplikace s příkazovým řádkem i s grafickým rozhraním. RhinoScript nabízí metody pro práci s oběma. V našich příkladech jsme již některé z těchto metod použili. V podstatě existují 2 typy metod rozhraní:

  • Metody pro zprávy
  • Získávací metody

B.2 Metody pro zprávy

První skupina metod „zásobuje" uživatele informacemi. Podle toho, jaké informace chceme poskytnout, fungují některé metody lépe než jiné. Pokud jsme například nakódovali dlouhý běžící proces, bude vhodné informovat uživatele o jeho průběhu. Uživatelské rozhraní Rhina nenabízí z jiných aplikací známý prvek typu „teploměr", ale můžete využít několik druhů textových polí, jako je příkazový řádek a stavový řádek;

  • Rhino.Print() nebo Rhino.PrintEx()
  • Rhino.Prompt()
  • Rhino.StatusBarMessage()

Výhodou výše uvedených metod je, že zobrazují informace a na nic se neptají. Zpráva se jednoduše objeví na obrazovce a bude přepsána další zprávou. Rozdíl mezi Rhino.Print() a Rhino.Prompt() je v tom, že historie příkazové řádky vstřebá řetězce, napsané metodou Rhino.Print(). Zde je malý příklad intenzivního cyklu se zpětnou vazbou o jeho průběhu:

N+1   lngIterace = 1
N+2   Do
N+3         dblSoucasnaDelka = Rhino.CurveLength(strIDKrivky)
N+4         'Uložíme si aktuální délku křivky
N+5         docasnaKrivka = ContractCurveVertices(strIDKrivky)
N+6         'Přesuneme každý vrchol naší křivky na průměr jeho sousedů
N+7         docasnaKrivka = PullCurveToSurface(strSurfaceID, docasnaKrivka)
N+8         'Nabalíme vrcholy naší křivky zpět na plochu
N+9
N+10        dblNovaDelka = Rhino.CurveLength(docasnaKrivka)
N+11        'Uložíme novou délku křivky a porovnáme se starou
N+12        If dblNovaDelka >= dblSoucasnaDelka Then
N+13              'Věci se zhoršily, vrátíme starou situaci a zastavíme
N+14              Rhino.DeleteObject docasnaKrivka
N+15              Exit Do
N+16        Else
N+17              'Věci se zlepšily, akceptujeme novou situaci a pokračujeme
N+18              Rhino.DeleteObject strIDKrivky
N+19              strIDKrivky = docasnaKrivka
N+20        End If
N+21        lngIterace = lngIterace + 1
N+22        Rhino.Prompt lngIterace & " iterations complete..."
N+23  Loop
N+24  Rhino.Print "Geodetická délka křivky je " & Rhino.CurveLength(strIDKrivky)

Předchozí blok kódu reprezentuje část skriptu, který vytváří geodetické křivky. Samozřejmě není umístěn na začátku skriptu, proto jsme použili číslování řádků „N+číslo". Tento kus kódu vyžaduje existenci dvou uživatelských funkcí s názvy ContractCurveVertices() a PullCurveToSurface(). Protože se nám jedná o ukázku rozhraní, nebude se jimi teď zabývat. Obě budou v příloze C, která se bude zabývat objekty typu křivka.

Tento algoritmus provádí několik intenzivních operací, takže zpětná vazba je nezbytná, aby si uživatel nemyslel, že skript „zatuhnul". Pro počítání počtu vykonání cyklu použijeme proměnnou. V podstatě můžeme uživateli poskytnout mnohem více informací, například novou délku a účinnost poslední iterace. V takovém případě by řádek N+22 vypadal takto:

Rhino.Prompt lngIterace & " iterací dokončeno... " & _
Délka geodetické křivky: " & dblNovaDelka & "mm " & _
100 - (dblNovaDelka/(dblSoucasnaDelka/100)) & _
"o % kratší než předchozí délka"

dialog - iterace

B.3 Získávací metody

Druhá skupina metod poskytuje datovou interakci s uživatelem. Na rozdíl od pouhého poslání zpráv na obrazovku také od uživatele vyžaduje odpověď. K dispozici je mnoho získávacích metod (nápověda RhinoScriptu jich uvádí 27), můžeme je rozdělit do 2 typů:

  • Metody získávající hodnoty
  • Metody získavající geometrii

Metody získávající hodnotu používáme tehdy, když skript vyžaduje číselný nebo textový vstup. Již jsme se seznámili s některými metodami získávajícími hodnoty v příkazovém řádku, jako jsou Rhino.GetString() a Rhino.GetReal(). Obě tyto metody mají také dialogové verze. Zde vidíte obrázek dialogu Rhino.StringBox().

dialog - getstring

Dialogová okna většinou nabízí méně funkčnosti než metody využívající příkazový řádek. Poutají na sebe mnohem více pozornosti, tak by měly být používány opatrně. Dialogy, na rozdíl od metod využívajících příkazový řádek, jsou také modální. To znamená, že uživatel musí nejdříve vyřešit požadavek dialogového okna, než může pokračovat v modelování. Všechny pohledy, násrtojové palety a menu jsou přitom zamčené.
Dialogy nabízí některé funkce, které v příkazovém řádku nejsou možné. Pokud chcete zobrazit více než jednu hodnotu, musíte použít dialogy:

dialogy

Všechny metody Rhina jsou podrobně popsány v nápovědě k RhinoScriptu, včetně mnoha ukázkových skriptů...

Přeložil Jan Slanina