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
  • Výchozí vstupní hodnota
  • Vrácení více hodnot
  • Dokumentace, popisky a vyhledávání
  • Objekty
  • Použití typů geometrie aplikace Dynamo
  • Příkazy dispose/using
  • Migrace
  • Obecné typy
Edit on GitHub
Export as PDF
  1. Příručka Primer pro vývojáře
  2. Vývoj pro aplikaci Dynamo

Další práce s funkcí Zero-Touch

PreviousProvádění skriptů jazyka Python v uzlech Zero-Touch (C#)NextPokročilé přizpůsobení uzlů aplikace Dynamo

Last updated 1 month ago

Když nyní víme, jak vytvořit projekt Zero-Touch, můžeme se podrobněji seznámit se specifiky vytváření uzlu a projít si příklad ZeroTouchEssentials na Githubu aplikace Dynamo.

Mnoho standardních uzlů aplikace Dynamo jsou v podstatě uzly Zero-Touch, například většina výše uvedených uzlů Math, Color a DateTime.

Nejprve si stáhněte projekt ZeroTouchEssentials z tohoto umístění:

V aplikaci Visual Studio otevřete soubor řešení ZeroTouchEssentials.sln a sestavte řešení.

Soubor ZeroTouchEssentials.cs obsahuje všechny metody, které budeme importovat do aplikace Dynamo.

Otevřete aplikaci Dynamo a importujte knihovnu ZeroTouchEssentials.dll, abyste získali uzly, na které budeme odkazovat v následujících příkladech.

Výchozí vstupní hodnota

  • Nastavte parametry metody na výchozí hodnotu: inputNumber = 2.0

namespace ZeroTouchEssentials
{
    public class ZeroTouchEssentials
    {
        // Set the method parameter to a default value
        public static double MultiplyByTwo(double inputNumber = 2.0) 
        {
            return inputNumber * 2.0;
        }
    }
}
  1. Výchozí hodnota se zobrazí, když umístíte kurzor nad vstupní port uzlu.

Vrácení více hodnot

Vracení více hodnot je o něco složitější než vytváření více vstupů a je třeba je vracet pomocí slovníku. Položky slovníku se stanou porty na výstupní straně uzlu. Porty vracející více hodnot se vytvářejí následujícím způsobem:

  • Přidejte using System.Collections.Generic; pro použití položky Dictionary<>.

  • Přidejte using Autodesk.DesignScript.Runtime; pro použití atributu MultiReturn. Tento kód odkazuje na knihovnu DynamoServices.dll z balíčku DynamoServices NuGet.

  • Přidejte do metody atribut [MultiReturn(new[] { "string1", "string2", ... more strings here })]. Řetězce odkazují na klíče ve slovníku a stanou se názvy výstupních portů.

  • Vraťte Dictionary<> z funkce s klíči, které odpovídají názvům parametrů v atributu: return new Dictionary<string, object>

using System.Collections.Generic;
using Autodesk.DesignScript.Runtime;

namespace ZeroTouchEssentials
{
    public class ZeroTouchEssentials
    {
        [MultiReturn(new[] { "add", "mult" })]
        public static Dictionary<string, object> ReturnMultiExample(double a, double b)
        {
            return new Dictionary<string, object>

                { "add", (a + b) },
                { "mult", (a * b) }
            };
        }
    }
}

Uzel, který vrací více výstupů.

  1. Všimněte si, že nyní existují dva výstupní porty pojmenované podle řetězců, které jsme zadali pro klíče slovníku.

Dokumentace, popisky a vyhledávání

