Nacházíte se zde: Rhino3D.cz > Články > Rhinoceros > Explicitní historie pro Rhino 4.0


Explicitní historie pro Rhino 4.0

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

Explicit - ikonaRhino4 obsahuje základní funkci historie, což je neintrusivní vrstva kolem práce uživatele, která umožňuje automatické aktualizace určitých modelovacích kroků. Současná implementace historie v Rhinu 4 je implicitní; je zaznamenávána v průběhu vaší práce. Implicitní historie však nedokáže některé věci, které se dají udělat v modelářích, které jsou založené na vazbách.

Proč explicitní historie?

Rhino4 obsahuje základní funkci historie, což je neintrusivní vrstva kolem práce uživatele, která umožňuje automatické aktualizace určitých modelovacích kroků. Současná implementace historie v Rhinu 4 je implicitní; je zaznamenávána v průběhu vaší práce. To znamená, že nad rámec vlastního modelování není vyžadována žádná další práce, což je přesně to, co bychom v Rhinu chtěli vidět: více funkcí, žádná další omezení. Implicitní historie však nedokáže některé věci, které se dají udělat v modelářích, které jsou založené na vazbách.

Za prvé - strom historie je před uživatelem skrytý. Chování různých stupňů historie nelze upravit. Máte například jen jednu možnost, jak nastavit vlastnosti potažení (Loft) s historií. Jakmile už existuje výsledná plocha, je jediným způsobem, jak změnit volby potažení, opětovné vytvoření plochy od začátku. Tím ovšem porušíte všechny následné záznamy historie a to je velice svazující omezení. Z potažení také není možné následně odebírat nebo přidávat další křivky. Dalším omezením je absence matematických vztahů.

Explicitní historie tyto dva problémy řeší, ovšem za vysokou cenu. Už ji není možné zaznamenávat transparentně "za pochodu", strom historie musí být konstruován výslovně uživatelem. Není možné použít dostupné příkazy, protože ty nezveřejňují volby a nastavení, které potřebují pro svůj běh. To znamená, že pro většinu lidí nebude funkce explicitní historie užitečná.

Výhody ale mluví samy za sebe:

  1. Uživatel vidí strom historie a může jej opakovaně použít jako celek nebo jako část na různé modely.
  2. Komponenty stromu jsou také viditelné a mohou být nahrazovány a upravovány.
  3. Operace nejsou vázány na geometrii v modelu, je možné vytvořit strom, který pracuje pouze s čísly.
  4. Lze konstruovat matematické a logické vztahy.
  5. Pro načtení a ukládání dat lze použít externí (vzhledem k Rhino) zdroje.

V prvním vydání nebudou všechny výše uvedené funkce, rozšíření sady funkcí tohoto pluginu si vyžádá čas (hodně času).

Stáhněte si zásuvný modul

Tento zásuvný modul vyžaduje Rhino4 SR2, pokud SR2 nemáte nainstalovaný, nebude pracovat správně.

Pokyny k instalaci:

1) Stáhněte ZIP archiv a rozbalte ho do na libovolného adresáře
2) Ujistěte se, že struktura rozbalených adresářů zůstane zachována, nezáleží ovšem na tom, kde budou umístěny
3) Spusťte Rhino
4) Přetáhněte myší soubor ExplicitHistory.rhp do okna Rhina
5) Nyní můžete použít příkaz _ExplicitHistoryEditor

Na této stránce si můžete prohlédnout zásuvný modul v akci.

Ukázkové soubory pro explicitní historii

Mathematical Spiral
Vytvoří 3D spirálu na základě (x, y, z) rovnic. Hodnoty jsou vygenerovány automaticky komponentou Range, ve které můžete snadno nastavit doménu a přesnost výstupní křivky. Řešení je perfektně samoobsažné a není závislé na souboru Rhina.

Curve Connector
Propojí dvě křivky stejným počtem úseček.

The Worm
Kolem základní křivky vytvoří kolmé kružnice s poloměry podle rovnice řízené VBScriptem.

Revolve Polyarc

Rotuje obloukovou křivku několika různýmí úhlovým doménami.

a

Cone forest
Generuje matici kuželů na potažené (Loft) ploše, výška kuželu závisí na Z-ové souřadnici špičky kuželu.

