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
  • Dokumentace k rozhraní API
  • Šablona kódu
  • Příklad
  • Cíl
  • Datová sada
  • Přehled řešení
  • Kontrola dokumentace rozhraní API
  • Načtení všech povodí
  • Rozbalení objektů
  • Skript jazyka Python
  • Vytvoření objektů PolyCurves
  • Výsledek
  • IronPython vs. CPython
Edit on GitHub
Export as PDF
  1. Dynamo for Civil 3D
  2. Pokročilá témata

Python a Civil 3D

PreviousVazby objektůNextPřehrávač skriptů Dynamo

Last updated 1 month ago

Aplikace Dynamo je sice jako nástroj pro extrémně výkonná, ale můžete jít také nad rámec uzlů a drátů a psát kód v textové podobě. To lze provést dvěma způsoby:

  1. Psát v jazyce DesignScript pomocí bloku kódu.

  2. Psát v jazyce Python pomocí uzlu jazyka Python.

V této části se zaměříme na to, jak lze pomocí jazyka Python v prostředí aplikace Civil 3D efektivně využívat rozhraní .NET API aplikací AutoCAD a Civil 3D.

Další obecné informace o používání jazyka Python v aplikaci Dynamo naleznete v části Python .

Dokumentace k rozhraní API

Aplikace AutoCAD i Civil 3D mají k dispozici několik rozhraní API, která umožňují vývojářům, jako jste vy, rozšířit základní produkt o vlastní funkce. V kontextu aplikace Dynamo jsou relevantní spravovaná rozhraní .NET API. Následující odkazy jsou důležité pro pochopení struktury rozhraní API a způsobu jejich fungování.

Při procházení této části se můžete setkat s pojmy, které neznáte, jako jsou databáze, transakce, metody, vlastnosti atd. Mnoho z těchto pojmů tvoří základ pro práci s rozhraním .NET API a nejsou specifické pro aplikaci Dynamo nebo jazyk Python. Podrobné rozebírání těchto pojmů přesahuje rámec této části příručky Primer, proto doporučujeme často vyhledávat další informace na výše uvedených odkazech.

Šablona kódu

Při první úpravě nového uzlu jazyka Python bude tento uzel předvyplněn kódem šablony, abyste mohli začít. Zde je rozpis šablony s vysvětlením jednotlivých bloků.

  1. Importuje moduly sys a clr, které jsou nezbytné pro správnou funkci interpretu jazyka Python. Modul clr zejména umožňuje, aby se se jmennými prostory .NET zacházelo v podstatě jako s balíčky jazyka Python.

  2. Načte standardní sestavy (tj. knihovny DLL) pro práci se spravovanými rozhraními .NET API pro aplikace AutoCAD a Civil 3D.

  3. Přidá odkazy na standardní jmenné prostory aplikací AutoCAD a Civil 3D. Jsou ekvivalentní direktivám using nebo Imports v jazyce C# nebo VB.NET (v uvedeném pořadí).

  4. Vstupní porty uzlu jsou přístupné pomocí předdefinovaného seznamu s názvem IN. K datům v určitém portu můžete přistupovat pomocí jeho čísla indexu, například dataInFirstPort = IN[0].

  5. Vrátí aktivní dokument a editor.

  6. Uzamkne dokument a zahájí transakci databáze.

  7. Zde byste měli umístit většinu logiky skriptu.

  8. Zrušte komentář tohoto řádku, aby se po dokončení hlavní práce provedla transakce.

  9. Pokud chcete z uzlu získat výstup libovolných dat, přiřaďte je na konci skriptu proměnné OUT.

Chcete si šablonu přizpůsobit? Výchozí šablonu jazyka Python si můžete přizpůsobit úpravou souboru PythonTemplate.py, který se nachází v umístění C:\ProgramData\Autodesk\C3D <version>\Dynamo.

Příklad

Pojďme si na příkladu ukázat některé základní koncepty psaní skriptů jazyka Python v aplikaci Dynamo for Civil 3D.

Cíl

Datová sada

Zde jsou příklady souborů, na které se můžete odkazovat v tomto cvičení.

Přehled řešení

Zde je uveden přehled logiky tohoto grafu.

  1. Zkontrolujte dokumentaci rozhraní API aplikace Civil 3D.

  2. Vyberte všechna povodí v dokumentu podle názvu hladiny.

  3. „Rozbalte“ objekty aplikace Dynamo a získejte přístup k interním prvkům rozhraní API aplikace Civil 3D.

  4. Vytvořte body aplikace Dynamo z bodů aplikace AutoCAD.

  5. Vytvořte pomocí bodů objekty PolyCurve.

Pojďme na to!

Kontrola dokumentace rozhraní API

Načtení všech povodí

Nyní můžeme začít vytvářet logiku grafu. Nejprve je nutné získat seznam všech povodí v dokumentu. Pro tuto operaci jsou k dispozici uzly, takže ji nemusíme zahrnovat do skriptu jazyka Python. Použití uzlů nabízí lepší přehlednost pro někoho, kdo by mohl graf číst (místo procházení velkého množství kódu ve skriptu jazyka Python), a také udržuje skript jazyka Python zaměřený na jednu věc: vrácení hraničních bodů povodí.

Všimněte si, že výstup z uzlu All Objects on Layer je seznam objektů CivilObject. Je tomu tak proto, že aplikace Dynamo for Civil 3D aktuálně nemá žádné uzly pro práci s povodími, což je celý důvod, proč přistupovat k rozhraní API prostřednictvím jazyka Python.

