Strategie grafů
Last updated
Last updated
Před touto kapitolou se příručka Primer zabývala implementací výkonných funkcí vizuálního skriptování v aplikaci Dynamo. Správné pochopení těchto možností je pevným základem a prvním krokem ve vytváření robustních vizuálních programů. Když vizuální programy používáme v ostrém provozu, sdílíme je s kolegy, řešíme chyby nebo zkoušíme meze, vyvstávají další problémy, které je třeba řešit. Pokud váš program bude používat někdo jiný nebo očekáváte, že jej otevřete až za šest měsíců, je v obou případech nutné, aby vše bylo ihned graficky a logicky přehledné. Aplikace Dynamo nabízí mnoho nástrojů ke správě složitosti programu a tato kapitola se zabývá pokyny k tomu, jak tyto nástroje použít.
Při vývoji grafu aplikace Dynamo a zkušebních nápadů může rychle dojít k nárůstu složitosti i velikosti grafu. I když je důležité vytvořit fungující program, je stejně důležité, aby byl co nejjednodušší. Nejenže graf bude fungovat rychleji a předvídatelněji, ale v případě otevření po nějakém čase vy i ostatní uživatelé rychleji porozumí logice grafu. Zde je několik způsobů, které vám pomohou vyjasnit logiku grafu.
Skupiny vám při tvorbě programu umožní vytvářet funkčně odlišné součásti.
Skupiny umožňují přesouvat velké části programu při zachování modularity a zarovnání.
Můžete změnit barvu skupiny k rozlišení toho, co je účelem skupiny (vstupy vs. funkce).
Pomocí skupin můžete vytvořit organizaci grafu ke zjednodušení tvorby uživatelských uzlů.
Barvy v tomto programu určují účel každé skupiny. Pomocí této strategie je možné vytvořit hierarchii v libovolných grafických normách nebo šablonách, které vyvíjíte.
Skupina funkcí (modrá)
Skupina vstupů (oranžová)
Skupina skriptů (zelená)
Informace o tom, jak používat skupiny, naleznete v části Správa programu.
Někdy můžete použít blok kódu k rychlejšímu zadání čísla nebo metody uzlu než při vyhledávání (Point.ByCoordinates, Number, String, Formula).
Bloky kódu jsou užitečné, pokud chcete definovat vlastní funkce v jazyce DesignScript, aby se snížil počet uzlů v grafu.
Vzor 1 i 2 provádí stejnou funkci. Bylo však mnohem rychlejší napsat několik řádků kódu, než vyhledávat a přidávat jednotlivé uzly. Blok kódu je také mnohem výstižnější.
Kód jazyka DesignScript zapsaný v bloku kódu
Ekvivalentní program v uzlech
Informace o použití bloku kódu naleznete v části Co je blok kódu.
Složitost grafu můžete snížit pomocí možnosti Uzel na kód, která vezme kolekci jednoduchých uzlů a zapíše odpovídající skript DesignScript do jednoho bloku kódu.
Možnost Uzel na kód** může zhustit kód, aniž by došlo k porušení přehlednosti programu**.
Následují klady použití možnosti Uzel na kód:
Snadno zhustí kód do jedné komponenty, kterou je stále možné upravit
Může zjednodušit významnou část grafu
Užitečná, pokud „miniprogram“ nebude často upravován
Užitečná k zahrnutí dalších funkcí bloku kódu, například funkce
Následují zápory použití možnosti Uzel na kód:
Obecné pojmenování snižuje čitelnost
Pro některé uživatele je obtížnější na porozumění
Neexistuje snadný způsob, jak se vrátit k verzi vizuálního programování
Existující program
Blok kódu vytvořený pomocí možnosti Uzel na kód
Informace o tom, jak používat možnost Uzel na kód, naleznete v části Syntaxe jazyka DesignScript.
Funkce List@Level pomáhá snížit složitost grafu nahrazením uzlů List.Map a List.Combine, které mohou zabírat značné množství místa na pracovní ploše.
Funkce List@Level nabízí** rychlejší způsob, jak vytvořit logiku uzlu konstrukce, než u uzlů List.Map a List.Combine**, umožněním přístupu k datům na libovolné úrovni v seznamu přímo ze vstupního portu uzlu.
Můžeme ověřit, kolik hodnot True vrátí metoda BoundingBox.Contains a ve kterých seznamech, a to aktivováním funkce List@Level u vstupu seznamu funkce CountTrue. List@Level umožňuje uživateli určit, ze které úrovně se bude přebírat vstup. Použití funkce List@Level je flexibilní, efektivní a vysoce podporované u jiných metod zahrnujících metody List.Map a List.Combine.
Počítání hodnot True na úrovni seznamu 2
Počítání hodnot True na úrovni seznamu 3
Informace o tom, jak používat funkci List@Level, naleznete v části Seznamy seznamů.
Kromě zjednodušení a zefektivnění grafu nejvíce, jak je to možné, snažte se dbát i na grafickou přehlednost. Navzdory nejlepšímu úsilí o intuitivnost grafu s logickými seskupeními nemusí být vztahy zjevné. Jednoduchá poznámka uvnitř skupiny nebo přejmenování posuvníku vám nebo jinému uživateli může ušetřit zbytečné nejasnosti nebo procházení grafu. Následuje několik způsobů, jak uvnitř grafů i mezi nimi zavést grafickou konzistenci.
Chcete-li si ušetřit práci po dokončení tvorby grafu, měli byste se snažit zajistit čitelnost rozvržení uzlů častým zarovnáváním uzlů během práce.
Pokud s grafem budou pracovat i ostatní, měli byste se před jeho odesláním ujistit, že rozvržení drátů a uzlů je přehledné.
Chcete-li si usnadnit zarovnání, použijte funkci Rozvržení uzlů vyčištění k automatickému zarovnání grafu, zarovnání však bude méně přesné, než když je uděláte sami.
Neuspořádaný graf
Zarovnaný graf
Informace o tom, jak používat zarovnání uzlů, naleznete v části Správa programu.
Přejmenování vstupů může ostatním usnadnit porozumění vašemu grafu, zejména pokud jejich vstup nebude vidět na obrazovce.
Buďte opatrní při přejmenovávání jiných uzlů než vstupů. Alternativou je vytvoření vlastního uzlu ze shluku uzlů a jeho přejmenování; bude zřejmé, že obsahuje něco jiného.
Vstupy pro manipulaci s povrchem
Vstupy architektonických parametrů
Vstupy pro skript simulace odvodnění
Chcete-li uzel přejmenovat, klikněte pravým tlačítkem na jeho název a vyberte příkaz „Přejmenovat uzel...“.
Pokud něco v grafu vyžaduje vysvětlení v jednoduchém jazyce, které není možné vyjádřit uzly, měli byste přidat poznámku.
Poznámka by měla být přidána, pokud je kolekce uzlů nebo skupina příliš velká nebo složitá a není možné jí ihned porozumět.
Poznámka popisující část programu, která vrací nezpracované vzdálenosti posunu
Poznámka popisující kód, který mapuje tyto hodnoty na sinusovou vlnu
Postup přidání poznámky naleznete v části Správa programu.
Při tvorbě vizuálního skriptu je důležité ověřit, zda skript vrací očekávaný výstup. Ne všechny chyby nebo problémy způsobí chybu celého programu, zejména hodnoty null nebo nulové hodnoty, které by mohly ovlivnit něco dále v programu. Tato strategie je také popsána v kontextu textového skriptování v části Strategie skriptování. Následující postup vám pomůže zajistit, že skript vrátí očekávaný výstup.
Pomocí uzlů Watch a bublin náhledů můžete při sestavování programu** ověřit, zda se na klíčových výstupech vrací očekávané hodnoty**.
K porovnání se použijí uzly Watch:
Nezpracované vzdálenosti posunu
Hodnoty, které prošly rovnicí sinu
Postup použití sledování naleznete v části Knihovna.
Je vysoce pravděpodobné, váš program otevře i někdo jiný, a to i v případě, že pracujete nezávisle. I tito lidé by měli být schopni rychle porozumět, co program potřebuje na svých vstupech a co vytváří na svých výstupech. Toto je důležité zejména při vývoji vlastního uzlu, který má být sdílen s komunitou aplikace Dynamo a používán v programu jiného uživatele. Tyto postupy vedou k robustním, opakovaně použitelným programům a uzlům.
Aby byla zajištěna čitelnost a škálovatelnost, měli byste se pokusit co nejvíce minimalizovat vstupy a výstupy.
Ještě před přidáním jakéhokoli uzlu na plátno byste se měli pokusit stanovit strategii, jak budete logiku vytvářet, a to tak, že nejprve vytvoříte hrubý náčrt toho, jak by logika mohla fungovat. Při vývoji hrubého obrysu byste měli sledovat, které vstupy a výstupy budou vloženy do skriptů.
Pokud existují konkrétní možnosti nebo podmínky, které chcete do grafu vložit, měli byste použít předvolby, abyste k těmto položkám měli rychlý přístup.
Pomocí předvoleb můžete také snížit složitost ukládáním specifických hodnot posuvníku do mezipaměti u grafu s dlouhou dobou běhu.
Postup použití předvoleb naleznete v části Správa dat s předvolbami.
Pokud je možné program shromáždit do jednoho kontejneru, měli byste použít vlastní uzel.
Vlastní uzel byste měli použít i v případě, že se část grafu často znovu používá v jiných aplikacích.
Pokud chcete sdílet funkce s komunitou aplikace Dynamo, měli byste použít vlastní uzel.
Shromáždění programu sloužícího k převodu bodů do vlastního uzlu učiní robustní, jedinečný program přenositelným a mnohem snadnějším na pochopení. Dobře pojmenované vstupní porty pomohou ostatním uživatelům porozumět tomu, jak tento uzel používat. Nezapomeňte přidávat popisy a požadované typy dat pro každý vstup.
Existující program atraktoru
Vlastní uzel, který tento program shromažďuje, PointGrid
Informace o použití vlastních uzlů naleznete v části Úvod do vlastních uzlů.
Můžete vytvořit šablony pro stanovení grafických standardů ve vizuálních grafech, aby spolupracovníci měli standardizovaný způsob, jak grafům porozumět.
Při tvorbě šablony můžete standardizovat barvy skupin a velikosti písem a kategorizovat tak typy pracovních postupů nebo akcí s daty.
Při tvorbě šablony můžete dokonce standardizovat, jakým způsobem chcete v grafu označovat, barvit nebo stylizovat rozdíly mezi front-end a back-end pracovními postupy.
Uživatelské rozhraní nebo front-end programu obsahuje název projektu, posuvníky vstupu a importovanou geometrii.
Back-end programu.
Seskupení kategorií podle barev (obecný návrh, vstupy, skriptování v jazyce Python, importovaná geometrie).
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
Nyní, když bylo stanoveno několik osvědčených postupů, použijeme tyto postupy na rychle sestavený program. I když program při generování střechy uspěje, stav grafu je „mapou mysli“ autora. Chybí jakákoli organizace a popis použití. Projdeme si nejlepší postupy organizace, popisu a analýzy programu, aby ostatní uživatelé mohli porozumět tomu, jak se tento program používá.
Program funguje, ale graf není uspořádán.
Začneme určením dat a geometrie vrácené programem.
Porozumění tomu, kdy dochází k velkým změnám dat, je velmi důležité ke stanovení logického dělení nebo modularity. Zkuste zkontrolovat zbytek programu pomocí uzlů Watch, čímž zjistíte, zda můžete před přechodem na další krok určit skupiny.
Tento blok kódu s matematickou rovnicí vypadá jako klíčový prvek programu. Uzel Watch zobrazuje, že vrací seznamy vzdáleností posunu.
Účel této oblasti není zcela zřejmý. Uspořádání hodnot True na úrovni seznamu L2 z výstupu uzlu BoundingBox.Contains a přítomnost položky List.FilterByBoolMask naznačuje, že jsme vzorkovali část osnovy bodů.
Když teď rozumíte základním prvkům programu, můžeme je umístit do skupin.
Skupiny umožňují uživateli vizuální rozlišení částí programu.
Import 3D modelu pozemku
Osnova převodu bodů založená na rovnici sinu
Ukázková část bodové osnovy
Tvorba povrchu architektonické střechy
Tvorba skleněného obvodového pláště
Jakmile budou skupiny stanoveny, zarovnejte uzly, tak aby vznikla vizuální spojitost přes celý graf.
Vizuální spojitost zlepšuje pro uživatele viditelnost toku programu a implicitních vztahů mezi uzly.
Zlepšete přístup k programu přidáním další hladiny grafických vylepšení. Přidáním poznámek popisujete, jak určitá oblast programu funguje, zadejte u vstupů vlastní názvy a přiřaďte k různým typům skupin barvy.
Tato grafická vylepšení sdělují uživateli více o tom, co program dělá. Různé barvy skupin pomáhají rozlišit vstupy od funkcí.
Poznámky
Vstupy s popisnými názvy
Před zhuštěním programu, je třeba najít strategické umístění, kde představíme simulátor odvodnění ve skriptu jazyka Python. Výstup prvního povrchu střechy s měřítkem připojte k odpovídajícímu vstupu skriptování.
V této části programu jsme se rozhodli integrovat skriptování, aby simulace odvodnění mohla být spuštěna na původním, jediném povrchu střechy. Tento konkrétní povrch není zobrazen v náhledu, ale ušetří krok výběru horního povrchu u zkoseného objektu Polysurface.
Zdrojová geometrie pro vstup skriptu
Uzel jazyka Python
Posuvníky vstupů
„Přepínač“ zapnutí/vypnutí
Nyní, když je vše připraveno, zjednodušíme graf.
Berte v potaz, že program s využitím možnosti Uzel na kód a vlastního uzlu značně zmenšil velikost grafu. Skupiny, které tvoří povrch střechy a stěny, byly převedeny na kód, protože jsou pro tento program velmi specifické. Skupina převodu bodů je obsažena ve vlastním uzlu, protože by mohla být využita i v jiném programu. Ve vzorovém souboru vytvořte vlastní uzel ze skupiny převodu bodů.
Vlastní uzel, který má obsahovat skupinu „osnovy převodu bodů“
Možnost Uzel na kód ke zhuštění skupin „tvorby povrchu architektonické střechy a obvodového pláště“
Jako poslední krok vytvořte předvolby pro ukázkové tvary střechy.
Tyto vstupy jsou primárními ovladači tvaru střechy a díky nim uživatel snadněji pochopí potenciál programu.
Program s pohledy dvou předvoleb.
Vzory odvodnění střechy nabízí uživateli analytický pohled příslušných předvoleb.