Osvědčeným postupem je přidat k uzlům aplikace Dynamo dokumentaci, která popisuje funkci uzlu, vstupy, výstupy, vyhledávací štítky atd. To se provádí pomocí štítků dokumentace XML. Dokumentace XML je vytvořena následujícím způsobem:

  • Za dokumentaci se považuje jakýkoli text komentáře, kterému předcházejí tři lomítka.

    • Například: /// Documentation text and XML goes here

  • Za třemi lomítky vytvořte nad metodami štítky XML, které aplikace Dynamo přečte při importu knihovny DLL.

    • Například: /// <summary>...</summary>

  • Povolte dokumentaci XML v aplikaci Visual Studio výběrem možnosti Project > [Project] Properties > Build > Output a zaškrtnutím políčka Documentation file.

  1. Aplikace Visual Studio vygeneruje soubor XML v zadaném umístění.

Typy štítků jsou následující:

  • /// <summary>...</summary> je hlavní dokumentace pro uzel a zobrazí se jako popisek nad uzlem v levém postranním panelu vyhledávání.

  • /// <param name="inputName">...</param> vytvoří dokumentaci pro specifické vstupní parametry.

  • /// <returns>...</returns> vytvoří dokumentaci pro výstupní parametr.

  • /// <returns name = "outputName">...</returns> vytvoří dokumentaci pro více výstupních parametrů.

  • /// <search>...</search> porovná uzel s výsledky hledání na základě seznamu odděleného čárkou. Pokud například vytvoříme uzel, který rozdělí síť, může být vhodné přidat štítky jako „sít“, „dělení“ a „catmull-clark“.

Níže je uveden příklad uzlu s popisem vstupu a výstupu a také souhrnem, který se zobrazí v knihovně.

using Autodesk.DesignScript.Geometry;

namespace ZeroTouchEssentials
{
    public class ZeroTouchEssentials
    {
        /// <summary>
        /// This method demonstrates how to use a native geometry object from Dynamo
        /// in a custom method
        /// </summary>
        /// <param name="curve">Input Curve. This can be of any type deriving from Curve, such as NurbsCurve, Arc, Circle, etc</param>
        /// <returns>The twice the length of the Curve </returns>
        /// <search>example,curve</search>
        public static double DoubleLength(Curve curve)
        {
            return curve.Length * 2.0;
        }
    }
}

Všimněte si, že kód pro tento vzorový uzel obsahuje:

  1. Souhrn uzlu

  2. Popis vstupu

  3. Popis výstupu

Popisy uzlů aplikace Dynamo – osvědčené postupy

Popisy uzlů stručně popisují funkci a výstup uzlu. V aplikaci Dynamo se objevují na dvou místech:

  • V popisku nástroje uzlu.

  • V Prohlížeči dokumentace.

Dodržováním těchto pokynů zajistíte konzistenci a ušetříte čas při psaní nebo aktualizaci popisů uzlů.

Přehled

Popis by měl obsahovat jednu až dvě věty. Pokud jsou potřeba další informace, uveďte je v Prohlížeči dokumentace v části Podrobnosti.

Větná stavba (první slovo věty a vlastní podstatná jména pište s velkým počátečním písmenem). Na konci není tečka.

Jazyk by měl být co nejsrozumitelnější a nejjednodušší. Definujte zkratky při první zmínce, pokud nejsou známé i neodborným uživatelům.

Vždy upřednostněte srozumitelnost, i kdyby to mělo znamenat, že se odchýlíte od těchto pokynů.

Pokyny

Co dělat
Co nedělat

Popis začínejte slovesem ve třetí osobě.

  • Příklad: Určuje, zda se jeden geometrický objekt protíná s jiným.

Nezačínejte slovesem ve druhé osobě ani žádným podstatným jménem.

  • Příklad: Určete, zda se jeden geometrický objekt protíná s jiným.

Místo slovesa „Získá“ použijte „Vrátí“, „Vytvoří“ nebo jiné popisné sloveso.

  • Příklad: Vrátí reprezentaci NURBS povrchu.

Nepoužívejte sloveso „Získá“ (při psaní popisu v angličtině nepoužívejte slovesa „Get“ nebo „Gets“). Je to méně konkrétní a méně přesné.

  • Příklad: Získá reprezentaci NURBS povrchu

