Data
Last updated
Last updated
Data jsou součástí našich programů. Prochází dráty a zadávají vstupy pro uzly, kde se zpracují do nové formy výstupních dat. Pojďme si prohlédnout definici dat, jak jsou strukturována a začít je používat v aplikaci Dynamo.
Data jsou souborem hodnot kvalitativních nebo kvantitativních proměnných. Nejjednodušší forma dat jsou například čísla jako 0
, 3.14
nebo 17
. Data však mohou být také různých typů: proměnná představující měnící se čísla (height
), znaky (myName
); geometrii (Circle
) nebo seznam datových položek (1,2,3,5,8,13,...
).
V aplikaci Dynamo přidáváme data do vstupních portů uzlů – můžeme mít data bez akcí, ale potřebujeme data ke zpracování akcí, které reprezentují uzly. Pokud do pracovního prostoru přidáme uzel, pokud nebude mít k dispozici žádný vstup, bude výsledkem funkce, nikoli výsledek akce.
Jednoduchá data
Data a akce (Uzel A) se úspěšně spustí
Akce (Uzel A) bez zadání dat vrátí obecnou funkci
Dávejte pozor na nulové hodnoty. Typ 'null'
představuje nedostatek dat. I když je to abstraktní koncept, pravděpodobně se k němu dostanete při práci s vizuálním programováním. Pokud akce nevytvoří platný výsledek, uzel vrátí hodnotu null.
Testování nulových hodnot a odstraňování nulových hodnot z datové struktury je klíčovou součástí vytváření robustních programů.
Ikona | Název/Syntaxe | Vstupy | Výstupy |
---|---|---|---|
Object.IsNull | obj | booleovský |
Při vizuálním programování můžeme velmi rychle vygenerovat velké množství dat a vyžadovat způsob správy jejich hierarchie. Jedná se o úlohu datových struktur, organizačních schémat, ve kterých ukládáme data. Specifika datových struktur a způsob jejich použití se liší mezi jednotlivými programovacími jazyky.
V aplikaci Dynamo přidáme hierarchii k datům prostřednictvím seznamů. To prozkoumáme v pozdějších kapitolách, ale začneme jednoduše:
Seznam představuje kolekci položek umístěných do jedné struktury dat:
Mám pět prstů (položek) na ruce (seznam).
Deset domů (položek) je na mojí ulici (seznam).
Uzel Number Sequence definuje seznam čísel pomocí vstupů start, amount a step. Pomocí těchto uzlů jsme vytvořili dva samostatné seznamy deseti čísel, z nichž jeden se pohybuje v rozsahu 100–109 a druhý se pohybuje v rozsahu 0–9.
Uzel List.GetItemAtIndex slouží k výběru položky v seznamu na určitém indexu. Při výběru hodnoty 0 se první položka zobrazí v seznamu (v tomto případě 100).
Pokud použijeme stejný postup na druhý seznam, získáme hodnotu 0, první položku v seznamu.
Nyní sloučíme dva seznamy do jednoho pomocí uzlu List.Create. Uzel vytvoří seznam seznamů. Tím se změní struktura dat.
Pokud použijete znovu parametr List.GetItemAtIndex, s indexem nastaveným na hodnotu 0, získáme první řádek seznamu seznamů. To znamená, že se seznam považuje za položku, což se poněkud liší od ostatních skriptovacích jazyků. V pozdějších kapitolách se dostaneme k pokročilejší manipulaci se seznamy a datovými strukturami.
Základní koncept pro pochopení hierarchie dat v aplikaci Dynamo: S ohledem na datovou strukturu jsou seznamy považovány za položky. Jinými slovy, aplikace Dynamo funguje s postupem shora dolů pro pochopení datových struktur. Co to znamená? Pojďme to projít s příkladem.
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
V tomto prvním příkladu sestavíme válec se skořepinou, který prochází hierarchií geometrie, o níž se v této části pojednává.
1. Přidejte uzel Point.ByCoordinates – po přidání uzlu na pracovní plochu vidíme bod v počátku osnovy náhledu aplikace Dynamo. Výchozí hodnoty vstupů x,y a z jsou 0.0, což nám dává bod v tomto umístění.
2. Plane.ByOriginNormal – Dalším krokem v hierarchii geometrie je rovina. Existuje několik způsobů, jak vytvořit rovinu, my pro vstup použijeme počátek a normálu. Počátek je uzel bodu vytvořený v předchozím kroku.
Vector.ZAxis – Toto je sjednocený vektor ve směru Z. Všimněte si, že nejsou k dispozici vstupy, pouze vektor o hodnotě [0,0,1]. Toto je vstupní hodnota normal pro uzel Plane.ByOriginNormal. Tím se v náhledu aplikace Dynamo zobrazí obdélníková rovina.
3. Circle.ByPlaneRadius – Rozšiřujeme hierarchii. Nyní vytvoříme oblouk z roviny v předchozím kroku. Po zapojení do uzlu se v počátku zobrazí kružnice. Výchozí poloměr v uzlu je hodnota 1.
4. Curve.Extrude – Teď provedeme vylepšení přidáním hloubky a přechodem do třetího rozměru. Tento uzel vytvoří povrch z křivky jejím vysunutím. Výchozí vzdálenost v uzlu je 1 a měli bychom ve výřezu vidět válec.
5. Surface.Thicken – Tento uzel nám umožňuje vytvořit uzavřené těleso odsazením povrchu o danou vzdálenost a uzavřením tvaru. Výchozí hodnota tloušťky je 1 a válec se skořepinou je ve výřezu zobrazen v souladu s těmito hodnotami.
6. Number Slider – Místo použití výchozích hodnot pro všechny tyto vstupy přidejte do modelu parametrický ovládací prvek.
Domain Edit – po přidání posuvníku čísla na pracovní plochu klikněte na stříšku v levé horní části a zobrazte možnosti domény.
Min/Max/Step - Změňte hodnoty min, max a step na 0,2 a 0.01. Toto provedeme, abychom mohli řídit velikost celkové geometrie.
7. Number Sliders – Ve všech výchozích vstupech zkopírujte a vložte tento posuvník čísla (vyberte posuvník, stiskněte Ctrl+C a pak Ctrl+V) několikrát, dokud nebudou mít všechny vstupy s výchozími hodnotami posuvník. Aby definice fungovala, některé hodnoty posuvníku musí být větší než nula (například k zesílení plochy je potřeba hloubka vysunutí).
8. Nyní jsme vytvořili parametrický válec se skořepinou s těmito posuvníky. Zkuste některé z těchto parametrů změnit a sledujte, jak se geometrie dynamicky aktualizuje ve výřezu aplikace Dynamo.
Number Sliders – Přidali jsme na plochu hodně posuvníků a je potřeba vyčistit rozhraní nástroje, který jsme právě vytvořili. Klikněte pravým tlačítkem na jeden posuvník, vyberte položku Přejmenovat a změňte název každého posuvníku na název odpovídající jeho parametru (Thickness (Tloušťka), Radius (Poloměr), Height (Výška) atd.).
9. V tomto okamžiku jsme vytvořili úžasnou věc s rozšiřujícím se válcem. Toto je aktuálně jeden objekt, podívejme se, jak vytvořit pole válců, které zůstávají dynamicky propojeny. Za tímto účelem vytvoříme seznam válců, místo práce s jednou položkou.
Addition (+) – Naším cílem je přidat řadu válců vedle válce, který jsme vytvořili. Pokud chceme přidat jeden válec vedle aktuálního válce, je nutné zvážit poloměr válce a tloušťku jeho skořepiny. Toto číslo získáme sečtením dvou hodnot posuvníků.
10. Tento krok je mnohem náročnější, takže ho projdeme pomalu: cílem je vytvořit seznam čísel, která definují umístění každého válce v řadě.
a. Multiplication – Nejprve chceme vynásobit hodnotu z předchozího kroku hodnotou 2. Hodnota z předchozího kroku představuje poloměr a chceme válec posunout o plný průměr.
b. Number Sequence – Pomocí tohoto uzlu vytvoříme pole čísel. První vstup je uzel multiplication z předchozího kroku do hodnoty step. Hodnotu start lze nastavit na 0.0 pomocí uzlu number.
c. Integer Slider – Pro hodnotu amount připojíme posuvník celého čísla. Tím se definuje počet vytvořených válců.
d. Output – Tento seznam zobrazuje vzdálenost přesunutou pro každý válec v poli a je parametricky řízen původními posuvníky.
11. Tento krok je dostatečně jednoduchý – zadejte posloupnost definovanou v předchozím kroku do vstupu x původního uzlu Point.ByCoordinates. Tím nahradíte posuvník pointX, který lze odstranit. Nyní se ve výřezu zobrazuje pole válců (zkontrolujte, zda je číslo posuvníku větší než 0).
12. Řetěz válců je stále dynamicky spojen se všemi posuvníky. Upravte každý posuvník, abyste viděli aktualizaci definice.