Proč byste měli používat textové programování ve vizuálním programovacím prostředí aplikace Dynamo? Vizuální programování má mnoho výhod. Umožňuje vytvářet programy bez použití speciální syntaxe v intuitivním vizuálním rozhraní. Vizuální program však může být nepřehledný a v některých případech může mít menší funkčnost. Například jazyk Python nabízí mnohem jednodušší metody pro zápis podmínek (if/then) a cyklů. Python je výkonný nástroj, který umožňuje rozšířit možnosti aplikace Dynamo a umožňuje nahradit mnoho uzlů několika stručnými řádky kódů.
Vizuální program:
Textový program:
Stejně jako bloky kódu jsou uzly Python skriptovacím rozhraním v prostředí vizuálního programování. Uzel jazyka Python naleznete v knihovně v části Script > Editor > Python Script.
Dvojitým kliknutím na uzel otevřete editor skriptů jazyka Python (můžete také kliknout pravým tlačítkem na uzel a vybrat možnost Upravit). Všimněte si, že se v horní části nachází výchozí text, který vám má pomoci odkazovat na knihovny, které budete potřebovat. Vstupy jsou uloženy v poli IN. Hodnoty se vrátí do aplikace Dynamo jejich přiřazením k proměnné OUT.
Knihovna Autodesk.DesignScript.Geometry umožňuje použití tečkové notace podobné blokům kódů. Další informace o syntaxi aplikace Dynamo naleznete v části https://github.com/DynamoDS/DynamoPrimerNew/blob/master-csy/coding-in-dynamo/7_code-blocks-and-design-script/7-2_design-script-syntax.md a také v příručce DesignScript Guide. (Chcete-li stáhnout tento dokument PDF, klikněte pravým tlačítkem na odkaz a vyberte možnost Uložit odkaz jako.) Zadáním typu geometrie, například „Point.“, zobrazíte seznam metod vytváření a dotazování bodů.
Metody zahrnují konstruktory, například ByCoordinates, akce, například Add, a dotazy, například souřadnice X, Y a Z.
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
V tomto příkladu napíšeme skript jazyka Python, který vytvoří vzory z modulu tělesa a převede je na vlastní uzel. Nejprve vytvoříme náš modul tělesa pomocí uzlů aplikace Dynamo.
Rectangle.ByWidthLength: Vytvořte obdélník, který bude základem našeho tělesa.
Surface.ByPatch: Spojte obdélník se vstupem closedCurve a vytvořte tak dolní povrch.
Geometry.Translate: Připojte obdélník ke vstupu geometrie, aby se posunul nahoru pomocí bloku kódu, který určuje základní tloušťku našeho tělesa.
Polygon.Points: Pomocí dotazu na převedený obdélník extrahujte rohové body.
Geometry.Translate: Pomocí bloku kódu vytvořte seznam čtyř hodnot odpovídajících čtyřem bodům. Tím posunete jeden roh tělesa nahoru.
Polygon.ByPoints: Pomocí převedených bodů rekonstruujte horní polygon.
Surface.ByPatch: Připojením polygonu vytvořte horní povrch.
Nyní, když máme horní a dolní povrch, vytvoříme boky tělesa šablonováním mezi dvěma profily.
List.Create: Spojte dolní obdélník a horní polygon se vstupy indexu.
Surface.ByLoft: Šablonováním dvou profilů vytvořte strany tělesa.
List.Create: Připojte horní, boční a dolní povrchy ke vstupům indexu a vytvořte tak seznam povrchů.
Solid.ByConnectedSurfaces: Spojením povrchů vytvořte modul tělesa.
Nyní, když máme naše těleso, přetáhneme do pracovního prostoru uzel skriptu jazyka Python.
Chcete-li do uzlu přidat další vstupy, klikněte na ikonu + v uzlu. Vstupy jsou pojmenovány IN[0], IN[1] atd., což označuje, že představují položky v seznamu.
Začneme definováním našich vstupů a výstupu. Dvojitým kliknutím na uzel otevřete editor jazyka Python. Při úpravách kódu v editoru postupujte podle kódu uvedeného níže.
Tento kód začne dávat větší smysl, jak budeme cvičením procházet. Dále musíme přemýšlet o tom, jaké informace jsou potřeba k vytvoření pole našeho modulu tělesa. Nejprve je nutné znát rozměry tělesa, abychom mohli určit vzdálenost posunutí. Kvůli chybě ohraničujícího kvádru bude nutné k jeho vytvoření použít geometrii křivky hrany.
Podívejte se na uzel Python v aplikaci Dynamo. Všimněte si, že používáme stejnou syntaxi, jakou vidíme v názvech uzlů v aplikaci Dynamo. Prohlédněte si níže uvedený kód s komentáři.
Protože budeme převádět i otáčet moduly těles, použijeme operaci Geometry.Transform. Při pohledu na uzel Geometry.Transform zjistíme, že k transformaci tělesa budeme potřebovat zdrojový souřadnicový systém a cílový souřadnicový systém. Zdroj je kontextový souřadnicový systém našeho tělesa, zatímco cíl bude odlišný souřadnicový systém pro každý modul v poli. To znamená, že bude nutné projít hodnoty X a Y a transformovat souřadnicový systém pokaždé jinak.
Klikněte na tlačítko Spustit a poté uložte kód. Připojte uzel jazyka Python k existujícímu skriptu níže uvedeným způsobem.
Připojte výstup z uzlu Solid.ByConnectedSurfaces jako první vstup uzlu jazyka Python a pomocí uzlu CodeBlock definujte ostatní vstupy.
Vytvořte uzel Topology.Edge a jako vstup použijte výstup z uzlu jazyka Python.
Nakonec vytvořte uzel Edge.CurveGeometry a jako vstup použijte výstup z uzlu Topology.Edge.
Zkuste změnit výchozí hodnotu a vytvořte jiné vzory. Můžete také změnit parametry samotného modulu tělesa a dosáhnout tak různých efektů.
Nyní, když jsme vytvořili užitečný skript jazyka Python, uložte jej jako uživatelský uzel. Vyberte uzel Python Script, klikněte pravým tlačítkem na pracovní prostor a vyberte možnost Vytvořit vlastní uzel.
Přiřaďte název, popis a kategorii.
Tím se otevře nový pracovní prostor, ve kterém se má upravit uživatelský uzel.
Vstupy: Změňte vstupní názvy tak, aby byly popisnější, a přidejte typy dat a výchozí hodnoty.
Výstup: Změňte název výstupu.
Uzel uložte jako soubor .dyf a měli byste vidět, že vlastní uzel odráží změny, které jsme právě provedli.
Python je široce používaný programovací jazyk, jehož popularita souvisí s jeho stylem syntaxe. Je velmi čitelný, a proto je snazší se ho naučit v porovnání s mnoha jinými jazyky. Python podporuje moduly a balíčky a může být začleněn do existujících aplikací. Dobrým zdrojem informací o tom, jak začít pracovat s jazykem Python, je část na stránce .
V aplikaci Dynamo 2.0 je možné určit výchozí šablonu (.py extension)
, která se použije při prvním otevření okna jazyka Python. Tato funkce byla dlouho požadována, protože urychluje používání jazyka Python v aplikaci Dynamo. Díky šabloně je možné při vývoji vlastního skriptu v jazyce Python mít připraveny veškeré importy.
Šablona se nachází v umístění APPDATA
instalace aplikace Dynamo.
Obvykle je to následující umístění: ( %appdata%\Dynamo\Dynamo Core\{version}\ )
.
Aby bylo možné tuto funkci používat, je nutné přidat do souboru DynamoSettings.xml
následující řádek. (Upravte v poznámkovém bloku)
Řetězec <PythonTemplateFilePath />
je možné jednoduše nahradit následujícím řetězcem:
Poznámka: Nahraďte proměnnou CURRENTUSER svým uživatelským jménem.
Dále je nutné vytvořit šablonu s funkcemi, které má obsahovat. V tomto případě do ní zahrneme importy související s aplikací Revit a další položky, které se s aplikací Revit obvykle používají.
Otevřete prázdný dokument v poznámkovém bloku a vložte do něj následující kód:
Poté tento soubor uložte pod názvem PythonTemplate.py
do umístění APPDATA
.
Po definování šablony jazyka Python aplikace Dynamo tuto šablonu vyhledá při každém vložení uzlu jazyka Python. Pokud ji nenajde, okno jazyka Python bude vypadat jako ve výchozím nastavení.
Pokud se podaří šablonu jazyka Python nalézt (například náš skript pro aplikaci Revit), zobrazí se všechny položky, které obsahuje.
Další informace o této skvělé nové funkci (autor: Radu Gidei) naleznete zde: https://github.com/DynamoDS/Dynamo/pull/8122
Nyní, když jsme ukázali, jak používat skripty jazyka Python v aplikaci Dynamo, podívejme se na připojení knihoven aplikace Revit do prostředí skriptování. Pamatujte, importovali jsme standardní knihovny jazyka Python a hlavní uzly aplikace Dynamo pomocí prvních čtyř řádků v níže uvedeném bloku kódu. Chcete-li importovat uzly aplikace Revit, prvky aplikace Revit a správce dokumentů aplikace Revit, stačí přidat pouze několik dalších řádků:
To nám poskytuje přístup k rozhraní API aplikace Revit a nabízí vlastní skriptování pro libovolnou úlohu aplikace Revit. Díky kombinaci procesu vizuálního programování se skriptováním rozhraní API aplikace Revit se spolupráce a vývoj nástrojů výrazně zlepšují. Například správce BIM i konstruktér schémat mohou spolupracovat na stejném grafu. Při této spolupráci mohou zlepšit návrh a provedení modelu.
Vytvořte nový projekt aplikace Revit.
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
V těchto cvičeních prozkoumáme základní skripty jazyka Python v rozhraní Dynamo pro aplikaci Revit. Toto cvičení se zaměří na práci se soubory a prvky aplikace Revit a také na komunikaci mezi aplikacemi Revit a Dynamo.
Jedná se o jednoduchou metodu získávání souborů doc, uiapp a app aplikace Revit připojených k vaší relaci Dynamo. Programátoři, kteří předtím pracovali v rozhraní API aplikace Revit, si mohou všimnout položek v seznamu sledovaných položek. Pokud se vám to nezdá povědomé, tak to nevadí. Použijeme další příklady ve cvičeních níže.
Zde je způsob importu služeb aplikace Revit a získání dat dokumentu v aplikaci Dynamo.
Podívejte se na uzel Python v aplikaci Dynamo. Kód můžete také najít níže:
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
V tomto cvičení vytvoříme pomocí uzlu Python aplikace Dynamo jednoduchou křivku modelu v aplikaci Revit.
Začněte vytvořením nové rodiny Koncepční objem v aplikaci Revit.
Otevřete složku rodiny Koncepční objem a použijte soubor šablony Metric Mass.rft.
V aplikaci Revit pomocí klávesové zkratky un
vyvolejte nastavení jednotek projektu a změňte jednotku délky na metry.
Spusťte aplikaci Dynamo a vytvořte sadu uzlů jako na obrázku níže. Nejprve vytvoříme dva referenční body v aplikaci Revit z uzlů aplikace Dynamo.
Vytvořte blok kódu a zadejte hodnotu
"0;"
.Tuto hodnotu připojte ke vstupům X, Y a Z uzlu ReferencePoint.ByCoordinates.
Vytvořte tři posuvníky v rozsahu od -100 do 100 s velikostí kroku 1.
Připojte všechny posuvníky k uzlu ReferencePoint.ByCoordinates.
Přidejte do pracovního prostoru uzel Python, kliknutím na tlačítko „+“ v uzlu přidejte další vstup a připojte dva referenční body, jeden ke každému vstupu. Otevřete uzel Python.
Podívejte se na uzel Python v aplikaci Dynamo. Celý kód najdete níže.
System.Array: Aplikace Revit vyžaduje jako vstup systémové pole (místo seznamu jazyka Python). Jedná se pouze o jeden další řádek kódu, ale zohlednění typů argumentů usnadní programování v aplikaci Revit v jazyce Python.
V aplikaci Dynamo jsme pomocí jazyka Python vytvořili dva referenční body a čáru, která je spojuje. V dalším cvičení zkusíme něco složitějšího.
Kliknutím na odkaz níže si stáhněte vzorový soubor.
Úplný seznam vzorových souborů najdete v dodatku.
Toto cvičení vysvětluje témata připojení dat a geometrie z aplikace Revit do aplikace Dynamo a zpět. Začneme otevřením souboru Revit-StructuralFraming.rvt. Po otevření spusťte aplikaci Dynamo a otevřete soubor Revit-StructuralFraming.dyn.
Tento soubor aplikace Revit je jeden z nejzákladnějších. Dvě referenční křivky: jedna nakreslená na Podlaží 1 a druhá na Podlaží 2. Chceme tyto křivky dostat do aplikace Dynamo a zachovat živé propojení.
V tomto souboru máme sadu uzlů zapojených do pěti vstupů uzlu Python.
Uzly Select Model Element: Klikněte na tlačítko Vybrat pro každý prvek a vyberte odpovídající křivku v aplikaci Revit.
Uzel Code Block: Pomocí syntaxe
0..1..#x;
, připojte posuvník celého čísla v rozsahu od 0 do 20 ke vstupu x. Označuje počet nosníků, které se mají kreslit mezi dvěma křivkami.Uzel Structural Framing Types: Zde vybereme v rozevírací nabídce výchozí nosník W12x26.
Uzel Levels: Vyberte možnost Podlaží 1.
Tento kód v jazyce Python je trochu hustší, ale komentáře v kódu popisují, co se v procesu děje.
V aplikaci Revit je k dispozici pole nosníků, které pokrývají dvě křivky jako konstrukční prvky. Poznámka: Toto není realistický příklad... Konstrukční prvky se používají jako příklad pro nativní instance aplikace Revit vytvořené z aplikace Dynamo.
Výsledky jsou v aplikaci Dynamo zobrazeny také. Nosníky v uzlu Watch3D odkazují na geometrii dotazovanou z prvků aplikace Revit.
Všimněte si, že máme nepřetržitý proces převodu dat z prostředí aplikace Revit do prostředí aplikace Dynamo. Toto je souhrn průběhu procesu:
Vybrat prvek aplikace Revit
Převést prvek aplikace Revit na křivku aplikace Dynamo
Rozdělit křivku aplikace Dynamo na řadu bodů aplikace Dynamo
Vytvořit čáry aplikace Dynamo pomocí bodů aplikace Dynamo mezi dvěma křivkami
Vytvořit nosníky aplikace Revit pomocí odkazů na čáry aplikace Dynamo
Vytvořit výstup povrchů aplikace Dynamo pomocí dotazů na geometrii nosníků aplikace Revit
Může to znít složitě, ale díky skriptu je to stejně jednoduché jako úprava křivky v aplikaci Revit a opětovné spuštění řešiče (i když je možné, že při tom budete muset odstranit předchozí nosníky). Důvodem je skutečnost, že nosníky umísťujeme do jazyka Python, a tím porušujeme asociaci uzlů OOTB.
Pomocí aktualizace referenčních křivek v aplikaci Revit získáte nové pole nosníků.
Plán projektu aplikace Dynamo spočívá v rozšíření rozsahu implementace platformy. Protože aplikace Dynamo přidává další programy do objektu docket, uživatelé budou mít přístup k programům API specifickým pro platformu z prostředí skriptování v jazyce Python. Zatímco v aplikaci Revit se jedná o případovou studii, můžeme předvídat další kapitoly v budoucnosti nabízející komplexní výukové programy zaměřené na skriptování v jiných platformách. Navíc je nyní k dispozici mnoho knihoven , které lze importovat do aplikace Dynamo.
Níže uvedené příklady ukazují způsoby implementace operací specifických pro aplikaci Revit z aplikace Dynamo pomocí jazyka Python. Podrobnější informace o vztahu jazyka Python s aplikacemi Dynamo a Revit naleznete na . Dalším užitečným zdrojem pro aplikace Python a Revit je projekt aplikace Revit.