Pokud píšete popis v angličtině a odkazujete na vstupy, použijte slovo „given“ nebo „input“ místo „specified“ nebo jiných výrazů. Pokud je to však možné, vynechejte i tato slova, abyste popis zjednodušili a snížili počet slov.

  • Příklad: Deletes the given file

  • Příklad: Projects a curve along the given projection direction onto given base geometry

Slovo „specified“ můžete použít v případě, že neodkazuje na vstup.

  • Příklad: Writes text content to a file specified by the given path

Při odkazování na vstupy nepoužívejte kvůli konzistenci výraz „specified“ ani žádný jiný výraz kromě „given“ nebo „input“. Nemíchejte výrazy „given“ a „input“ ve stejném popisu, pokud to není nutné kvůli srozumitelnosti.

  • Příklad: Deletes the specified file

  • Příklad: Projects an input curve along a given projection direction onto a specified base geometry

Pokud píšete popis v angličtině, použijte při prvním odkazování na vstup člen „a“ nebo „an“. Místo slov „a“ nebo „an“ používejte v případě potřeby kvůli přehlednosti „the given“ nebo „the input“.

  • Příklad: Sweeps a curve along the path curve

Při prvním odkazu na vstup nepoužívejte v angličtině zájmeno „this“.

  • Příklad: Sweeps this curve along the path curve

Při prvním odkazu na výstup nebo jiné podstatné jméno, které je cílem operace uzlu, použijte člen „a“ nebo „an“. Člen „the“ používejte pouze ve spojení se slovem „input“ nebo „given“.

  • Příklad: Copies a file

  • Příklad: Copies the given file

Při prvním odkazu na výstup nebo jiné podstatné jméno, které je cílem operace uzlu, nepoužívejte člen „the“ samostatně.

  • Příklad: Copies the file

První slovo věty a všechna vlastní jména, jako jsou jména a tradičně psaná podstatná jména, pište s počátečním velkým písmenem.

  • Příklad: Vrátí průsečík dvou objektů BoundingBox.

U běžných geometrických objektů a pojmů nepoužívejte počáteční velká písmena, pokud to není nutné kvůli přehlednosti.

  • Příklad: Upraví měřítko nerovnoměrně kolem dané Roviny.

Při psaní popisů v angličtině pište slovo Boolean s počátečním velkým písmenem. Při odkazování na výstup booleovských hodnot pište slova True a False s počátečním velkým písmenem.

  • Příklad: Returns True if the two values are different

  • Příklad: Converts a string to all uppercase or all lowercase characters based on a Boolean parameter

Při psaní popisů v angličtině nepište slovo Boolean s počátečním malým písmenem. Při odkazování na výstup booleovských hodnot nepište slova True a False s počátečním malým písmenem.

  • Příklad: Returns true if the two values are different

  • Příklad: Converts a string to all uppercase characters or all lowercase characters based on a boolean parameter

Upozornění a chyby uzlu v aplikaci Dynamo

Upozornění a chyby uzlů upozorňují uživatel na problém s grafem. Uživatel je na problémy, které narušují normální fungování grafu, upozorněn zobrazením ikony a rozšířenou textovou bublinou nad uzlem. Chyby a upozornění uzlů se mohou lišit podle závažnosti: některé grafy mohou běžet dostatečně i s upozorněními, zatímco jiné blokují očekávané výsledky. Ve všech případech jsou chyby a upozornění uzlů důležitými nástroji, které uživatel průběžně informují o problémech s grafem.

Objekty

Aplikace Dynamo nemá klíčové slovo new, takže objekty bude nutné konstruovat pomocí statických konstrukčních metod. Objekty jsou konstruovány následujícím způsobem:

  • Změňte konstruktor na vnitřní internal ZeroTouchEssentials(), pokud není vyžadováno jinak.

  • Konstruujte objekt pomocí statické metody, například public static ZeroTouchEssentials ByTwoDoubles(a, b).