Rozbalení objektů

Než budeme pokračovat, musíme se krátce zastavit u důležitého pojmu. V části Knihovna uzlů jsme se zmínili, jak spolu souvisí objekty (Object) a objekty aplikace Civil 3D (CivilObject). Abychom to dále upřesnili, objekt aplikace Dynamo je obálka kolem entity aplikace AutoCAD. Podobně platí, že objekt Dynamo CivilObject je obálka kolem entity aplikace Civil 3D. Objekt můžete „rozbalit“ přístupem k jeho vlastnostem InternalDBObject nebo InternalObjectId.

Typ aplikace Dynamo
Zabalení

Objekt Autodesk.AutoCAD.DynamoNodes.Object

Entita Autodesk.AutoCAD.DatabaseServices.Entity

CivilObject Autodesk.Civil.DynamoNodes.CivilObject

Entita Autodesk.Civil.DatabaseServices.Entity

Obecně je bezpečnější získat ID objektu pomocí vlastnosti InternalObjectId a poté získat přístup k zabalenému objektu v transakci. Důvodem je, že vlastnost InternalDBObject vrátí objekt DBObject aplikace AutoCAD, který není v zapisovatelném stavu.

Skript jazyka Python

Zde je úplný skript jazyka Python, který provádí přístup k vnitřním objektům povodí a získává jejich hraniční body. Zvýrazněné řádky jsou upraveny/přidány oproti výchozímu kódu šablony.

Kliknutím na podtržený text ve skriptu zobrazíte popis k jednotlivým řádkům.

# Načtení standardní knihovny jazyka Python a knihovny jazyka DesignScript
import sys
import clr

# Přidání sestav pro aplikace AutoCAD a Civil3D
clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')



# Import referencí z aplikace AutoCAD
from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *

# Import referencí z aplikace Civil 3D
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *



# Vstupy do tohoto uzlu budou uloženy jako seznam v proměnných IN.
 = 

 


    


    
    
adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor

with adoc.LockDocument():
    with adoc.Database as db:
        
        with db.TransactionManager.StartTransaction() as t:
                          
                
                                
                
                    
                                        
                    
                    
                        
                        
                    
            
            # Provést před ukončením transakce
            
            pass
            
# Přiřazení výstupu k proměnné OUT.

Pravidlem je, že většinu logiky skriptu je vhodné zahrnout do transakce. Tím zajistíte bezpečný přístup k objektům, které váš skript čte/zapisuje. V mnoha případech může vynechání transakce způsobit závažnou chybu.

Vytvoření objektů PolyCurves

V této fázi by měl skript jazyka Python vygenerovat seznam bodů aplikace Dynamo, který si můžete prohlédnout v náhledu na pozadí. Posledním krokem je jednoduché vytvoření objektů PolyCurve z těchto bodů. To lze provést také přímo ve skriptu jazyka Python, ale záměrně jsme tento krok umístili mimo skript do uzlu kvůli lepší přehlednosti. Zde je výsledný graf.

Výsledek

A zde je výsledná geometrie aplikace Dynamo.

IronPython vs. CPython

Jen stručná poznámka, než skončíme toto téma. V závislosti na používané verzi aplikace Civil 3D může být uzel jazyka Python konfigurován odlišně. V aplikacích Civil 3D 2020 a 2021 používala aplikace Dynamo k přesunu dat mezi objekty .NET a skripty jazyka Python nástroj IronPython. V aplikaci Civil 3D 2022 však aplikace Dynamo používá standardní nativní interpret jazyka Python (neboli CPython), který používá jazyk Python 3. Mezi výhody přechodu na tento interpret patří přístup k oblíbeným moderním knihovnám a novým funkcím platformy, nezbytná údržba a bezpečnostní opravy.

Získejte geometrii hranic všech povodí ve výkresu.

Než začneme vytvářet graf a psát kód, je vhodné se podívat do dokumentace rozhraní API aplikace Civil 3D a získat představu o tom, co nám rozhraní API zpřístupňuje. V tomto případě existuje , která vrátí hraniční body povodí. Všimněte si, že tato vlastnost vrací objekt Point3dCollection, který aplikace Dynamo nezná. Jinými slovy, z objektu Point3dCollection nebude možné vytvořit objekt PolyCurve, takže nakonec bude nutné vše převést na body aplikace Dynamo. K tomu se vrátíme později.

Úkol splněn!

Další informace o tomto přechodu a o upgradu starších skriptů naleznete na . Pokud chcete i nadále používat nástroj IronPython, stačí nainstalovat balíček DynamoIronPython2.7 pomocí nástroje Dynamo Package Manager.

🎯
🎉
vlastnost ve třídě Catchment
blogu aplikace Dynamo
vizuální programování
Příručka pro vývojáře rozhraní .NET API pro aplikaci AutoCAD
Referenční příručka rozhraní .NET API pro aplikaci AutoCAD
Příručka pro vývojáře rozhraní .NET API pro aplikaci Civil 3D
Referenční příručka rozhraní .NET API pro aplikaci Civil 3D
15KB
Python_Catchments.dyn
961KB
Python_Catchments.dwg
Výchozí šablona jazyka Python v aplikaci Civil 3D
Získání všech povodí v dokumentu podle hladiny
Výsledný graf
Výsledné objekty PolyCurve aplikace Dynamo pro hranice povodí