Ukázka činnosti zásuvného modulu Worm pro Rhino 4 SR2

Uživatelské rozhraní explicitní historie

Hlavní dialogové okno

Zásuvný modul obsahuje jediný příkaz, který zobrazí dialogové okno History Definition Editor, kde jsou přístupné všechny funkce:

Titulní lišta editoru: A

Titulní lišta editoru se chová jinak než u ostatních oken v Microsoft Windows. Pokud okno není minimalizované nebo maximalizované, pak dvojklik na titulní lištu způsobí sbalení nebo rozbalení dialogového okna. To je skvělý způsob přepínání mezi tímto zásuvným modulem a Rhinem, protože minimalizuje Editor, aniž by se přesunoval do spodní lišty obrazovky.

Lišta hlavního menu: B

Zde neuvidíte nic zvláštního. Buďte opatrní při používání klávesových zkratek, protože ty se týkají aktivního okna. Tím může být buď Rhino nebo modul Explicit History nebo jakékoliv jiné okno uvnitř nebo vně Rhina. Protože zde není žádný krok zpět, dávejte si pozor zejména na zkratky a klávesy Ctrl-X, Ctrl-S a Del.

Správce komponent: C

Zde vidíte většinu kategorií komponent. Všechny komponenty náleží do určitých kategorií (například "Logic" pro všechny operace s primitivními datovými typy nebo "Curves" pro všechny křivkové nástroje) a všechny kategorie jsou dostupné v oblasti prohlžeeče. Výšku této oblasti si můžete změnit, abyste měli na obrazovce více tlačítek.

Panely kategorií: D

Okno Category Panels obsahuje všechny komponenty a parametry, které náleží do určité kategorie. Protože jich je potenciálně velké množství, zobrazuje se pouze několik naposledy použitých položek. Pokud chcete vidět celý seznam, musíte kliknout na obtížně přístupný pásek ve spodní části panelu:

Tím rozvinete překryvné okno, které zpřístupní všechny objekty v dané kategorii. Můžete buď kliknout na objetky v seznamu nebo můžete tyto objekty přetáhnout myší přmo na pracovní plochu (této ploše budu v dalším textu říkat "plátno", protože tento překlad lépe odpovídá originálnímu pojmu "canvas" a slovo plocha by se pletlo s geometrickou plochou). Pokud na objekt v seznamu kliknete, přesune se vybraná položka v panelu na první místo. Kliknutím na tlačítka nedojte k jejich vložení na plátno! Pokud je chcete přidat na plátno, musíte je myší na toto plátno přetáhnout:

Posuvníky Generation (generace) a Depth (hloubka): E & F

Tyto osuvníky jsou indikátory délky a hloubky plochy pro návrh. Uvažujte o nich jako o osách X a Y.

Pracovní plátno pro návrh: G

Je to nekonečná 2D rovina, ve které jsou obsaženy veškeré komponenty, parametry a propojení jedné Definice historie. Tři čtvrtiny plochy jsou pozadí (jemně šrafované). Hranice plátna nemá žádný zvláštní význam. Je to spíše vizuální vodítko, které vám poskytuje definici počátku vašeho návrhu.

Pomůcka Kompas: H

Jedna z pomůcek, která je umístěna na plátně a nabízí různou funkčnost a zpětnou vazbu. Kompas vám umožní doslova nalézt cestu domů nebo najít ztracené členy vašeho návrhu. Malý trojůhelníček uvnitř kompasu směřuje k počátku plátna. Šipky vně kompasu směřují ke všem komponentům a parametrům na plátně. Vybrané položky se zobrazí jako červené šipky:

Kompas můžete přemístit kamkoliv jinam přetažením myší.

Status Bar Selection Data: J

Zatím nebylo implementováno.

Status Bar Message Pane: K

V této chvíli velice provizorní implementace.

Objekty definice historie

Definice historie se skládá ze tří různých druhů objektů:

  • Komponenty
  • Parametry
  • Propojení

Komponenty obsahují akce, to znamená, že něco vykonávají. Parametry obsahují data, to znamená že něco ukládají. Propojení definují dědičnost dat (jinými slovy tok dat) v průběhu celé definice historie. Propojení v podstatě nejsou objekty jako takové, jsou spíše vyjádřením zdrojových tagů parametrů.