Poznámka: Aplikace Dynamo používá předponu „By“ pro označení statické metody jako konstruktoru, a i když je to volitelné, použití předpony „By“ pomůže vaší knihovně lépe se přizpůsobit existujícímu stylu aplikace Dynamo.

namespace ZeroTouchEssentials
{
    public class ZeroTouchEssentials
    {
        private double _a;
        private double _b;

        // Make the constructor internal
        internal ZeroTouchEssentials(double a, double b)
        {
            _a = a;
            _b = b;
        }

        // The static method that Dynamo will convert into a Create node
        public static ZeroTouchEssentials ByTwoDoubles(double a, double b)
        {
            return new ZeroTouchEssentials(a, b);
        }
    }
}

Po importu knihovny dll ZeroTouchEssentials bude v knihovně uzel ZeroTouchEssentials. Tento objekt lze vytvořit pomocí uzlu ByTwoDoubles.

Použití typů geometrie aplikace Dynamo

Knihovny aplikace Dynamo mohou jako vstupy použít nativní typy geometrie aplikace Dynamo a jako výstupy vytvořit novou geometrii. Typy geometrie se vytvářejí následujícím způsobem:

  • Odkaz na knihovnu ProtoGeometry.dll v projektu vložte pomocíusing Autodesk.DesignScript.Geometry; na začátek souboru C# a přidáním balíčku ZeroTouchLibrary NuGet do projektu.

  • Důležité: Spravujte zdroje geometrie, které nejsou vráceny z funkcí. Další informace naleznete v části Příkazy dispose/using níže.

Poznámka: Objekty geometrie aplikace Dynamo jsou používány jako jakékoli jiné objekty předávané funkcím.

using Autodesk.DesignScript.Geometry;

namespace ZeroTouchEssentials
{
    public class ZeroTouchEssentials
    {
        // "Autodesk.DesignScript.Geometry.Curve" is specifying the type of geometry input, 
        // just as you would specify a double, string, or integer 
        public static double DoubleLength(Autodesk.DesignScript.Geometry.Curve curve)
        {
            return curve.Length * 2.0;
        }
    }
}

Uzel, který získá délku křivky a zdvojnásobí ji.

  1. Tento uzel přijímá jako vstup typ geometrie Křivka.

Příkazy dispose/using

Zdroje geometrie, které nejsou vráceny z funkcí, bude nutné spravovat ručně, pokud nepoužíváte aplikaci Dynamo verze 2.5 nebo novější. V aplikaci Dynamo 2.5 a novějších verzích jsou zdroje geometrie interně zpracovány systémem, ale i přesto může být nutné odstranit geometrii ručně, pokud máte složitý případ použití nebo potřebujete omezit paměť v pevně dané době. Modul aplikace Dynamo zpracuje všechny zdroje geometrie, které jsou vráceny z funkcí. Zdroje geometrie, které nejsou vráceny, lze zpracovat ručně následujícími způsoby:

  • Pomocí příkazu using:

    using (Point p1 = Point.ByCoordinates(0, 0, 0))
    {
      using (Point p2 = Point.ByCoordinates(10, 10, 0))
      {
          return Line.ByStartPointEndPoint(p1, p2);
      }
    }
  • Pomocí ručního volání příkazu Dispose:

    Point p1 = Point.ByCoordinates(0, 0, 0);
    Point p2 = Point.ByCoordinates(10, 10, 0);
    Line l = Line.ByStartPointEndPoint(p1, p2);
    p1.Dispose();
    p2.Dispose();
    return l;

Migrace

