Dynamo
Primer for v2.0
Čeština
Čeština
  • O aplikaci
  • Úvod
    • Co je aplikace Dynamo a jak funguje?
    • Uživatelská příručka Primer, komunita a platforma aplikace Dynamo
  • Nastavení aplikace Dynamo
  • Uživatelské rozhraní
    • Pracovní prostor
    • Knihovna
  • Uzly a dráty
  • Základní uzly a koncepce
    • Rejstřík uzlů
    • Geometrie pro výpočetní návrh
      • Přehled geometrie
      • Vektor, rovina a souřadnicový systém
      • Body
      • Křivky
      • Povrchy
      • Tělesa
      • Sítě
    • Stavební bloky programů
      • Data
      • Matematika
      • Logika
      • Řetězce
      • Barva
    • Práce se seznamy
      • Co je to seznam
      • Práce se seznamy
      • Seznamy seznamů
      • N-rozměrné seznamy
    • Slovníky v aplikaci Dynamo
      • Co je to slovník
      • Uzly slovníku
      • Slovníky v blocích kódu
      • Případy použití aplikace Revit
  • Vlastní uzly a balíčky
    • Vlastní uzly
      • Úvod do práce s vlastními uzly
      • Tvorba vlastního uzlu
      • Publikování do knihovny
    • Balíčky
      • Úvod do práce s balíčky
      • Příklad balíčku – sada nástrojů pro sítě
      • Vývoj balíčku
      • Publikování balíčku
      • Importování Zero-Touch
  • Dynamo pro aplikaci Revit
    • Propojení s aplikací Revit
    • Výběr
    • Úpravy
    • Tvorba
    • Přizpůsobení
    • Dokumentování
  • Dynamo for Civil 3D
    • Připojení aplikace Civil 3D
    • Začínáme
    • Knihovna uzlů
    • Vzorové pracovní postupy
      • Silnice
        • Umístění sloupů osvětlení
      • Terén
        • Umístění služeb
      • Pomůcky
        • Přejmenování stavebních objektů
      • Železnice
        • Vůle obalových křivek
      • Zaměření
        • Správa skupin bodů
    • Pokročilá témata
      • Vazby objektů
      • Python a Civil 3D
    • Přehrávač skriptů Dynamo
    • Užitečné balíčky
    • Zdroje
  • Dynamo v aplikaci Forma (beta verze)
    • Nastavení rozšíření Dynamo Player v aplikaci Forma
    • Přidávání a sdílení grafů v rozšíření Dynamo Player
    • Spouštění grafů v rozšíření Dynamo Player
    • Rozdíly mezi výpočetní službou Dynamo a počítačovou aplikací Desktop
  • Kódování v aplikaci Dynamo
    • Bloky kódů a jazyk DesignScript
      • Co je blok kódu
      • Syntaxe DesignScript
      • Zkratka
      • Funkce
    • Geometrie pomocí jazyka DesignScript
      • Základy geometrií v jazyku DesignScript
      • Geometrická primitiva
      • Vektorová matematika
      • Křivky: Interpolované a řídicí body
      • Posunutí, otočení a další transformace
      • Plochy: Interpolace, řídicí body, spojení profilů, rotace
      • Geometrická parametrizace
      • Průnik a oříznutí
      • Booleovské operace geometrií
      • Generátory bodů v jazyce Python
    • Python
      • Uzly jazyka Python
      • Python a Revit
      • Nastavení vlastní šablony jazyka Python
    • Změny jazyka
  • Osvědčené postupy
    • Strategie grafů
    • Strategie skriptování
    • Skriptování – reference
    • Správa programu
    • Efektivní práce s velkými sadami dat v aplikaci Dynamo
  • Vzorové pracovní postupy
    • Pracovní postupy Začínáme
      • Parametrická váza
      • Body atraktoru
    • Rejstřík konceptů
  • Příručka Primer pro vývojáře
    • Sestavení aplikace Dynamo ze zdroje
      • Sestavení doplňku DynamoRevit ze zdroje
      • Správa a aktualizace závislostí v aplikaci Dynamo
    • Vývoj pro aplikaci Dynamo
      • Začínáme
      • Případová studie funkce Zero-Touch – uzel osnovy
      • Provádění skriptů jazyka Python v uzlech Zero-Touch (C#)
      • Další práce s funkcí Zero-Touch
      • Pokročilé přizpůsobení uzlů aplikace Dynamo
      • Použití typů COM (interoperability) v balíčcích aplikace Dynamo
      • Případová studie uzlu NodeModel – vlastní uživatelské rozhraní
      • Aktualizace balíčků a knihoven aplikace Dynamo pro aplikaci Dynamo 2.x
      • Aktualizace balíčků a knihoven aplikace Dynamo pro aplikaci Dynamo 3.x
      • Rozšíření
      • Definování vlastní organizace balíčků pro Dynamo 2.0+
      • Rozhraní příkazového řádku aplikace Dynamo
      • Integrace pro aplikaci Dynamo
      • Vývoj pro modul Dynamo pro aplikaci Revit
      • Publikování balíčku
      • Vytvoření balíčku z aplikace Visual Studio
      • Rozšíření jako balíčky
    • Žádosti o přijetí změn
    • Očekávání při testování
    • Příklady
  • Příloha
    • Nejčastější dotazy
    • Vizuální programování a aplikace Dynamo
    • Zdroje
    • Poznámky k verzi
    • Užitečné balíčky
    • Vzorové soubory
    • Mapa integrace hostitelů
    • Stažení souboru PDF
    • Klávesové zkratky aplikace Dynamo
Powered by GitBook
On this page
  • Co je to seznam?
  • Nulové indexy
  • Vstupy a výstupy
  • Vázání
  • Co je replikace?
  • Cvičení
  • Nejkratší seznam
  • Nejdelší seznam
  • Kartézský součin
Edit on GitHub
Export as PDF
  1. Základní uzly a koncepce
  2. Práce se seznamy

Co je to seznam

PreviousPráce se seznamyNextPráce se seznamy

Last updated 6 days ago

Co je to seznam?

Seznam je kolekce prvků nebo položek. Vezměte si například trs banánů. Každý banán je položka v seznamu (nebo v trsu). Je jednodušší sebrat celý trs banánů, než brát každý banán jednotlivě, a to samé platí pro seskupení prvků podle parametrických vztahů v datové struktuře.

Při nákupu potravin naskládáme všechny zakoupené položky do tašky. Tato taška je také seznamem. Pokud chceme vyrobit banánový chléb, potřebujeme 3 trsy banánů (chceme vyrobit hodně banánového chleba). Taška představuje seznam trsů banánů a každý trs představuje seznam banánů. Taška je seznam seznamů (dvourozměrný) a trs banánů je seznam (jednorozměrný).

V aplikaci Dynamo jsou data seznamu seřazena a první položka v každém seznamu má index „0“. Níže rozebereme způsob, jak v aplikaci Dynamo definovat seznamy a jak spolu více seznamů vzájemně souvisí.

Nulové indexy

Jedna věc, která se může zdát podivnou, je, že první index seznamu je vždy 0, nikoli 1. Čili pokud je řeč o první položce seznamu, ve skutečnosti máme na mysli položku s indexem 0.

Pokud byste například měli spočítat prsty na pravé ruce, existuje šance, že byste napočítali od 1 do 5. Pokud byste však vložili prsty do seznamu, aplikace Dynamo by jim přiřadila index 0 až 4. Ačkoli se toto může zdát začátečníkům v programování velmi zvláštní, nulové indexy jsou ve většině výpočetních systémů běžnou praxí.

Všimněte si, že v seznamu stále máme 5 položek; je to proto, že seznam používá systém počítání od nuly. A položky uložené v seznamu nemusí být jen čísla. Mohou to být položky jakéhokoli datového typu, který aplikace Dynamo podporuje, například body, křivky, povrchy, rodiny atd.

a. Index

b. Bod

c. Položka

Nejjednodušším způsobem, jak se je možné se dívat na datový typ uložený v seznamu je nejčastěji propojení uzlu Watch s výstupem jiného uzlu. Ve výchozím nastavení uzel Watch automaticky zobrazí všechny indexy na levé straně seznamu a data zobrazí vpravo.

Tyto indexy jsou velice důležitým prvkem při práci se seznamy.

Vstupy a výstupy

Vstupy a výstupy náležející k seznamům se liší podle toho, jaký uzel aplikace Dynamo se použije. Jako příklad použijte seznam 5 bodů a připojte tento výstup ke dvěma různým uzlům aplikace Dynamo: PolyCurve.ByPoints a Circle.ByCenterPointRadius:

  1. Vstup points uzlu PolyCurve.ByPoints hledá strukturu „Point[]“. Tato struktura představuje seznam bodů.

  2. Výstup uzlu PolyCurve.ByPoints je samostatný objekt PolyCurve vytvořený ze seznamu pěti bodů.

  3. Vstup centerPoint uzlu Circle.ByCenterPointRadius žádá o objekt „Point“.

  4. Výstup uzlu Circle.ByCenterPointRadius je seznam pěti kružnic, jejichž středy odpovídají původnímu seznamu bodů.

Vstupní data pro uzly PolyCurve.ByPoints a Circle.ByCenterPointRadius jsou stejná, uzel PolyCurve.ByPoints však předává jeden objekt PolyCurve, zatímco uzel Circle.ByCenterPointRadius předává 5 kružnic se středy v každém bodu. Je to intuitivní: Objekt PolyCurve je vykreslen jako křivka spojující 5 bodů, zatímco kružnice v každém bodu vytvářejí jinou kružnici. Co se tedy děje s daty?

Po přejetí umístění kurzoru nad vstupem points uzlu Polycurve.ByPoints zjistíte, že vstup hledá strukturu „Point[]“. Všimněte si závorek na konci. To představuje seznam bodů a k vytvoření objektu PolyCurve je třeba na vstupu seznam pro každý objekt PolyCurve. Tento uzel proto zhušťuje každý seznam do jednoho objektu PolyCurve.

Na druhou stranu vstup centerPoint uzlu Circle.ByCenterPointRadius žádá objekt „Point“. Tento uzel hledá jeden bod jako položku k definování středu kružnice. Proto ze vstupních dat vznikne pět kružnic. Rozlišování těchto vstupů v aplikaci Dynamo vám pomůže pochopit, jak uzly při zpracování dat fungují.

Vázání

Porovnávání dat je problém bez čistého řešení. Dochází k němu, pokud má uzel přístup různě velkým vstupům. Změna algoritmu porovnávání dat může vést k naprosto odlišným výsledkům.

Představte si uzel, který tvoří segmenty úseček mezi body (Line.ByStartPointEndPoint). Bude mít dva vstupní parametry, které oba předávají souřadnice bodů:

Nejkratší seznam

Nejjednodušším způsobem je spojovat vstupy jedna ku jedné, dokud jeden z datových proudů nedojde na konec. Tomuto se říká algoritmus „Nejkratší seznam“. Jedná se o výchozí chování uzlů aplikace Dynamo:

Nejdelší seznam

Algoritmus „Nejdelší seznam“ připojuje vstupy a opakovaně využívá prvky tak dlouho, dokud všechny datové proudy nedojdou na konec:

Kartézský součin

Metoda „Kartézský součin“ provede všechna možná připojení:

Jak vidíte, existují různé způsoby kreslení čar mezi těmito množinami bodů. Možnosti vázání naleznete po kliknutí pravým tlačítkem na střed uzlu a výběru nabídky „Vázání“.

Co je replikace?

Představte si, že máte trs hroznů. Kdybyste chtěli vyrobit hroznovou šťávu, nemačkali byste každý hrozen zvlášť – dali byste je do odšťavňovače všechny najednou. Replikace v aplikaci Dynamo funguje podobně: místo toho, aby aplikace Dynamo použila operaci vždy jen na jednu položku současně, může ji použít na celý seznam najednou.

Uzly aplikace Dynamo automaticky rozpoznají, kdy pracují se seznamy, a použijí své operace na více prvků. To znamená, že nemusíte ručně procházet položky ve smyčce – prostě se to stane. Jak se ale aplikace Dynamo rozhodne, jak seznamy zpracovat, když jich je víc?

Existují dva hlavní způsoby:

Kartézská replikace

Řekněme, že jste v kuchyni a připravujete ovocné šťávy. Máte seznam ovoce: {apple, orange, pear} a pevně dané množství vody na každou šťávu: 1 cup. Z každého ovoce chcete připravit šťávu za použití stejného množství vody. V tomto případě přichází na řadu kartézská replikace.

V aplikaci Dynamo to znamená, že do vstupu ovoce uzlu Juice.Maker zadáváte seznam ovoce, zatímco vstup vody zůstává konstantní na hodnotě 1 šálku. Uzel pak zpracovává každé ovoce jednotlivě a kombinuje je s pevným množstvím vody. Výsledek je...

apple juice with 1 cup of water orange juice with 1 cup of water pear juice with 1 cup of water

Každé ovoce je spárováno se stejným množstvím vody.

Replikace zipu

Replikace zipu funguje trochu odlišně. Pokud byste měli dva seznamy, jeden pro ovoce: {apple, orange, pear} a druhý pro množství cukru: {2 tbsp, 3 tbsp, 1 tbsp}, replikace zipu by zkombinovala odpovídající položky z každého seznamu. Příklad:

apple juice with 2 tablespoons of sugar orange juice with 3 tablespoons of sugar pear juice with 1 tablespoon of sugar

Každé ovoce je spárováno s odpovídajícím množstvím cukru.

Cvičení

Kliknutím na odkaz níže si stáhněte vzorový soubor.

Úplný seznam vzorových souborů najdete v dodatku.

Pomocí tohoto základního souboru znázorníme níže operace vázání tím, že definujeme nejkratší seznam, nejdelší seznam a kartézský součin.

U uzlu Point.ByCoordinates se změní vázání, ale nic jiného se u grafu výše nezmění.

Nejkratší seznam

Pokud jako možnost vázání vyberete nejkratší seznam (což je také výchozí možnost), získáte základní diagonální čáru složenou z pěti bodů. Pět bodů je délka kratšího seznamu, takže vázání nejkratšího seznamu se zastaví, jakmile dorazí na konec jednoho ze seznamů.

Nejdelší seznam

Změnou vázání na nejdelší seznam získáte diagonální čáru, která se vertikálně rozšíří. Poslední položka v seznamu 5 položek bude opakována tak dlouho, dokud nebude dosaženo délky delšího seznamu, což je stejné chování jako metoda koncepčního diagramu.

Kartézský součin

Změnou vázání na Kartézský součin získáte všechny kombinace mezi všemi seznamy, což vytvoří osnovu bodů o rozměrech 5x10. Jedná se o datovou strukturu ekvivalentní ke kartézskému součinu, jak je ukázáno v koncepčním diagramu výše, až na to, že data jsou nyní seznamy seznamů. Pokud připojíme objekt PolyCurve, uvidíme, že každý seznam je definovaný hodnotou X, což znamená, že máme řadu vertikálních čar.

Autor fotografie: .

Pokud chcete získat podrobnější informace o tom, jak to funguje, podívejte se na .

Augustus Binu
Průvodce replikací a vázáním
3KB
Lacing.dyn
Banány
Příklady vstupů
Příklady vstupů
Příklady vstupů
Příklady vstupů