Dynamo
Primer for v2.0
Polski
Polski
  • Informacje
  • Wprowadzenie
    • Co to jest dodatek Dynamo i jak działa?
    • Podręcznik użytkownika Primer, społeczność i platforma dodatku Dynamo
  • Ustawienia dla dodatku Dynamo
  • Interfejs użytkownika
    • Obszar roboczy
    • Biblioteka
  • Węzły i przewody
  • Podstawowe węzły i pojęcia
    • Indeks węzłów
    • Geometria do projektowania obliczeniowego
      • Geometria — przegląd
      • Wektor, płaszczyzna i układ współrzędnych
      • Punkty
      • Krzywe
      • Powierzchnie
      • Bryły
      • Siatki
    • Składniki programów
      • Dane
      • Matematyka
      • Logika
      • Ciągi
      • Kolor
    • Projektowanie z użyciem list
      • Co to jest lista
      • Praca z listami
      • Listy list
      • Listy n-wymiarowe
    • Słowniki w dodatku Dynamo
      • Co to jest słownik
      • Węzły słownika
      • Słowniki w blokach kodu
      • Przypadki zastosowań w programie Revit
  • Węzły i pakiety niestandardowe
    • Węzły niestandardowe
      • Węzeł niestandardowy — wprowadzenie
      • Tworzenie węzła niestandardowego
      • Publikowanie w bibliotece użytkownika
    • Pakiety
      • Pakiet — wprowadzenie
      • Analiza przypadku pakietu — zestaw Mesh Toolkit
      • Opracowywanie pakietu
      • Publikowanie pakietu
      • Zero-Touch — importowanie
  • Dynamo dla programu Revit
    • Połączenie programu Revit
    • Wybieranie
    • Edytowanie
    • Tworzenie
    • Dostosowywanie
    • Dokumentowanie
  • Dynamo for Civil 3D
    • Połączenie z programem Civil 3D
    • Pierwsze kroki
    • Biblioteka węzłów
    • Przykładowe procesy robocze
      • Drogi
        • Umieszczanie słupa oświetleniowego
      • Teren
        • Umieszczanie doprowadzeń usług komunalnych
      • Narzędzia
        • Zmienianie nazw konstrukcji
      • Kolej
        • Obwiednia prześwitu
      • Pomiary
        • Zarządzanie grupami punktów
    • Tematy zaawansowane
      • Wiązanie obiektów
      • Język Python i program Civil 3D
    • Dynamo Player
    • Przydatne pakiety
    • Zasoby
  • Dodatek Dynamo w programie Forma w wersji beta
    • Konfigurowanie programu Dynamo Player w programie Forma
    • Dodawanie i udostępnianie wykresów w programie Dynamo Player
    • Uruchamianie wykresów w programie Dynamo Player
    • Różnice między usługami obliczeniowymi dodatku Dynamo a dodatkiem Dynamo na komputerze
  • Kodowanie w dodatku Dynamo
    • Bloki kodu i język DesignScript
      • Co to jest blok kodu
      • Składnia języka DesignScript
      • Krótka składnia
      • Funkcje
    • Geometria przy użyciu języka DesignScript
      • Geometria DesignScript — podstawy
      • Geometryczne obiekty elementarne
      • Matematyka wektorowa
      • Krzywe: interpolowane i punkty kontrolne
      • Przekształcenie, obrót i inne transformacje
      • Powierzchnie: interpolowane, punkty kontrolne, wyciągnięcie złożone, obrót
      • Parametryzacja geometryczna
      • Przecięcie i ucinanie
      • Geometryczne wartości logiczne
      • Generatory punktów w języku Python
    • Python
      • Węzły języka Python
      • Python i Revit
      • Konfigurowanie własnego szablonu w języku Python
    • Zmiany języka
  • Wzorce postępowania
    • Strategie dotyczące wykresów
    • Strategie dotyczące skryptów
    • Dokumentacja obsługi skryptów
    • Zarządzanie programem
    • Wydajna praca z dużymi zestawami danych w dodatku Dynamo
  • Przykładowe procesy robocze
    • Procesy robocze — pierwsze kroki
      • Wazon parametryczny
      • Punkty przyciągania
    • Indeks pojęć
  • Przewodnik Primer programisty
    • Kompilowanie dodatku Dynamo ze źródła
      • Kompilowanie dodatku DynamoRevit ze źródła
      • Zarządzanie zależnościami i ich aktualizowanie w dodatku Dynamo
    • Opracowywanie rozwiązań dla dodatku Dynamo
      • Pierwsze kroki
      • Analiza przypadku Zero-Touch — węzeł siatki
      • Wykonywanie skryptów w języku Python w węzłach Zero-Touch (C#)
      • Dalsze kroki z Zero-Touch
      • Zaawansowane dostosowywanie węzłów dodatku Dynamo
      • Używanie typów COM (międzyoperacyjnych) w pakietach dodatku Dynamo
      • Analiza przypadku NodeModel — niestandardowy interfejs użytkownika
      • Aktualizowanie pakietów i bibliotek dodatku Dynamo dla dodatku Dynamo 2.x
      • Aktualizowanie pakietów i bibliotek dodatku Dynamo dla dodatku Dynamo 3.x
      • Rozszerzenia
      • Definiowanie niestandardowej organizacji pakietów dla dodatku Dynamo 2.0+
      • Interfejs wiersza polecenia dodatku Dynamo
      • Integracja z dodatkiem Dynamo
      • Opracowywanie rozwiązań dla dodatku Dynamo dla programu Revit
      • Publikowanie pakietu
      • Kompilowanie pakietu z programu Visual Studio
      • Rozszerzenia jako pakiety
    • Prośby o ściągnięcie (pull)
    • Oczekiwania dotyczące testowania
    • Przykłady
  • Dodatek
    • Często zadawane pytania
    • Programowanie wizualne i dodatek Dynamo
    • Zasoby
    • Uwagi do wydania
    • Przydatne pakiety
    • Pliki przykładowe
    • Mapa integracji hosta
    • Pobierz plik PDF
    • Skróty klawiaturowe dodatku Dynamo
Powered by GitBook
On this page
  • Dokumentacja interfejsu API
  • Szablon kodu
  • Przykład
  • Cel
  • Zestaw danych
  • Przegląd rozwiązania
  • Przegląd dokumentacji interfejsu API
  • Pobranie wszystkich zlewni
  • Odpakowywanie obiektów
  • Skrypt w języku Python
  • Tworzenie krzywych PolyCurve
  • Wynik
  • IronPython a CPython
Edit on GitHub
Export as PDF
  1. Dynamo for Civil 3D
  2. Tematy zaawansowane

Język Python i program Civil 3D

PreviousWiązanie obiektówNextDynamo Player

Last updated 1 month ago

Dodatek Dynamo daje niezwykłe możliwości jako narzędzie do . Można jednak pominąć węzły i przewody, aby pisać kod w postaci tekstowej. Można to zrobić na dwa sposoby:

  1. Pisanie kodu DesignScript za pomocą węzła Code Block

  2. Pisanie kodu Python za pomocą węzła Python

W tej sekcji omówiono używanie języka Python w środowisku programu Civil 3D w celu wykorzystywania interfejsów API .NET programów AutoCAD i Civil 3D.

Aby uzyskać bardziej ogólne informacje na temat używania języka Python w dodatku Dynamo, skorzystaj z sekcji Python.

Dokumentacja interfejsu API

Dla programów AutoCAD i Civil 3D jest dostępnych po kilka interfejsów API, które umożliwiają programistom rozszerzanie produktu podstawowego o funkcje niestandardowe. W kontekście dodatku Dynamo istotne są interfejsy API kodu zarządzanego .NET. Poniższe łącza prowadzą do informacji niezbędnych do zrozumienia struktury tych interfejsów API i sposobu ich działania.

Podczas zapoznawania się z tą sekcją możesz zetknąć się z pewnymi nowymi dla Ciebie pojęciami, takimi jak bazy danych, transakcje, metody, właściwości itp. Wiele z tych pojęć należy do podstaw pracy z interfejsami API .NET i nie są one charakterystyczne ani dla dodatku Dynamo, ani dla języka Python. Szczegółowe omówienie tych elementów wykracza poza zakres tej sekcji przewodnika Primer, dlatego zaleca się częste korzystanie z informacji, do których prowadzą powyższe łącza.

Szablon kodu

Podczas pierwszej edycji nowego węzła w języku Python jest on wstępnie wypełniany kodem-szablonem, aby przyspieszyć rozpoczęcie pracy. Oto podział szablonu z objaśnieniami dotyczącymi każdego bloku.

  1. Importuje moduły sys i clr, które są niezbędne do poprawnego działania interpretera języka Python. W szczególności moduł clr umożliwia traktowanie przestrzeni nazw .NET jako pakietów Python.

  2. Wczytuje standardowe zespoły (np. pliki DLL) do pracy z interfejsami API kodu zarządzanego .NET dla programów AutoCAD i Civil 3D.

  3. Dodaje odniesienia do standardowych przestrzeni nazw programów AutoCAD i Civil 3D. Są one równoważne z dyrektywami using lub Imports odpowiednio w języku C# i w języku VB.NET.

  4. Dostęp do portów wejściowych węzła można uzyskać za pomocą wstępnie zdefiniowanej listy o nazwie IN. Dostęp do danych w określonym porcie można uzyskać, używając numeru indeksu, na przykład dataInFirstPort = IN[0].

  5. Pobiera aktywny dokument i edytor.

  6. Blokuje dokument i inicjuje transakcję bazy danych.

  7. W tym miejscu należy umieścić większość kodu logiki skryptu.

  8. Usuń oznaczenie komentarza tego wiersza, aby zatwierdzić transakcję po zakończeniu głównej pracy.

  9. Aby zapisać dane wyjściowe węzła, należy przypisać je do zmiennej OUT na końcu skryptu.

Chcesz wprowadzić dostosowania? Domyślny szablon w języku Python można zmodyfikować, edytując plik PythonTemplate.py znajdujący się w folderze C:\ProgramData\Autodesk\C3D <version>\Dynamo.

Przykład

Przeanalizujmy przykład, aby zademonstrować niektóre z najważniejszych pojęć dotyczących pisania skryptów w języku Python w dodatku Dynamo for Civil 3D.

Cel

Zestaw danych

Poniżej przedstawiono przykładowe pliki, z których można korzystać w trakcie tego ćwiczenia.

Przegląd rozwiązania

Poniżej przedstawiono przegląd logiki na tym wykresie.

  1. Zapoznaj się z dokumentacją interfejsu API programu Civil 3D

  2. Wybranie wszystkich zlewni w dokumencie na podstawie nazwy warstwy

  3. „Odpakowanie” obiektów Dynamo, aby uzyskać dostęp do wewnętrznych składników interfejsu API programu Civil 3D

  4. Utworzenie punktów dodatku Dynamo na podstawie punktów programu AutoCAD

  5. Utworzenie krzywych PolyCurve z punktów

Zacznijmy!

Przegląd dokumentacji interfejsu API

Pobranie wszystkich zlewni

Teraz możemy zacząć tworzyć logikę wykresu. Pierwszą czynnością, którą należy wykonać, jest pobranie listy wszystkich zlewni w dokumencie. Dostępne są węzły do obsługi tej operacji, więc nie trzeba uwzględniać jej w skrypcie w języku Python. Używanie węzłów zapewnia lepszą przejrzystość dla innych osób czytających wykres (w przeciwieństwie do używania dużej ilości kodu w skrypcie w języku Python) i pozwala skupić się w kodzie w języku Python na jednej rzeczy: zwróceniu punktów obwiedni zlewni.

Warto zwrócić uwagę, że wyjście z węzła All Objects on Layer jest listą obiektów programu Civil (CivilObject). Jest to spowodowane tym, że dodatek Dynamo for Civil 3D nie zawiera obecnie żadnych węzłów do pracy ze zlewniami. Dlatego właśnie należy uzyskać dostęp do interfejsu API za pośrednictwem języka Python.

Odpakowywanie obiektów

Zanim przejdziemy dalej, musimy krótko odnieść się do ważnego pojęcia. W sekcji Biblioteka węzłów omówiono powiązania obiektów i obiektów programu Civil (CivilObject). Bardziej szczegółowo można powiedzieć, że obiekt Dynamo jest opakowaniem dla elementu programu AutoCAD. Podobnie obiekt programu Civil w dodatku Dynamo (CivilObject) jest opakowaniem dla elementu programu Civil 3D. Można „odpakować” obiekt, uzyskując dostęp do jego właściwości InternalDBObject lub InternalObjectId.

Typ dodatku Dynamo
Opakowania

Obiekt Autodesk.AutoCAD.DynamoNodes.Object

Element Autodesk.AutoCAD.DatabaseServices.Entity

CivilObject Autodesk.Civil.DynamoNodes.CivilObject

Element Autodesk.Civil.DatabaseServices.Entity

Ogólnie bezpieczniej jest uzyskać identyfikator obiektu za pomocą właściwości InternalObjectId, a następnie uzyskać dostęp do opakowanego obiektu w transakcji. Wynika to z tego, że właściwość InternalDBObject zwraca obiekt DBObject programu AutoCAD, który nie jest w stanie zapisywalnym.

Skrypt w języku Python

Oto pełny skrypt w języku Python, który wykonuje operacje polegające na uzyskaniu dostępu do wewnętrznych obiektów zlewni i pobraniu ich punktów obwiedni. Wyróżnione wiersze to te zmodyfikowane lub dodane w domyślnym kodzie-szablonie.

Klikaj podkreślony tekst w skrypcie, aby uzyskać wyjaśnienia dotyczące poszczególnych wierszy.

# Wczytywanie bibliotek standardowych języka Python i bibliotek języka DesignScript
import sys
import clr

# Dodawanie zespołów dla programów AutoCAD i Civil 3D
clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')



# Importowanie odniesień z programu 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 *

# Importowanie odniesień z programu Civil 3D
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *



# Dane wejściowe tego węzła będą przechowywane jako lista w zmiennych IN.
 = 

 


    


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

with adoc.LockDocument():
    with adoc.Database as db:
        
        with db.TransactionManager.StartTransaction() as t:
                          
                
                                
                
                    
                                        
                    
                    
                        
                        
                    
            
            # Zatwierdzenie przed zakończeniem transakcji
            
            pass
            
# Przypisanie danych wyjściowych do zmiennej OUT.

Ogólnie najlepszą praktyką jest umieszczenie większości kodu logiki skryptu wewnątrz transakcji. Zapewnia to bezpieczny dostęp do obiektów, które są odczytywane/zapisywane przez skrypt. W wielu przypadkach pominięcie transakcji może spowodować błąd krytyczny.

Tworzenie krzywych PolyCurve

Na tym etapie skrypt w języku Python powinien zwrócić listę punktów dodatku Dynamo, które można wyświetlić w podglądzie w tle. Ostatnią czynnością jest utworzenie krzywych PolyCurve na podstawie punktów. Warto zauważyć, że można to również zrobić bezpośrednio w skrypcie w języku Python. Jednak celowo umieściliśmy tę operację poza skryptem w węźle, aby była bardziej widoczna. Oto ostateczny wykres.

Wynik

Oto ostateczna geometria dodatku Dynamo.

IronPython a CPython

Zanim zakończymy tę część, omówmy jeszcze jedną kwestię. W zależności od używanej wersji programu Civil 3D węzeł w języku Python może być skonfigurowany w określony sposób. W programach Civil 3D 2020 i 2021 dodatek Dynamo używał narzędzia o nazwie IronPython do przenoszenia danych między obiektami .NET a skryptami w języku Python. Jednak w programie Civil 3D 2022 dodatek Dynamo używa standardowego natywnego interpretera języka Python (znanego jako CPython), w którym jest używany język Python 3. Korzyści płynące z przejścia na nowy model obejmują dostęp do popularnych nowoczesnych bibliotek i nowych funkcji platformy, niezbędne poprawki konserwacyjne i poprawki zabezpieczeń.

Pobieranie geometrii obwiedni wszystkich zlewni na rysunku.

Przed rozpoczęciem tworzenia wykresu i pisania kodu warto zapoznać się z dokumentacją interfejsu API programu Civil 3D i dowiedzieć się, co udostępnia ten interfejs API. W tym przypadku istnieje , która zwraca punkty obwiedni zlewni. Ta właściwość zwraca obiekt Point3dCollection, którego dodatek Dynamo nie jest w stanie domyślnie obsługiwać. Oznacza to, że nie można utworzyć krzywej PolyCurve z obiektu Point3dCollection, więc konieczne będzie przekształcenie wszystkiego w punkty dodatku Dynamo. Więcej informacji na ten temat podamy w dalszej części.

Misja wykonana!

Więcej informacji na temat tego przejścia i uaktualniania starszych skryptów można znaleźć w . Aby nadal używać mechanizmu IronPython, wystarczy zainstalować pakiet DynamoIronPython2.7 za pomocą Menedżera pakietów Dynamo.

🎯
🎉
właściwość w klasie zlewni (Catchment)
blogu dotyczącym dodatku Dynamo
programowania wizualnego
Podręcznik programisty interfejsu API .NET dla programu AutoCAD
Podręcznik użytkownika interfejsu API .NET dla programu AutoCAD
Podręcznik programisty interfejsu API .NET dla programu Civil 3D
Podręcznik użytkownika interfejsu API .NET dla programu Civil 3D
15KB
Python_Catchments.dyn
961KB
Python_Catchments.dwg
Domyślny szablon węzła w języku Python w programie Civil 3D
Pobieranie wszystkich zlewni w dokumencie na podstawie warstwy
Ostateczny wykres
Wynikowe krzywe PolyCurve dodatku Dynamo dla obwiedni zlewni