Při publikování novější verze knihovny se mohou změnit názvy uzlů. Změny názvů lze zadat v souboru migrace, aby grafy vytvořené na základě předchozích verzí knihovny správně fungovaly i po aktualizaci. Migrace jsou implementovány následujícím způsobem:

  • Vytvořte soubor .xml ve stejné složce jako soubor .dll v následujícím formátu: „BaseDLLName“.Migrations.xml.

  • V souboru .xml vytvořte jeden prvek <migrations>...</migrations>.

  • V prvku migrace vytvořte prvky <priorNameHint>...</priorNameHint> pro každou změnu názvu.

  • Pro každou změnu názvu zadejte prvek <oldName>...</oldName> a <newName>...</newName>.

  1. Klikněte pravým tlačítkem myši a vyberte příkaz Add > New Item.

  2. Zvolte XML File.

  3. Pro tento projekt bychom soubor migrace pojmenovali ZeroTouchEssentials.Migrations.xml.

Tento vzorový kód sděluje aplikaci Dynamo, že každý uzel s názvem GetClosestPoint má nyní název ClosestPointTo.

<?xml version="1.0"?>
<migrations>
  <priorNameHint>
    <oldName>Autodesk.DesignScript.Geometry.Geometry.GetClosestPoint</oldName>
    <newName>Autodesk.DesignScript.Geometry.Geometry.ClosestPointTo</newName>
  </priorNameHint>
</migrations>

Obecné typy

Funkce Zero-Touch v současné době nepodporuje použití generických typů. Lze je použít, ale ne v kódu, který je přímo importován tam, kde tento typ není nastaven. Metody, vlastnosti nebo třídy, které jsou obecné a nemají sadu typů, nelze zpřístupnit.

V níže uvedeném příkladu nebude importován uzel Zero-Touch typu T. Pokud bude zbytek knihovny importován do aplikace Dynamo, budou existovat výjimky chybějících typů.

public class SomeGenericClass<T>
{
    public SomeGenericClass()
    {
        Console.WriteLine(typeof(T).ToString());
    }  
}

Použití obecného typu s typem nastaveným v tomto příkladu bude importováno do aplikace Dynamo.

public class SomeWrapper
{
    public object wrapped;
    public SomeWrapper(SomeGenericClass<double> someConstrainedType)
    {
        Console.WriteLine(this.wrapped.GetType().ToString());
    }
}

Příklady kódu jsou získány ze souboru a obecně se s ním shodují. Dokumentace XML byla odstraněna, aby byl projekt stručnější, a každý příklad kódu vytvoří uzel na obrázku nad ním.

Aplikace Dynamo podporuje definici výchozích hodnot vstupních portů v uzlu. Tyto výchozí hodnoty budou do uzlu zadány, pokud porty nemají žádná připojení. Výchozí hodnoty jsou vyjádřeny pomocí mechanismu jazyka C# pro zadávání volitelných argumentů popsaném v . Výchozí hodnoty jsou určeny následujícím způsobem:

Podívejte se na tento příklad kódu v souboru .

Podívejte se na tento příklad kódu v souboru .

Pokyny k zajištění konzistence a úspoře času při psaní nebo aktualizaci upozornění a chybových zpráv uzlů naleznete na wiki stránce .

Podívejte se na tento příklad kódu v souboru .

Podívejte se na tento příklad kódu v souboru .

Příkaz using je zdokumentován .

Další informace o nových funkcích stability v aplikaci Dynamo 2.5 naleznete v části .

Podívejte se na tento příklad kódu v souboru .

ZeroTouchEssentials.cs
Příručce programování v jazyce C#
ZeroTouchEssentials.cs
ZeroTouchEssentials.cs
Vzor obsahu: Upozornění a chyby uzlů
ZeroTouchEssentials.cs
ZeroTouchEssentials.cs
zde
Vylepšení stability geometrie aplikace Dynamo
ProtoGeometry.Migrations.xml
https://github.com/DynamoDS/ZeroTouchEssentials
Uzly Zero-Touch
ZeroTouchEssentials v aplikaci Visual Studio
Výchozí hodnota
Více výstupů
Generování souboru XML
Popis uzlu
Uzel ByTwoDoubles
Vstup Křivka
Soubor migrace