Aby mohla komponenta provést nějakou akci, potřebuje obvykle nějaká data a na výstupu většinou poskytne nějaký výsledek. Proto má většina komponent sadu zahnízděných parametrů, kterým se říká vstupní a výstupní parametry. Vstupní parametry jsou umístěny na levé straně, výstupní jsou napravo:

Představme si například komponentu s názvem "Cir" (zkratka příkaz Circle neboli Kružnice), která vytvoří kružnici kolem na základě zadaného bodu (středu), normálového vektoru a poloměru. Má tři vstupní parametry s názvy C, N a R (zkratky slov Center, Normal a Radius, česky střed, normála a poloměr)) a jeden výstupní parametr s názvem C, který uchová výstupní kružnici. Všechny názvy lze změnit na více popisné, ale standardní komponenty jsou záměrně z hlediska popisu minimalistické kvůli šetření místem na obrazovce. Při výběru komponenta zežloutne.

Pokud komponenta při právdění akce selže, její barva se změní na oranžovou nebo červenou (oranžová = varování, červená = chyba). Oranžová obvykle indikuje, že se nepodařilo shromáždit všechna potřebná data a že se komponenta ani nespustila. Červená pak většinou znamená, že komponenta dostala data kterým nerozumí nebo že dodaná data neleží v platném intervalu:

Kdykoliv se komponenta (nebo parametr) změní na oranžovou nebo červenou, najdete o tom v menu další informace. Informace o varování nebo chybě bude trvale zobrazena až do pokusu o nové řešení, což je obvykle okamžik, kdy v Definici změníte propojení nebo strukturu dat. Pokud touto změnou dojde k vyřešení problému, vrátí se barvy zpět do normálu. Barva výběru ale má vyšší váhu než barva varování nebo chyby.

 

Datové typy

Parametry se používají pouze jako nosiče informací, ale většina parametrů dokáže uchovávat dva různé druhy dat - dočasná (volatile) a trvalá (persistent). Dočasná data jsou zděděna z jednoho nebo více zdrojových parametrů a jsou zničena (neboli znovu získána) při každém spuštění nového řešení. Trvalá data jsou data, která byla výslovně zadána uživatelem. Když je parametr připojen ke zdrojovému objektu, budou data ignorována, ale nebudou zničena.

(Výjimkou jsou výstupní parametry, které nemohou uchovávat trvalé záznamy ani definovat množinu zdrojů. Výstupní parametry jsou plně pod kontrolou komponenty, která je vlastní.)

Trvalá data jsou přístupná skrze menu a v závislosti na druhu parametru mají různého správce. například číselné parametry vám umožní nastavit jednu hodnotu v menu (rychlý a snadný způsob) nebo můžete použít Generic Value Manager pro zadání, změnu a přeskupení série čísel.

Vraťme se ale o pár kroků zpět a podívejme se, jak se chová standardní číselný parametr. Budu mluvit o parametru Double, který uchovává data ve formátu s dvojitou přesností. Jakmile jej přetáhnete myší z panelu Logic Category na plátno, uvidíte následující:

 

Parametr je oranžový, to znamená, že vygeneroval varování. Není to nic vážného, varování je zde prostě jen proto, aby vás informovalo, že parametr je prázdný (neobsahuje žádné trvalé záznamy a nepodařilo se shromáždit dočasná data) a proto nemá pro výsledek řešení historie žádný význam. Začneme tím, že mu přiřadíme trochu lépe vypovídající název. Všimněte si, že se text na plátně aktualizuje během toho, jak píšete, nemusíte tedy stisknout Enter nebo klikat kamkoliv myší, abyste název potvrdili:

Nyní můžete pokračovat přímo do menu "Set Single Double", kde můžete specifikovat konkrétní číslo, které bude uschováno v seznamu trvalé položky:

Toto políčko se během psaní neaktualizuje, protože potenciální účinky změny této hodnoty mohou být obrovské (například pokud na této hodnotě závisí mnoho komponent). Pro potvrzení hodnoty budete muset stisknout Enter a tím aktualizujete celé řešení. Menu se přitom nezavře, pokud tedy nebudete spokojeni s novou hodnotou, můžete ji opakovaně přepisovat. Jakmile hodnotu přijmete, změní se barva parametru na černou, což znamená, že již negeneruje varování ani chyby. V bublinkové nápovědě se navíc zobrazí trvalé záznamy:

Pokud chcete uschovat více než jednu trvalou položku, musíte použít menu "Manage collection", kterým vyvoláte Value Manager:

To je jednoduchoučký vícehodnotový editor, který jednoduše odděluje jednotlivé řádky a uschovává všechny platné hodnoty v jednom seznamu. Bublinková nápověda opět zobrazí stav všech trvalých záznamů (zobrazí se pouze prvních deset položek):

Komplexnější datové typy, jako jsou intervaly, vyžadují pokročilejší vícehodnotový editor (viz. níže), zatímco typy odkazující na geometrii, jako jsou parametry Curve a Point, využívají pro přístup k trvalým datům rozhraní příkazového řádku Rhina:

 

Dědění dočasných dat explicitní historie

Data se ukládají v parametrech (buď v dočasné nebo trvalé formě) a jsou používána v komponentách. Když nejsou data uložena v permanentní množině záznamů v parametru, musí být zděděna (převzata) z jiného místa. Každý parametr (kromě výstupních parametrů) definuje, odkud data získává. Tento parametr "Double" můžete připojit jako celočíselný zdroj a o převod bude postaráno automaticky. Bodové parametry (wrappery OpenNURBS.ON_3dPoint) například akceptují následující vstup:

Převodní tabulka parametrů bodu

Datový typ Popis typu
ON_2dPoint (souřadnice XY s dvojnásobnou přesností)
ON_2fPoint (souřadnice XY s jednoduchou přesností)
ON_3dPoint (souřadnice XYZ s dvojnásobnou přesností)
ON_3fPoint (souřadnice XYZ s jednoduchou přesností)
ON_4dPoint (souřadnice XYZW s dvojnásobnou přesností)
ON_4fPoint (souřadnice XYZW s jednoduchou přesností)
ON_2dVector (vektor XY s dvojnásobnou přesností)
ON_2fVector (vektor XY s jednoduchou přesností)
ON_3dVector (vektor XYZ s dvojnásobnou přesností)
ON_3fVector (vektor XYZ s jednoduchou přesností)
ON_Point (objekt Bod OpenNURBS)
ON_Color (převádí prostor RGB do prostoru XYZ)
System.Drawing.Point (GDI souřadnice XY s celočíselnou přesností)
System.Drawing.PointF (GDI souřadnice XY s jednoduchou přesností)
System.Drawing.Color (GDI definice barvy, převádí prostor RGB do prostoru XYZ)

Kdyby bylo datové prostředí přísnější, musely by tyto převody vykonány uvnitř Definice, což by věci zbytečně komplikovalo.

Kdykoliv je parametr konfrontován s daty,kterým nerozumí (například pokud vyberete kružnici místo požadovaného bodu), vygeneruje chybové hlášení (dostupné prostřednictvím menu daného parametru) a zčervená. Pokud parametr náleží komponentě, bude se tento "červený stav" šířit hierarchií nahoru a komponenta zčervená také, dokonce i když sama neobsahuje žádné chyby:

Správa propojení

Protože parametry jsou v péči svých vlastních datových struktur, můžete k těmto nastavením získat přístup prostřednictvím daného parametru. To je důležité. Propojení jsou PROTI toku dat. Propojení indikuje, kterým zdrojům parametr "naslouchá", nikoliv které parametry závisí na zdroji. Pokud chcete vytvořit nové propojení, musíte táhnout nový propojovací drát z levé strany cílového parametru na pravou stranu zdrojového parametru.

Předpokládejme, že máme komponent Point (Bod), který z hodnot X, Y aZ zkonstruuje 3D body a my tento parametr chceme připojit k nějakým "poskytovatelům" souřadnic:

Začneme tím, že klikneme na levou stranu parametru "X" a potáhneme nový propojovací drát:

Jakmile se myš (se stisknutým levým tlačítkem) ocitně na pozici potenciálního zdroje parametru, změní se drát na plnou čáru. Toto spojení není trvalé do té doby, než pustíte myš:

