Kromě uzlů pro slovníky zavádí aplikace Dynamo 2.0 také nové funkce pro slovníky v blocích kódu.
Je možné použít syntaxi podle obrázku níže nebo reprezentaci uzlů v jazyce DesignScript.
Protože je slovník typem objektu, je možné s ním v aplikaci Dynamo provádět následující akce.
Tyto interakce jsou užitečné zejména při spojování dat aplikace Revit s řetězci. Pojďme se podívat na případy užití v aplikaci Revit.
Aplikace Dynamo 2.0 oddělila datový typ slovník od datového typu seznam. Tato změna může výrazně změnit způsob, jakým pracujete s daty. Před verzí 2.0 byly slovníky a seznamy spojeny v jediný datový typ. Stručně řečeno, seznamy byly ve skutečnosti slovníky s celočíselnými klíči.
Slovník je datový typ, který se skládá z kolekce dvojic klíč-hodnota, kde klíč je v rámci kolekce jedinečný. Slovník nemá žádné pořadí a umožňuje vyhledávat hodnoty pomocí klíčů (a nikoliv pomocí hodnot indexů jako u seznamů). V aplikaci Dynamo 2.0 mohou být jako klíče použity pouze řetězce.
Seznam je datový list, který se skládá z kolekce hodnot v určitém pořadí. V aplikaci Dynamo seznamy používají celočíselné hodnoty indexů.
Díky oddělení slovníků od seznamů můžete slovníky používat k rychlému a snadnému ukládání a vyhledávání hodnot, aniž by bylo nutné pamatovat si hodnoty indexů nebo uchovávat data ve striktní struktuře seznamu. Během uživatelského testování jsme zjistili, že nahrazením uzlů GetItemAtIndex
slovníky došlo k výraznému zmenšení velikosti grafu.
Došlo ke změnám syntaxe, která souvisí s inicializací a prací se slovníky a seznamy v blocích kódu.
Slovníky používají následující syntaxi: {key:value}
Seznamy používají následující syntaxi: [value,value,value]
Do knihovny byly přidány nové uzly, které vám pomohou vytvářet, upravovat a dotazovat slovníky.
Seznamy vytvořené v blocích kódu verze 1.x budou po načtení skriptu automaticky převedeny do nové syntaxe seznamu, která používá hranaté závorky [ ]
místo složených závorek { }
\.
V počítačových vědách jsou slovníky, podobně jako seznamy, kolekcemi objektů. Zatímco seznamy mají položky v určitém pořadí, slovníky jsou neuspořádané kolekce. Nejsou závislé na pořadových číslech (indexech), používají místo nich klíče.
Na obrázku níže je znázorněno potenciální využití slovníků. Slovníky se často používají ke spojení dvou různých položek, které spolu nemusí souviset. V našem případě propojujeme španělské slovo s anglickým pro později vyhledání.
Vytvoří slovník, který propojí obě části dat.
Získá hodnotu s daným klíčem.
Chtěli jste někdy v aplikaci Revit vyhledávat položky podle jejich dat?
Pokud ano, je pravděpodobné, že jste udělali něco podobného jako v následujícím příkladu.
Na obrázku níže získáme všechny místnosti v modelu aplikace Revit, zjistíme index požadované místnosti (podle čísla místnosti) a nakonec získáme místnost s tímto indexem.
Získejte všechny místnosti v modelu.
Číslo místnosti, kterou chcete najít.
Získejte číslo místnosti a její index.
Získejte místnost s daným indexem.
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
Pojďme udělat totéž pomocí slovníků. Nejdříve je nutné získat všechny místnosti v modelu aplikace Revit.
Vybereme kategorii aplikace Revit, se kterou chceme pracovat (v tomto případě místnosti).
Přikážeme aplikaci Dynamo, aby získala všechny prvky
Dále je nutné rozhodnout, podle jakých klíčů se budou data vyhledávat. (Informace o klíčích naleznete v části Co je slovník?)
Data, která použijeme, jsou čísla místností.
Nyní vytvoříme slovník s danými klíči a prvky.
Uzel Dictionary.ByKeysValues vytvoří slovník podle odpovídajících vstupů.
Keys
musí být řetězce, zatímcovalues
mohou být různé typy objektů.
Nyní můžeme načíst místnost ze slovníku pomocí čísla místnosti.
Uzel
String
bude klíč, který použijeme k vyhledání objektu ze slovníku.Uzel Dictionary.ValueAtKey načte objekt ze slovníku.
Stejným způsobem lze vytvářet slovníky seskupených objektů. Pokud bychom chtěli vyhledat všechny místnosti na daném podlaží, můžeme upravit graf následovně.
Místo čísla místnosti použijeme jako klíč hodnotu parametru (v tomto případě podlaží).
Nyní můžete místnosti seskupit podle podlaží, na kterém se nacházejí.
Po seskupení místností podle podlaží, můžeme použít sdílené (jedinečné) klíče jako klíče pro slovník a seznamy místností jako prvky.
Nakonec můžeme pomocí podlaží v modelu aplikace Revit a pomocí slovníku vyhledat, které místnosti se na daném podlaží nacházejí. Uzel
Dictionary.ValueAtKey
načte jako vstup název podlaží a vrátí objekty místností na daném podlaží.
Možnosti slovníků jsou opravdu nekonečné. Možnost propojit BIM data v aplikaci Revit s prvkem samotným nabízí mnohá využití.
Slovníky představují kolekci dat, která jsou svázána s klíči. Slovníky umožňují vyhledávat, odstraňovat a vkládat data do kolekce.
Slovník si lze představit jako chytrý způsob, jak vyhledávat data.
Funkce pro slovníky byly v aplikaci Dynamo dostupné již delší dobu, verze Dynamo 2.0 však změnila způsob, jakým se s tímto datovým typem pracuje.
Původní obrázek publikován se svolením sixtysecondrevit.com
Aplikace Dynamo 2.0 nabízí několik uzlů pro slovníky. Mezi ně patří uzly pro tvorbu, akci a dotazování.
1. Uzel Dictionary.ByKeysValues
vytvoří slovník ze zadaných hodnot a klíčů. (Počet položek bude odpovídat počtu položek nejkratšího seznamu.)
2. Uzel Dictionary.Components
vytvoří komponenty ze vstupního slovníku. (Operace opačná k vytvoření slovníku.)
3. Uzel Dictionary.RemoveKeys
vytvoří nový objekt slovníku bez vstupních klíčů.
4. Uzel Dictionary.SetValueAtKeys
vytvoří nový slovník na základě vstupních klíčů a hodnot, které nahradí aktuální hodnotu u příslušných klíčů.
5. Uzel Dictionary.ValueAtKey
vrátí hodnotu na pozici vstupního klíče.
6. Uzel Dictionary.Count
vrátí počet dvojic hodnot a klíčů ve slovníku.
7. Uzel Dictionary.Keys
vrátí klíče aktuálně uložené ve slovníku.
8. Uzel Dictionary.Values
vrátí hodnoty aktuálně uložené ve slovníku.
Spojování dat ve slovnících může být užitečnou alternativou pro starý způsob práce s indexy a seznamy.