To samé nyní můžete provést s parametrem "Y". Klikněte, táhněte...

...a pusťte:

Nové propojení standardně zruší již existující propojení. Protože jsem předpokládal, že nejčastěji budete používat pouze jednoduchá propojení, musíte pro definici více zdrojů udělat něco navíc. Pokud při tažení propojovacího drátu podržíte Shift nebo Ctrl, změní se ukazatel myši tak, že vám dá najevo zda proběhne přidání nebo smazání propojení:

Pokud je v okamžiku uvolnění tlačítka myši aktivní kurzor s nápisem "ADD", bude daný parametr přidán do seznamu zdrojů. Pokud specifikujete parametr, který je již definován jako zdroj, nic se nestane. Z jednoho zdroje nemůžete zdědit data více než jednou. Pokud je u kurzoru nápis "REM", cílový zdroj bude ze seznamu zdrojů odstraněn. Pokud cíl není odnikud odkazován, nic se neprovede.

Zdroje můžete odpojit (ale ne připojit) pomocí menu:

Párování dat explicitní historie

Párování dat (data matching) je problém bez jasného řešení. Objevuje se tehdy, když má komponenta přístup k různě velkým vstupům. Představte si komponentu, která mezi body vytváří úsečkové segmenty. Bude mít dva vstupní parametry, které oba dodávají souřadnice bodu (Stream A a Stream B). Neníí důležité odkud tyto parametry získávají svá data, komponenta nemůže "vidět" dále než na své vstupní a výstupní parametry:

Jak vidíte, výše uvedenou sadu bodů můžeme propojit úsečkami mnoha různými způsoby. Zásuvný modul Explicit History momentálně podporuje tři algoritmy párování, ale existuje jich mnohem více. Nejjednodušším způsobem je propojovat vstupy jeden po druhém, dokud datový proud "nevyschne". Tomu se říká algoritmus nejkratšího seznamu (Shortest List Algorithm):

Oproti tomu algoritmus nejdelšího seznamu (Longest List Algorithm) propojuje vstupy dokud je nevyčerpá všechny; toto je standardní chování komponent:

Nakonec je zde metoda křížových referencí (Cross Reference), která propojí všechna myslitelná spojení:

To je potenciálně nebezpečné, protože na výstupu může vzniknout obrovské množství dat. Problém se stává ještě složitějším, když se akce účastní více vstupních parametrů a když dědění dočasných dat začíná data násobit, ale logika zůstává stejná.

Představte si, že máme komponent Bod, který zdědí hodnoty souřadnic X, Y a Z ze vzdálených parametrů, které obsahují následující:

Souřadnice X: {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}

Souřadnice Y: {0.0, 1.0, 2.0, 3.0, 4.0}

Souřadnice Z: {0.0, 1.0}

Pokud tato data zkombinujeme metodou najkratšího seznamu, dostaneme pouze dva body, protože "Souřadnice Z" obsahuje pouze dvě hodnoty. Protože je to nejkratší seznam, definuje svou délkou rozsah řešení:

Algoritmus "Nejdelší seznam" vytvoří deset bodů, přičemž bude recyklovat nejvyšší hodnoty streamů Y a Z:

Křížová reference (Cross Reference) propojí všechny hodnoty v X se všemi hodnotami v Y a Z, výsledkem tedy bude 10×5×2 = 100 bodů:

Každý komponent může být nastaven tak, aby se řídil jedním z těchto pravidel (nastavení je dostupné v menu komponentu).

V tomto chování je však jedna velká výjimka. Některé komponenty na jednom nebo více vstupních polích OČEKÁVAJÍ seznam dat. Například komponent lomená čára vytvoří lomenou čáru, která prochází polem vstupních bodů. Více bodů ve vstupním parametru vyústí v delší lomenou čáru, ne ve více lomených čar. Vstupní parametry, u kterých se očekává více než jedna hodnota se nazývají seznamové parametry (List Parameters) a během párování dat jsou ignorovány.

Související články

Nahoru ↑

Diskuse k článku

  • [1] delph – 29. 09. 2007, 18:23

    reagovat

    ty voee ani sme ot nečet celí, jen začátek, ale jako líbí se mi to hodně, jen mít 4,0 a bude to lahoda