All pages
Powered by GitBook
1 of 21

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Dynamo for Civil 3D

Dynamo wurde ursprünglich im Hinblick auf Revit entwickelt, doch seine Vielseitigkeit als visuelles Programmierwerkzeug geht über Revit hinaus. Dynamo ist auch in Civil 3D integriert, sodass Benutzer leistungsstarke Automatisierungsroutinen für Infrastrukturprojekte erstellen können. Es ist ein äußerst nützliches Werkzeug für die Verarbeitung von gängigen Aufgaben bis hin zu komplexen Arbeitsabläufen und hilft Ihnen letztendlich, Zeit zu sparen, Ihre Entwürfe zu optimieren und bessere Konstruktionsentscheidungen zu treffen. In Dynamo stehen eine ganze Suite mit eigens für Civil 3D entwickelten Blöcken sowie Bibliotheken anderer Anbieter aus der sehr aktiven Community zur Verfügung.

In diesem Kapitel der Einführung beschäftigen wir uns mit Dynamo for Civil 3D, beginnend mit den Grundlagen. Später folgen dann Themen für fortgeschrittenere Benutzer.

Die Civil 3D-Verbindung

Dynamo for Civil 3D stellt Ingenieuren und Konstrukteuren, die an Tiefbau- und Infrastrukturprojekten arbeiten, ein visuelles Programmierkonzept zur Verfügung. Sie können sich Dynamo als eine Art digitales Multitool für Civil 3D-Benutzer vorstellen – was auch immer die Aufgabe sein mag, es bietet genau das richtige Werkzeug für die jeweilige Aufgabe. Die intuitive Benutzeroberfläche ermöglicht Ihnen die Erstellung leistungsstarker und anpassbarer Routinen, ohne dass Sie eine einzige Codezeile schreiben müssen. Sie müssen kein Programmierer sein, um Dynamo verwenden zu können, aber Sie müssen in der Lage sein, mit der Logik eines Programmierers zu denken. In Verbindung mit den anderen Kapiteln in dieser Einführung hilft Ihnen dieses Kapitel beim Vertiefen von Logikfähigkeiten. So können Sie ein Verständnis dafür entwickeln, wie Computer Fragestellungen lösen und Ihre Aufgaben (mit mehr oder weniger) Programmieraufwand entsprechend angehen.

Verlauf

Dynamo wurde erstmals in Civil 3D 2020 eingeführt und hat sich seitdem kontinuierlich weiterentwickelt. Die ursprünglich separat über ein Software-Update installierte Anwendung ist jetzt in allen Versionen von Civil 3D enthalten. Je nachdem, welche Version von Civil 3D Sie verwenden, werden Sie feststellen, dass die Benutzeroberfläche von Dynamo etwas anders aussieht als die in diesem Kapitel gezeigten Beispiele. Dies liegt daran, dass die Benutzeroberfläche in Civil 3D 2023 erheblich überarbeitet wurde.

Dynamo-Benutzeroberfläche, Civil 3D 2020–2022
Dynamo-Benutzeroberfläche, Civil 3D 2023–heute

Wir empfehlen Ihnen, den Dynamo-Blog zu lesen, um aktuelle Informationen zur Entwicklung von Dynamo zu erhalten. Die folgende Tabelle fasst die wichtigsten Meilensteine von Dynamo for Civil 3D zusammen.

Civil 3D-Version
Dynamo-Version
Anmerkungen

2024.1

2.18

2024

2.17

Aktualisierung der Dynamo Player-Benutzeroberfläche

2023.2

2.15

2023

2.13

Aktualisierung der Dynamo-Benutzeroberfläche

2022.1

2.12

  • Datenspeichereinstellungen für Objektbindung hinzugefügt

  • Neue Blöcke zum Steuern der Objektbindung

2022

2.10

  • Zur Civil 3D-Hauptinstallation hinzugefügt

  • Wechsel von IronPython zu Python.NET

2021

2.5

2020.2

2.4

2020 Update 2

2.4

Neue Blöcke hinzugefügt

2020.1

2.2

2020

2.1

Ursprüngliche Version

Schiene

Versorgung

Straßen

Vermessung

Fortgeschrittene Themen

Im Laufe der Zeit werden Sie möglicherweise Wissen über die Grundlagen von Dynamo hinaus benötigen und sich mit den fortgeschrittenen Funktionsweise von Dynamo vertraut machen müssen. Auf den Seiten in diesem Abschnitt erfahren Sie, wie Sie erweiterte Funktionen in Dynamo for Civil 3D nutzen und so Ihre Diagramme weiter optimieren können.

Land

Beispielarbeitsabläufe

Straßen, Schienen, Land, Versorgungseinrichtungen, Vermessung, GIS...

All das und noch viel mehr umfasst der Tief- und Infrastrukturbau! Dieser Abschnitt enthält mehrere praktische und relevante Beispieldiagramme, die Ihnen helfen, Dynamo noch besser zu nutzen und das volle Potenzial von Dynamo for Civil 3D auszuschöpfen. Jedes Diagramm wird mit detaillierten Beschreibungen der Logik ausgeliefert, die zur Erstellung des Diagramms verwendet wurde, sodass Sie es nicht nur verwenden, sondern auch verstehen können.

Darüber hinaus sind in diesen Beispielen bewährte Best Practices für die Erstellung aussagekräftiger Diagramme enthalten. Während Sie die Beispiele durcharbeiten, sollten Sie sich auch mit dem Abschnitt Optimale Verfahren vertraut machen, der weitere Ideen zum Erstellen leistungsstarker, flexibler und langlebiger Diagramme enthält.

Dynamo Player

Ausführen eines Diagramms mit Dynamo Player und Anzeigen der Ergebnisse in Civil 3D

Dynamo Player bietet eine vereinfachte Methode zum Ausführen von Dynamo-Diagrammen in Civil 3D. Nachdem ein Diagramm erstellt wurde, sind keine Dynamo-Kenntnisse erforderlich, um das Diagramm im Player auszuführen. Dies erleichtert die gemeinsame Nutzung von Diagrammen mit anderen Benutzern, die nicht an Details von Blöcken und Drähten interessiert sind.

Weitere Informationen zu Dynamo Player in Civil 3D finden Sie in der Dokumentation in der Civil 3D-Hilfe.

Ressourcen

Diese Einführung ist nur der Anfang Ihrer Reise mit Dynamo for Civil 3D. In der Community der Dynamo-Benutzer ist eine Fülle an Informationen verfügbar. Sehen Sie sich begleitend zu Ihrer Arbeit diese Ressourcen an.

Civil 3D-Hilfe

Dynamo Forum

Autodesk University

Bücher

Nützliche Pakete

Dynamo-Pakete sind Toolsets, die von Drittanbietern entwickelt wurden, um die Kernfunktionen von Dynamo zu erweitern. Sie stehen allen Anwendern zur Verfügung und können mit einem Klick auf die Schaltfläche heruntergeladen werden.

Weitere Informationen zum Einstieg in die Arbeit mit Paketen finden Sie im Abschnitt Pakete.

Hier finden Sie eine Liste der beliebtesten Pakete, mit denen Sie Ihre Dynamo for Civil 3D-Diagramme optimieren können.

Civil 3D-Toolkit

Das Civil 3D-Toolkit ist ein Dynamo for Civil 3D-Paket, das durch eine große Anzahl zusätzlicher Blöcke wichtige Erweiterungen der Funktionen von Dynamo bietet.

Feedback

Feedback-Thread zum Civil 3D-Toolkit

Verwandte Autodesk University-Kurse

Optimieren von Dynamo-Diagrammen mit dem Civil 3D-Toolkit (Englisch)| Autodesk University

Camber

Camber ist ein Open-Source-Paket für Dynamo for Civil 3D, das Hunderte von Blöcken für die Arbeit mit Beschriftungen, XRefs, Datenverknüpfungen, Stilen und vielem mehr enthält.

Feedback

Feedback-Thread zu Camber

Quellcode

CivilConnection

CivilConnection ist ein Open-Source-Paket für Dynamo für Revit, das den Austausch von Informationen zwischen Civil 3D, Dynamo und Revit ermöglicht.

Verwandte Autodesk University-Kurse

Lineare Struktur für die computergestützte Modellierung mit Civil 3D, Revit und Dynamo CivilConnection (Englisch)| Autodesk University

Brückenkonstruktion im Detail 2.0: Methoden für die computergestützte Modellierung mit Civil 3D, Revit und Dynamo (Englisch)| Autodesk University

Parametrische Modellierung und automatisierte Platzierung von universellen TBM-Ringen (Englisch)| Autodesk University

Quellcode

Arkance Systems Nodes

Arkance Systems Nodes ist ein Dynamo for Civil 3D-Paket mit einer Vielzahl nützlicher Blöcke für die Arbeit mit Bemaßungen, Tabellen, Ansichten, Bohrungssteuerung und vielem mehr.

Feedback

Feedback-Thread zur Arkance Systems-Blockbibliothek

Dokumentation

Erste Schritte

Nachdem Sie sich einen Gesamtüberblick verschafft haben, können Sie jetzt direkt mit der Erstellung Ihres ersten Dynamo-Diagramms in Civil 3D beginnen.

Dies ist ein einfaches Beispiel zur Veranschaulichung der grundlegenden Dynamo-Funktionen. Es wird empfohlen, die Schritte in einem neuen, leeren Civil 3D-Dokument zu durchlaufen.

Öffnen von Dynamo

Als Erstes müssen Sie ein leeres Dokument in Civil 3D öffnen. Navigieren Sie in der Civil 3D-Multifunktionsleiste zur Registerkarte Verwalten, und suchen Sie die Gruppe Visuelle Programmierung.

Klicken Sie auf die Schaltfläche Dynamo. Dadurch wird Dynamo in einem separaten Fenster gestartet.

Was ist der Unterschied zwischen Dynamo und Dynamo Player?

Dynamo wird zum Erstellen und Ausführen von Diagrammen verwendet. Dynamo Player bietet eine einfache Möglichkeit zum Ausführen von Diagrammen, ohne sie in Dynamo öffnen zu müssen.

Gehen Sie zum Abschnitt Dynamo Player, wenn Sie ihn ausprobieren möchten.

Starten eines neuen Diagramms

Wenn Dynamo geöffnet ist, wird der Startbildschirm angezeigt. Klicken Sie auf Neu, um einen leeren Arbeitsbereich zu öffnen.

Dynamo-Startbildschirm

Wie sieht es mit Beispielen aus?

Dynamo for Civil 3D enthält einige vordefinierte Diagramme, die Ihnen Ideen zur Verwendung von Dynamo liefern können. Wir empfehlen, dass Sie sich diese sowie die hier in der Einführung erwähnten Beispielarbeitsabläufe ansehen.

Hinzufügen von Blöcken

Sie sollten jetzt einen leeren Arbeitsbereich sehen. Erleben Sie Dynamo in Aktion! Hier ist unser Ziel:

🎯 Erstellen Sie ein Dynamo-Diagramm, das Text in den Modellbereich einfügt.

Ganz einfach, nicht wahr? Aber bevor wir beginnen, müssen wir einige Grundlagen klären.

Die wichtigsten Bausteine eines Dynamo-Diagramms werden Blöcke genannt. Ein Block ist wie ein kleiner Computer: Sie geben Daten ein, der Computer bearbeitet die Daten und gibt ein Ergebnis aus. Dynamo for Civil 3D verfügt über eine Bibliothek von Blöcken, die Sie mit Drähten verbinden können, um ein Diagramm zu erstellen, das größere und bessere Aufgaben bewältigen kann als ein einzelner Block.

Was ist, wenn ich noch nie mit Dynamo gearbeitet habe?

Einiges davon ist möglicherweise ziemlich neu für Sie. Aber keine Sorge. Diese Abschnitte helfen Ihnen.

Benutzeroberfläche Blöcke und Drähte Wichtige Blöcke und Konzepte

Erstellen wir nun unser Diagramm. Hier sehen Sie eine Liste aller benötigten Blöcke.

Sie können diese Blöcke finden, indem Sie ihre Namen in die Suchleiste in der Bibliothek eingeben, oder indem Sie mit der rechten Maustaste auf eine beliebige Stelle im Ansichtsbereich klicken und dort suchen.

Blöcke können aus der Bibliothek oder durch Klicken mit der rechten Maustaste in den Ansichtsbereich platziert werden.

Wie kann ich feststellen, welche Blöcke ich verwenden sollte und wo ich sie finde?

Blöcke in der Bibliothek werden in logische Kategorien eingeteilt, abhängig davon, welche Funktion sie haben. Eine ausführlichere Beschreibung finden Sie im Abschnitt Blockbibliothek.

Hier sehen Sie, wie das endgültige Diagramm aussehen sollte.

Das fertige Diagramm

Fassen wir zusammen, was wir hier erreicht haben:

  1. Wir haben das Dokument ausgewählt, in dem wir arbeiten möchten. In diesem (und in vielen anderen Fällen) möchten wir in Civil 3D im aktiven Dokument arbeiten.

  2. Wir haben den Zielblock definiert, in dem das Textobjekt erstellt werden soll (in diesem Fall der Modellbereich).

  3. Wir haben mithilfe eines String-Blocks angegeben, auf welchem Layer der Text platziert werden soll.

  4. Wir haben einen Punkt mithilfe des Point.ByCoordinates-Blocks erstellt, um die Position zu definieren, an der der Text platziert werden soll.

  5. Wir haben die X- und Y-Koordinaten des Texteinfügepunkts mithilfe von zwei Number Slider-Blöcken definiert.

  6. Wir haben den Inhalt des Text-Objekts mithilfe eines anderen String-Blocks definiert.

  7. Schließlich haben wir das Text-Objekt erstellt.

Sehen wir uns nun die Ergebnisse unseres brandneuen Diagramms an.

Anzeigen von Ergebnissen

Vergewissern Sie sich in Civil 3D, dass die Registerkarte Modell ausgewählt ist. Das neue von Dynamo erstellte Text-Objekt sollte angezeigt werden.

Wenn Sie den Text nicht sehen können, müssen Sie möglicherweise den Befehl ZOOM -> GRENZEN ausführen, um zur richtigen Stelle zu zoomen.

Ausgezeichnet. Jetzt nehmen wir einige Änderungen am Text vor.

Ändern Sie im Dynamo-Diagramm einige der Eingabewerte, z. B. die Textzeichenfolge, die Koordinaten des Einfügepunkts usw. Der Text sollte automatisch in Civil 3D aktualisiert werden. Beachten Sie auch, dass beim Trennen eines der Eingabeanschlüsse der Text entfernt wird. Wenn Sie den Anschluss wieder verbinden, wird der Text erneut erstellt.

Das fertige Diagramm in Aktion

Warum fügt Dynamo nicht bei jeder Ausführung des Diagramms ein neues Textobjekt ein?

Vorgabemäßig "merkt sich" Dynamo die erstellten Objekte. Wenn Sie die Blockeingabewerte ändern, werden die Objekte in Civil 3D aktualisiert, anstatt neue Objekte zu erstellen. Weitere Informationen zu diesem Verhalten finden Sie im Abschnitt Objektbindung.

🎉 Mission erfüllt!

Nächste Schritte

In diesem Beispiel wird nur oberflächlich erläutert, was Sie mit Dynamo for Civil 3D tun können. Lesen Sie weiter, um mehr zu erfahren!

Blockbibliothek

Wie bereits erwähnt, sind Blöcke die wichtigsten Bausteine eines Dynamo-Diagramms. Sie werden in logische Gruppen in der Bibliothek organisiert. In Dynamo for Civil 3D gibt es zwei Kategorien (oder Bereiche) in der Bibliothek, die dedizierte Blöcke zum Arbeiten mit AutoCAD- und Civil 3D-Objekten enthalten, wie z. B. Achsen, Längsschnitte, 3D-Profilkörper, Blockreferenzen usw. Die restlichen Blöcke in der Bibliothek sind allgemeinere Blöcke, die in allen Dynamo-Versionen (z. B. Dynamo für Revit, Dynamo Sandbox usw.) gleich sind.

Weitere Informationen über die Struktur der Blöcke in der Dynamo-Hauptbibliothek finden Sie im Abschnitt Bibliothek.

Die Blockbibliothek in Dynamo for Civil 3D
  1. Spezifische Blöcke für die Arbeit mit AutoCAD- und Civil 3D-Objekten

  2. Allgemeine Blöcke

  3. Blöcke aus Paketen von Drittanbietern, die Sie separat installieren können

Durch die Verwendung der Blöcke in den Bereichen AutoCAD und Civil 3D funktioniert Ihr Dynamo-Diagramm nur in Dynamo for Civil 3D. Wenn ein Diagramm aus Dynamo for Civil 3D an einer anderen Stelle geöffnet wird (z. B. in Dynamo für Revit), werden diese Blöcke mit einer Warnung markiert und nicht ausgeführt.

Warum gibt es zwei separate Bereiche für AutoCAD und Civil 3D?

In dieser Struktur werden die Blöcke für programmeigene AutoCAD-Objekte (Linien, Polylinien, Blockreferenzen usw.) von den Blöcken für Civil 3D-Objekte (Achsen, 3D-Profilkörper, DGMs usw.) unterschieden. Aus technischer Sicht sind AutoCAD und Civil 3D zwei separate Dinge: AutoCAD ist die Basisanwendung, und Civil 3D basiert darauf.

Blockhierarchie

Um mit den AutoCAD- und Civil 3D-Blöcken arbeiten zu können, ist es wichtig, dass Sie die Objekthierarchie in jedem Bereich verstehen. Dies lässt sich mit der Taxonomie in der Biologie vergleichen: Reich, Stamm, Klasse, Ordnung, Familie, Gattung, Art. AutoCAD- und Civil 3D-Objekte werden auf ähnliche Weise kategorisiert. Sehen wir uns einige Beispiele zur Erläuterung an.

Civil-Objekte

Als Beispiel verwenden wir eine Achse.

Angenommen, Sie möchten den Namen der Achse ändern. Der nächste Block, den Sie von hier aus hinzufügen, ist ein CivilObject.SetName-Block.

Zunächst scheint dies nicht sehr intuitiv. Was ist ein CivilObject, und warum enthält die Bibliothek keinen Alignment.SetName-Block? Die Antwort hängt mit der Wiederverwendbarkeit und Einfachheit zusammen. Denn: Der Prozess zum Ändern des Namens eines Civil 3D-Objekts ist gleich, unabhängig davon, ob es sich um eine Achse, einen 3D-Profilkörper, einen Längsschnitt oder etwas Anderes handelt. Anstatt sich wiederholende Blöcke zu verwenden, die im Wesentlichen alle denselben Zweck erfüllen (z. B. Alignment.SetName, Corridor.SetName, Profile.SetName usw.), ist es sinnvoll, diese Funktionen in einen einzigen Block zu vereinen. Genau das macht CivilObject.SetName!

Eine andere Betrachtungsweise dafür sind Beziehungen. Eine Achse und ein 3D-Profilkörper sind beide Arten von Civil-Objekten, genauso wie ein Apfel und eine Birne beide Obstsorten sind. Civil-Objekt-Blöcke können auf alle Typen von Civil-Objekten angewendet werden, so als ob Sie einen einzigen Schäler zum Schälen eines Apfels und einer Birne verwenden möchten. Ihre Küche wäre ziemlich vollgestopft, wenn Sie für jede Obstsorte einen eigenen Schäler verwenden würden! In diesem Sinne entspricht die Dynamo-Blockbibliothek Ihrer Küche.

Objekte

Gehen wir nun einen Schritt weiter. Angenommen, Sie möchten den Layer der Achse ändern. Der Block, den Sie verwenden würden, ist der Object.SetLayer-Block.

Warum gibt es keinen Block mit dem Namen CivilObject.SetLayer? Hier gelten die gleichen Prinzipien der Wiederverwendbarkeit und Einfachheit, die wir bereits besprochen haben. Die Eigenschaft Layer ist für alle Objekte in AutoCAD identisch, die gezeichnet oder eingefügt werden können, wie Linien, Polylinien, Text, Blockreferenzen usw. Civil 3D-Objekte wie Achsen und 3D-Profilkörper fallen in dieselbe Kategorie. Jeder Block, der einem Objekt entspricht, kann daher auch mit einem beliebigen Civil-Objekt verwendet werden.

Punktgruppenverwaltung

Die Arbeit mit Koordinatenpunkten und Punktgruppen in Civil 3D ist ein Kernelement vieler Prozesse von der Feldvermessung bis zum grafischen Endergebnis. Dynamo eignet sich perfekt für die Datenverwaltung, und wir werden in diesem Beispiel einen potenziellen Anwendungsfall zeigen.

Ziel

🎯 Erstellen Sie eine Punktgruppe für jede eindeutige Koordinatenpunktbeschreibung.

Wichtige Konzepte

  • Arbeiten mit Listen

  • Gruppieren ähnlicher Objekte mit dem Block List.GroupByKey

  • Anzeigen von benutzerdefinierten Ausgaben in Dynamo Player

Kompatibilität der Versionen

Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.

Datensatz

Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.

Lösung

Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.

  1. Alle Koordinatenpunkte im Dokument abrufen

  2. Koordinatenpunkte nach Beschreibung gruppieren

  3. Punktgruppen erstellen

  4. Zusammenfassung in Dynamo Player ausgeben

Los gehts!

Abrufen von Koordinatenpunkten

Der erste Schritt besteht darin, alle Punktgruppen im Dokument und dann alle Koordinatenpunkte in jeder Gruppe abzurufen. Dadurch erhalten wir eine verschachtelte Liste bzw. "Liste von Listen", die später einfacher zu bearbeiten ist, wenn wir alles mithilfe des List.Flatten-Blocks auf eine einzige Liste reduzieren.

Wenn Listen neu für Sie sind, finden Sie im Abschnitt weitere Informationen.

Gruppieren von Punkten nach Beschreibung

Nachdem wir nun alle Koordinatenpunkte haben, müssen wir sie anhand ihrer Beschreibungen in Gruppen unterteilen. Dies entspricht genau der Funktion des Blocks List.GroupByKey. Im Prinzip werden alle Elemente, die denselben Schlüssel verwenden, in Gruppen zusammengefasst.

Erstellen von Punktgruppen

Die harte Arbeit ist getan! Der letzte Schritt besteht darin, neue Civil 3D-Punktgruppen aus den gruppierten Koordinatenpunkten zu erstellen.

Ausgabezusammenfassung

Wenn Sie das Diagramm ausführen, ist in der Dynamo-Hintergrundvorschau nichts zu sehen, da wir nicht mit Geometrie arbeiten. Die einzige Möglichkeit, um zu sehen, ob das Diagramm korrekt ausgeführt wurde, besteht darin, den Projektbrowser zu überprüfen oder die Blockausgabe-Vorschau anzuzeigen. Wenn Sie das Diagramm jedoch mit Dynamo Player ausführen, wird mehr Feedback zu den Ergebnissen des Diagramms bereitgestellt, indem eine Zusammenfassung der erstellten Punktgruppen ausgegeben wird. Sie müssen nur mit der rechten Maustaste auf einen Block klicken und Ist Ausgabe auswählen. In diesem Fall verwenden wir einen umbenannten Watch-Block, um die Ergebnisse anzuzeigen.

Ergebnis

Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.

Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt weitere Informationen.

🎉 Mission erfüllt!

Ideen

Im Folgenden finden Sie einige Anregungen, wie Sie die Funktionen dieses Diagramms erweitern können.

Ändern Sie die Punktgruppierung, sodass die ausführliche Beschreibung anstelle der Kurzbeschreibung verwendet wird.

Gruppieren Sie die Punkte nach anderen vordefinierten Kategorien, die Sie auswählen (z. B. Geländeaufnahmen, Monumente usw.)

Erstellen Sie automatisch triangulierte DGMs für Punkte in bestimmten Gruppen.

Objektbindung

Dynamo for Civil 3D verfügt über einen leistungsstarken Mechanismus, mit dem sich das Programm die von jedem Block erstellten Objekte "merken" kann. Dieser Mechanismus wird als Objektbindung bezeichnet und ermöglicht es einem Dynamo-Diagramm, bei jeder Ausführung im selben Dokument konsistente Ergebnisse zu erzielen. Dies ist in vielen Fällen sehr wünschenswert, aber es gibt auch andere Situationen, in denen Sie mehr Kontrolle über das Verhalten von Dynamo haben möchten. In diesem Abschnitt erfahren Sie, wie die Objektbindung funktioniert und wie Sie sie nutzen können.

Beispiel

Betrachten Sie dieses Diagramm, das einen Kreis im Modellbereich auf dem aktuellen Layer erstellt.

Achten Sie darauf, was passiert, wenn der Radius geändert wird.

Dies ist Objektbindung in Aktion. Dynamo ändert vorgabemäßig den Radius des Kreises, anstatt bei jeder Änderung der Radiuseingabe einen neuen Kreis zu erstellen. Dies liegt daran, dass sich der Block Object.ByGeometry "merkt", dass er diesen spezifischen Kreis bei jeder Ausführung des Diagramms erstellt hat. Außerdem speichert Dynamo diese Informationen, sodass sie beim nächsten Öffnen des Civil 3D-Dokuments und Ausführen des Diagramms genau das gleiche Verhalten aufweisen.

Ein weiteres Beispiel

Sehen wir uns ein Beispiel an, in dem Sie das vorgabemäßige Objektbindungsverhalten von Dynamo möglicherweise ändern möchten. Angenommen, Sie möchten ein Diagramm erstellen, das Text in der Mitte eines Kreises platziert. Sie möchten mit diesem Diagramm jedoch erreichen, dass es immer wieder ausgeführt und jedes Mal neuer Text in den ausgewählten Kreis eingefügt werden kann. So könnte dieses Diagramm aussehen.

Dies geschieht jedoch tatsächlich, wenn ein anderer Kreis ausgewählt wird.

Offenbar wird der Text gelöscht und mit jedem Durchlauf des Diagramms neu erstellt. In Wirklichkeit wird die Position des Texts geändert, abhängig davon, welcher Kreis ausgewählt ist. Es ist also derselbe Text, nur an einer anderen Stelle! Um jedes Mal neuen Text zu erstellen, müssen Sie die Einstellungen für die Objektbindung in Dynamo ändern, sodass keine Bindungsdaten beibehalten werden (siehe unten).

Nachdem wir diese Änderung vorgenommen haben, erhalten wir das gewünschte Verhalten.

Bindungseinstellungen

Dynamo for Civil 3D ermöglicht die Änderung des vorgegebenen Verhaltens für Objektbindungen über die Einstellungen für Bindungsdatenspeicherung im Menü Dynamo.

Beachten Sie, dass die Optionen für die Bindungsdatenspeicherung in Civil 3D 2022.1 und höher verfügbar sind.

Alle Optionen sind vorgabemäßig aktiviert. Hier finden Sie eine Zusammenfassung der Funktionen der einzelnen Optionen.

Option 1: Keine Bindungsdaten beibehalten

Wenn diese Option aktiviert ist, werden die Objekte, die beim letzten Ausführen des Diagramms erstellt wurden, von Dynamo "vergessen". Das Diagramm kann also in jeder beliebigen Zeichnung ausgeführt werden und erstellt jedes Mal neue Objekte.

Verwendung

Verwenden Sie diese Option, wenn Dynamo alle Aktionen aus früheren Durchläufen "vergessen" und jedes Mal neue Objekte erstellen soll.

Option 2: In Diagramm für Dynamo speichern

Diese Option bedeutet, dass Metadaten der Objektbindung in das Diagramm (DYN-Datei) serialisiert werden, wenn es gespeichert wird. Wenn Sie das Diagramm schließen/erneut öffnen und es in derselben Zeichnung ausführen, sollte alles wie beim letzten Mal funktionieren. Wenn Sie das Diagramm in einer anderen Zeichnung ausführen, werden die Bindungsdaten aus dem Diagramm entfernt und neue Objekte erstellt. Dies bedeutet, dass beim Öffnen der ursprünglichen Zeichnung und erneuten Ausführen des Diagramms neue Objekte zusätzlich zu den alten erstellt werden.

Verwendung

Verwenden Sie diese Option, wenn sich Dynamo die Objekte "merken" soll, die beim letzten Ausführen in einer bestimmten Zeichnung erstellt wurden.

Diese Option eignet sich am besten für Situationen, in denen eine 1:1-Beziehung zwischen einer bestimmten Zeichnung und einem Dynamo-Diagramm beibehalten werden kann. Optionen 1 und 3 eignen sich besser für Diagramme, die für die Ausführung in mehreren Zeichnungen ausgelegt sind.

Option 3: In Zeichnung für Dynamo speichern

Dies ähnelt Option 2, mit der Ausnahme, dass die Objektbindungsdaten in der Zeichnung und nicht im Diagramm (DYN-Datei) serialisiert werden. Wenn Sie das Diagramm schließen/erneut öffnen und es in derselben Zeichnung ausführen, sollte alles wie beim letzten Mal funktionieren. Wenn Sie das Diagramm in einer anderen Zeichnung ausführen, bleiben die Bindungsdaten in der ursprünglichen Zeichnung erhalten, da sie in der Zeichnung und nicht im Diagramm gespeichert werden.

Verwendung

Verwenden Sie diese Option, wenn Sie dasselbe Diagramm in mehreren Zeichnungen verwenden möchten und Dynamo sich dabei "merken" soll, wie es in jeder Zeichnung dargestellt wurde.

Option 4: In Zeichnung für Dynamo Player speichern

Bei dieser Option ist zunächst zu beachten, dass sie keine Auswirkung darauf hat, wie das Diagramm mit der Zeichnung interagiert, wenn das Diagramm über die Dynamo-Hauptbenutzeroberfläche ausgeführt wird. Diese Option ist nur dann relevant, wenn das Diagramm mit Dynamo Player ausgeführt wird.

Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt weitere Informationen.

Wenn Sie das Diagramm über die Dynamo-Hauptbenutzeroberfläche ausführen, es schließen und anschließend mit Dynamo Player ausführen, werden zusätzlich zu den zuvor erstellten Objekten neue Objekte erstellt. Sobald das Diagramm jedoch einmal von Dynamo Player ausgeführt wurde, werden die Objektbindungsdaten in der Zeichnung serialisiert. Wenn Sie das Diagramm also mehrmals mit Dynamo Player ausführen, werden Objekte aktualisiert, statt neue zu erstellen. Wenn Sie das Diagramm mit Dynamo Player in einer anderen Zeichnung ausführen, bleiben die Bindungsdaten in der ursprünglichen Zeichnung erhalten, da sie in der Zeichnung und nicht im Diagramm gespeichert werden.

Verwendung

Verwenden Sie diese Option, wenn Sie ein Diagramm mit Dynamo Player über mehrere Zeichnungen hinweg ausführen und Dynamo Player sich dabei "merken" soll, wie es in jeder Zeichnung dargestellt wurde.

33KB
Survey_CreatePointGroups.dyn
Open
1MB
Survey_CreatePointGroups.dwg
Open
Arbeiten mit Listen
Dynamo Player
Alle Punktgruppen und Koordinatenpunkte abrufen
Gruppieren der Koordinatenpunkte nach Beschreibung
Neue Punktgruppen erstellen
Wenn Sie einen Block auf Ist Ausgabe setzen, werden die Inhalte in der Dynamo Player-Ausgabe angezeigt.
Ausführen des Diagramms mit Dynamo Player und Anzeigen der Ergebnisse im Projektbrowser
Dynamo Player
Ein einfaches Diagramm für die Erstellung eines Kreises
Ändern der Radiuseingabe in Dynamo
Ein einfaches Diagramm, das Text in der Mitte eines ausgewählten Kreises platziert
Vorgabemäßiges Verhalten von Dynamo bei Auswahl eines neuen Kreises
Einstellungen für Objektbindung
Verhalten bei deaktivierter Objektbindung
Objektbindung

Lichtraumprofil

Die Entwicklung kinematischer Profile für die Lichtraumvalidierung ist ein wichtiger Bestandteil der Schienenkonstruktion. Dynamo kann verwendet werden, um Volumenkörper für die Profile zu erstellen, anstatt komplexe 3D-Profilkörper-Querschnittsbestandteile erstellen und verwalten zu müssen.

Ziel

🎯 Verwenden Sie einen Block für einen Fahrzeug-Längsschnitt, um 3D-Volumenkörper mit Lichtraumprofil entlang eines 3D-Profilkörpers zu erstellen.

Wichtige Konzepte

  • Arbeiten mit 3D-Profilkörper-Elementkanten

  • Transformieren von Geometrie zwischen Koordinatensystemen

  • Erstellen von Volumenkörpern durch Anhebung

  • Steuern des Blockverhaltens mit Vergitterungseinstellungen

Kompatibilität der Versionen

Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.

Datensatz

Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.

185KB
Rail_ClearanceEnvelope.dyn
Open
22MB
Rail_ClearanceEnvelope.dwg
Open

Lösung

Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.

  1. Elementkanten aus der angegebenen 3D-Profilkörper-Basislinie abrufen

  2. Koordinatensysteme entlang der 3D-Profilkörper-Elementkante mit dem gewünschten Abstand erstellen

  3. Blockgeometrie des Längsschnitts in die Koordinatensysteme umwandeln

  4. Volumenkörper zwischen den Längsschnitten anheben

  5. Volumenkörper in Civil 3D erstellen

Los gehts!

Abrufen von 3D-Profilkörperdaten

Unser erster Schritt ist das Abrufen von 3D-Profilkörperdaten. Wir wählen das 3D-Profilkörpermodell nach Name aus, rufen eine bestimmte Basislinie innerhalb des 3D-Profilkörpers ab und erhalten dann eine Elementkante innerhalb der Basislinie anhand ihres Punktcodes.

Auswählen von 3D-Profilkörpern, Basislinien und Elementkanten

Erstellen von Koordinatensystemen

Als Nächstes generieren wir Koordinatensysteme entlang der Elementkanten eines 3D-Profilkörpers zwischen einer bestimmten Anfangs- und Endstation. Diese Koordinatensysteme werden verwendet, um die Blockgeometrie des Fahrzeug-Längsschnitts am 3D-Profilkörper auszurichten.

Wenn Koordinatensysteme neu für Sie sind, finden Sie im Abschnitt Vektor, Ebene und Koordinatensystem weitere Informationen.

Abrufen von Koordinatensystemen entlang der 3D-Profilkörper-Elementkanten
  1. Beachten Sie das kleine XXX in der unteren rechten Ecke des Blocks. Dies bedeutet, dass die Vergitterungseinstellungen des Blocks auf Kreuzprodukt festgelegt sind. Dies ist erforderlich, um die Koordinatensysteme an den gleichen Stationswerten für beide Elementkanten zu generieren.

Wenn die Blockvergitterung neu für Sie ist, finden Sie im Abschnitt Was ist eine Liste? weitere Informationen.

Transformieren von Blockgeometrie

Jetzt müssen wir eine Anordnung der Fahrzeug-Längsschnitte entlang der Elementkanten erstellen. Dafür transformieren wir die Geometrie mithilfe des Geometry.Transform-Blocks aus der Blockdefinition des Fahrzeug-Längsschnitts. Das Visualisieren dieses Konzepts ist schwierig. Bevor wir uns die Blöcke ansehen, sehen wir uns eine Grafik an, die zeigt, was passieren wird.

Eine Visualisierung der Geometrietransformation zwischen Koordinatensystemen

Im Prinzip wird also die Dynamo-Geometrie aus einer einzelnen Blockdefinition während der Erstellung einer Anordnung entlang der Elementkante verschoben/gedreht. Ziemlich cool! Hier sehen Sie die Blocksequenz.

  1. Hiermit wird die Blockdefinition aus dem Dokument abgerufen.

  2. Diese Blöcke übernehmen die Dynamo-Geometrie der Objekte innerhalb des Blocks.

  3. Diese Blöcke definieren im Wesentlichen das Koordinatensystem, aus dem die Geometrie transformiert wird.

  4. Und schließlich führt dieser Block die eigentliche Transformation der Geometrie durch.

  5. Beachten Sie die längste Vergitterung in diesem Block.

Und so sieht dies in Dynamo aus.

Die Blockgeometrie des Fahrzeug-Längsschnitts nach der Transformation

Erstellen von Volumenkörpern

Gute Neuigkeiten! Die harte Arbeit ist getan. Jetzt müssen wir nur noch Volumenkörper zwischen den Längsschnitten generieren. Dies lässt sich einfach mithilfe des Solid.ByLoft-Blocks bewerkstelligen.

Hier sehen Sie das Ergebnis. Beachten Sie, dass es sich um Dynamo-Volumenkörper handelt, die in Civil 3D noch erstellt werden müssen.

Die Dynamo-Volumenkörper nach dem Anheben

Ausgeben von Volumenkörpern in Civil 3D

Der letzte Schritt besteht darin, die generierten Volumenkörper im Modellbereich auszugeben. Wir ordnen ihnen auch eine Farbe zu, damit sie sehr leicht zu erkennen sind.

Ausgeben der Volumenkörper in Civil 3D

Ergebnis

Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.

Ausführen des Diagramms mit Dynamo Player und Anzeigen der Ergebnisse in Civil 3D

Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt Dynamo Player weitere Informationen.

🎉 Mission erfüllt!

Ideen

Im Folgenden finden Sie einige Anregungen, wie Sie die Funktionen dieses Diagramms erweitern können.

Fügen Sie eine Funktion hinzu, mit der Sie verschiedene Stationsbereiche separat für jede Spur verwenden können.

Teilen Sie die Volumenkörper in kleinere Segmente, die einzeln auf Kollisionen analysiert werden können.

Überprüfen Sie, ob sich die Profilvolumenkörper mit Objekten überschneiden, und färben Sie kollidierende Objekte ein.

Umbenennen von Schächten/Bauwerken

Beim Hinzufügen von Haltungen und Schächten/Bauwerken zu einem Kanalnetz verwendet Civil 3D eine Vorlage, um automatisch Namen zuzuweisen. Dies ist während der ersten Platzierung in der Regel ausreichend, aber die Namen werden sich mit der Weiterentwicklung des Entwurfs unweigerlich ändern. Darüber hinaus sind möglicherweise viele verschiedene Benennungsmuster erforderlich, z. B. die sequenzielle Benennung von Schächten/Bauwerken in einem Kanalsystem ausgehend vom am weitesten stromabwärts gelegenen Schacht/Bauwerk oder die Verwendung eines Benennungsmusters, das dem Datenschema einer lokalen Behörde entspricht. In diesem Beispiel wird gezeigt, wie Dynamo zur Definition und konsistenten Anwendung jeder Art von Benennungsstrategie verwendet werden kann.

Ziel

🎯 Benennen Sie Kanalnetz-Schächte/Bauwerke basierend auf der Station einer Achse um.

Wichtige Konzepte

  • Arbeiten mit Begrenzungsrahmen

  • Filtern von Daten mithilfe des Blocks List.FilterByBoolMask

  • Sortieren von Daten mithilfe des Blocks List.SortByKey

  • Erstellen und Ändern von Textzeichenfolgen

Kompatibilität der Versionen

Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.

Datensatz

Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.

Lösung

Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.

  1. Schächte/Bauwerke nach Layer auswählen

  2. Positionen von Schächten/Bauwerken abrufen

  3. Schächte/Bauwerke nach Versatz filtern und nach Station sortieren

  4. Neue Namen generieren

  5. Schächte/Bauwerke umbenennen

Los gehts!

Auswählen von Schächten/Bauwerken

Als Erstes müssen wir alle Schächte/Bauwerke auswählen, mit denen wir arbeiten möchten. Dazu wählen wir einfach alle Objekte auf einem bestimmten Layer aus. Das bedeutet, dass wir Schächte/Bauwerke aus verschiedenen Kanalnetzen auswählen können (vorausgesetzt, sie haben den gleichen Layer).

  1. Dieser Block stellt sicher, dass wir nicht versehentlich unerwünschte Objekttypen abrufen, die möglicherweise den gleichen Layer wie die Schächte/Bauwerke verwenden.

Abrufen von Schacht-/Bauwerkspositionen

Nachdem wir die Schächte/Bauwerke erstellt haben, müssen wir ihre Position im Raum herausfinden, damit wir sie nach ihrer Position sortieren können. Dazu nutzen wir den Begrenzungsrahmen der einzelnen Objekte. Der Begrenzungsrahmen eines Objekts ist ein Quader, dessen Mindestgröße die komplette Geometrie des Objekts umschließt. Durch die Berechnung des Mittelpunkts des Begrenzungsrahmens erhalten Sie eine ziemlich gute Annäherung an den Einfügepunkt des Schachts/Bauwerks.

Wir verwenden diese Punkte, um die Station und den Versatz der Schächte/Bauwerke relativ zu einer ausgewählten Achse abzurufen.

Filtern und Sortieren

Jetzt wird es etwas schwieriger. Zu diesem Zeitpunkt haben wir eine große Liste aller Schächte/Bauwerke auf dem angegebenen Layer erstellt. Wir haben eine Achse ausgewählt, nach der wir sie sortieren möchten. Das Problem ist, dass die Liste möglicherweise Schächte/Bauwerke enthält, die nicht umbenannt werden sollen. Sie sind beispielsweise nicht Teil der Strecke, an der wir interessiert sind.

  1. Die ausgewählte Achse

  2. Die Schächte/Bauwerke, die wir umbenennen möchten

  3. Die Schächte/Bauwerke, die ignoriert werden sollen

Wir müssen die Liste der Schächte/Bauwerke filtern, sodass diejenigen, die einen bestimmten Versatz von der Achse überschreiten, nicht berücksichtigt werden. Dies erreichen Sie am besten mit dem Block List.FilterByBoolMask. Nach dem Filtern der Schacht-/Bauwerksliste verwenden Sie den List.SortByKey-Block, um sie nach ihren Stationswerten zu sortieren.

Wenn Listen neu für Sie sind, finden Sie im Abschnitt weitere Informationen.

  1. Überprüfen, ob der Schacht-/Bauwerkversatz kleiner als der Schwellenwert ist.

  2. Alle Nullwerte durch false ersetzen

  3. Liste der Schächte/Bauwerke und Stationen filtern

  4. Schächte/Bauwerke nach Stationen sortieren

Neue Namen generieren

Als Letztes müssen wir noch die neuen Namen für die Schächte/Bauwerke erstellen. Wir verwenden das Format <alignment name>-STRC-<number>. Hier gibt es einige zusätzliche Blöcke, um die Nummern ggf. mit zusätzlichen Nullen zu füllen (z. B. "01" statt "1").

Umbenennen von Schächten/Bauwerken

Und nicht zuletzt benennen wir die Schächte/Bauwerke um.

Ergebnis

Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.

Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt weitere Informationen.

🎉 Mission erfüllt!

Bonus: Visualisierung in Dynamo

Es kann hilfreich sein, die 3D-Hintergrundvorschau von Dynamo zu nutzen, um die Zwischenausgaben des Diagramms anstatt nur das Endergebnis zu visualisieren. Eine einfache Möglichkeit besteht darin, die Begrenzungsrahmen für die Schächte/Bauwerke anzuzeigen. Darüber hinaus enthält dieses spezielle Dokument einen 3D-Profilkörper. Wir können die Geometrie der 3D-Profilkörper-Elementkante in Dynamo importieren, um den Kontext für die Position der Schächte/Bauwerke im Raum zu verdeutlichen. Wenn das Diagramm für einen Datensatz verwendet wird, der keine 3D-Profilkörper enthält, führen diese Blöcke einfach keine Aktionen aus.

Jetzt verstehen wir besser, wie der Prozess des Filterns der Schächte/Bauwerke nach Versatz funktioniert.

Ideen

Im Folgenden finden Sie einige Anregungen, wie Sie die Funktionen dieses Diagramms erweitern können.

Benennen Sie die Schächte/Bauwerke basierend auf der nächstgelegenen Achse um, anstatt eine bestimmte Achse auszuwählen.

Benennen Sie die Haltungen um – zusätzlich zu den Schächten/Bauwerken.

Legen Sie die Layer der Schächte/Bauwerke fest – basierend auf ihrem Verlauf.

139KB
Utilities_RenameStructures.dyn
Open
6MB
Utilities_RenameStructures.dwg
Open
Arbeiten mit Listen
Dynamo Player
Auswählen der Schächte/Bauwerke auf einem bestimmten Layer
Verwenden von Begrenzungsrahmen, um den ungefähren Einfügepunkt jedes Schachts/Bauwerks zu ermitteln
Filtern und Sortieren der Schächte/Bauwerke
Generieren der neuen Namen für Schächte/Bauwerke
Namen für die Schächte/Bauwerke festlegen
Ausführen des Diagramms mit Dynamo Player und Anzeigen der Ergebnisse in Civil 3D
Visualisieren der Geometrie für Schächte/Bauwerke und 3D-Profilkörper-Elementkanten
Anpassen des Grenzwerts für den Achsversatz und Visualisieren der betroffenen Schächte/Bauwerke in Dynamo

Platzieren von Hausanschlüssen

Beim technischen Entwurf eines typischen Wohngebäudes werden verschiedene unterirdische Versorgungssysteme wie Abwasserkanäle, Regenwasserabläufe, Trinkwasser usw. geplant. In diesem Beispiel wird gezeigt, wie Sie mit Dynamo die Hausanschlüsse von einer Hauptverteilung zu einem bestimmten Grundstück (d. h. einer Parzelle) zeichnen können. Für jedes Grundstück ist ein Hausanschluss erforderlich, was die Positionierung der gesamten Anschlüsse sehr mühsam macht. Dynamo kann den Prozess beschleunigen, indem die erforderliche Geometrie automatisch präzise gezeichnet wird und flexible Eingaben bereitgestellt werden, die an lokale behördliche Standards angepasst werden können.

Ziel

🎯 Platzieren Sie Wasseranschlusszähler-Blockreferenzen in angegebenen Abständen von einer Parzellenlinie, und zeichnen Sie eine Linie für jeden Hausanschluss lotrecht zur Hauptverteilung.

Wichtige Konzepte

  • Verwenden des Blocks Select Objects für Benutzereingaben

  • Arbeiten mit Koordinatensystemen

  • Verwenden von geometrischen Operationen wie Geometry.DistanceTo und Geometry.ClosestPointTo

  • Erstellen von Blockreferenzen

  • Steuern der Einstellungen für Objektbindung

Kompatibilität der Versionen

Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.

Datensatz

Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.

108KB
Land_ServicePlacement.dyn
Open
842KB
Land_ServicePlacement.dwg
Open

Lösung

Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.

  1. Ruft die Kurvengeometrie für die Hauptverteilung ab.

  2. Ruft die Kurvengeometrie für eine vom Benutzer ausgewählte Parzellenlinie ab und kehrt sie bei Bedarf um

  3. Generiert Einfügepunkte für die Hausanschlusszähler

  4. Ruft die Punkte auf der Hauptverteilung ab, die den Zählerpositionen am nächsten sind

  5. Erstellt Blockreferenzen und Linien im Modellbereich

Los gehts!

Abrufen von Geometrie der Hauptverteilung

Der erste Schritt besteht darin, die Geometrie für die Hauptverteilung in Dynamo zu übernehmen. Anstatt einzelne Linien oder Polylinien auszuwählen, rufen wir stattdessen alle Objekte auf einem bestimmten Layer ab und führen sie als Dynamo-PolyCurve zusammen.

Wenn die Kurvengeometrie in Dynamo neu für Sie ist, finden Sie im Abschnitt Kurven weitere Informationen.

Abrufen der Objekte aus Civil 3D und Zusammenführen aller Objekte zu einer einzelnen PolyCurve

Abrufen der Parzellenliniengeometrie

Als Nächstes müssen wir die Geometrie für eine ausgewählte Parzellenlinie in Dynamo importieren, damit wir mit ihr arbeiten können. Das richtige Werkzeug dafür ist der Block Select Object, mit dem der Benutzer des Diagramms ein bestimmtes Objekt in Civil 3D auswählen kann.

An dieser Stelle tritt möglicherweise ein Problem auf, um das wir uns kümmern müssen. Die Parzellenlinie hat einen Start- und einen Endpunkt, d. h., sie hat eine Richtung. Damit das Diagramm konsistente Ergebnisse erzeugt, müssen alle Parzellenlinien eine konsistente Richtung aufweisen. Wir können diese Bedingung direkt in der Diagrammlogik berücksichtigen, wodurch das Diagramm zuverlässiger wird.

Auswählen einer Parzellenlinie und Sicherstellen der korrekten Richtung
  1. Rufen Sie die Start- und Endpunkte der Parzellenlinie ab.

  2. Messen Sie den Abstand von jedem Punkt zur Hauptverteilung, und ermitteln Sie dann, welcher Abstand größer ist.

  3. Das gewünschte Ergebnis ist, dass der Startpunkt der Linie der Hauptverteilung am nächsten ist. Wenn dies nicht der Fall ist, kehren wir die Richtung der Parzellenlinie um. Andernfalls geben wir einfach die ursprüngliche Parzellenlinie zurück.

Generieren von Einfügepunkten

Jetzt überlegen wir, wo die Zähler platziert werden sollen. In der Regel wird die Platzierung durch die Anforderungen der lokalen Behörden bestimmt, daher geben wir einfach Eingabewerte an, die geändert werden können, um verschiedenen Bedingungen zu entsprechen. Wir verwenden ein Koordinatensystem entlang der Parzellenlinie als Referenz für die Erstellung der Punkte. Dadurch können Sie Versätze relativ zur Parzellenlinie ganz einfach definieren, unabhängig von der Ausrichtung.

Wenn Koordinatensysteme neu für Sie sind, finden Sie im Abschnitt Vektor, Ebene und Koordinatensystem weitere Informationen.

Erstellen der Einfügepunkte für die Zähler

Abrufen von Verbindungspunkten

Jetzt müssen wir Punkte auf der Hauptverteilung abrufen, die den Zählerpositionen am nächsten sind. Dadurch können wir die Hausanschlüsse im Modellbereich so zeichnen, dass sie immer lotrecht zur Hauptverteilung sind. Dafür eignet sich der Block Geometry.ClosestPointTo.

Abrufen von lotrechten Punkten auf der Hauptverteilung
  1. Dies ist die Hauptverteilungs-PolyCurve.

  2. Dies sind die Zählereinfügepunkte.

Erstellen von Objekten

Der letzte Schritt besteht darin, Objekte im Modellbereich zu erstellen. Wir verwenden die zuvor generierten Einfügepunkte, um Blockreferenzen zu erstellen, und dann die Punkte auf der Hauptverteilung, um Linien zu den Hausanschlüssen zu zeichnen.

Ergebnis

Wenn Sie das Diagramm ausführen, sollten neue Blockreferenzen und Hausanschlusslinien im Modellbereich angezeigt werden. Ändern Sie einige der Eingaben, und beobachten Sie, wie alles automatisch aktualisiert wird.

Anpassen der Eingabeparameter in Dynamo und sofortiges Anzeigen der Ergebnisse in Civil 3D

Bonus: Aktivieren der sequenziellen Platzierung

Sie werden feststellen, dass nach dem Platzieren der Objekte für eine Parzellenlinie die Objekte bei Auswahl einer anderen Parzellenlinie "verschoben" werden.

Verhalten bei aktivierter Objektbindung

Dies ist das Vorgabeverhalten von Dynamo und in vielen Fällen sehr nützlich. Möglicherweise möchten Sie jedoch mehrere Hausanschlüsse nacheinander platzieren und Dynamo neue Objekte mit jeder Ausführung erstellen lassen, anstatt die ursprünglichen zu ändern. Sie können dieses Verhalten steuern, indem Sie die Einstellungen für die Objektbindung ändern.

Einstellungen für Objektbindung in Dynamo

Weitere Informationen finden Sie im Abschnitt Objektbindung

Durch Ändern dieser Einstellung wird Dynamo gezwungen, die Objekte, die mit jedem Durchlauf erstellt werden, zu "vergessen". Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit deaktivierter Objektbindung in Dynamo Player.

Ausführen des Diagramms mit Dynamo Player und Anzeigen der Ergebnisse in Civil 3D

Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt Dynamo Player weitere Informationen.

🎉 Mission erfüllt!

Ideen

Im Folgenden finden Sie einige Anregungen, wie Sie die Funktionen dieses Diagramms erweitern können.

Platzieren Sie mehrere Hausanschlüsse gleichzeitig, anstatt jede Parzellenlinie auszuwählen.

Passen Sie die Eingaben an, um Kanalöffnungen anstelle von Wasserzählern zu platzieren.

Fügen Sie einen Schalter hinzu, um das Platzieren eines einzelnen Hausanschlusses auf einer bestimmten Seite der Parzellenlinie anstatt auf beiden Seiten zu ermöglichen.

Lichtmastenplatzierung

Einer der vielen praktischen Anwendungsfälle von Dynamo ist das dynamische Platzieren einzelner Objekte entlang eines 3D-Profilkörpermodells. Häufig müssen Objekte an Positionen platziert werden, die unabhängig von den eingefügten Querschnitten entlang des 3D-Profilkörpers sind. Dies manuell zu erledigen ist sehr mühsam. Wenn sich die horizontale oder vertikale Geometrie des 3D-Profilkörpers ändert, ist ein erheblicher Überarbeitungsaufwand erforderlich.

Ziel

🎯 Platzieren Sie Lichtmast-Blockreferenzen entlang eines 3D-Profilkörpers an Stationswerten, die in einer Excel-Datei angegeben sind.

Wichtige Konzepte

  • Lesen von Daten aus einer externen Datei (in diesem Fall Excel)

  • Organisieren von Daten in Wörterbüchern

  • Steuern von Position/Skalierung/Drehung mithilfe von Koordinatensystemen

  • Platzieren von Blockreferenzen

  • Visualisieren von Geometrie in Dynamo

Kompatibilität der Versionen

Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.

Datensatz

Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.

Die Excel-Datei sollte im selben Verzeichnis wie das Dynamo-Diagramm gespeichert werden.

232KB
Roads_CorridorBlockRefs.dyn
Open
54MB
Roads_CorridorBlockRefs.dwg
Open
12KB
LightPoles.xlsx
Open

Lösung

Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.

  1. Excel-Datei lesen und Daten in Dynamo importieren

  2. Elementkanten aus der angegebenen 3D-Profilkörper-Basislinie abrufen

  3. Koordinatensysteme entlang der 3D-Profilkörper-Elementkante an den gewünschten Stationen generieren

  4. Koordinatensysteme zum Platzieren von Blockreferenzen im Modellbereich verwenden

Los gehts!

Abrufen von Excel-Daten

In diesem Beispieldiagramm verwenden wir eine Excel-Datei, um die Daten zu speichern, die Dynamo zum Platzieren der Lichtmast-Blockreferenzen verwendet. Die Tabelle sieht so aus.

Struktur der Excel-Dateitabelle

Das Lesen von Daten aus externen Dateien (z. B. Excel-Dateien) mit Dynamo ist praktisch, insbesondere dann, wenn auch andere Teammitglieder die Daten nutzen müssen.

Die Excel-Daten werden wie folgt in Dynamo importiert.

Importieren der Excel-Daten in Dynamo

Nachdem wir die Daten erstellt haben, müssen wir sie nach Spalten aufteilen (Corridor, Baseline, PointCode usw.), damit sie im restlichen Diagramm verwendet werden können. Eine gängige Methode hierfür ist die Verwendung des List.GetItemAtIndex-Blocks und die Angabe der Indexnummer für jede gewünschte Spalte. Beispiel: Die Spalte Corridor befindet sich bei Index 0, die Spalte Baseline bei Index 1 usw.

Klingt gut, oder? Doch bei diesem Ansatz gibt es ein potenzielles Problem. Was geschieht, wenn sich die Reihenfolge der Spalten in der Excel-Datei in Zukunft ändert? Oder wenn eine neue Spalte zwischen zwei Spalten hinzugefügt wird? Das Diagramm funktioniert dann nicht ordnungsgemäß und muss aktualisiert werden. Sie können das Diagramm für zukünftige Aktionen absichern, indem Sie die Daten in ein Wörterbuch einfügen, wobei die Excel-Spaltenüberschriften die Schlüssel und die übrigen Daten die Werte sind.

Wenn Wörterbücher neu für Sie sind, finden Sie im Abschnitt Wörterbücher in Dynamo weitere Informationen.

Einfügen der Excel-Daten in ein Wörterbuch

Dadurch wird das Diagramm stabiler, da es Flexibilität beim Ändern der Spaltenreihenfolge in Excel ermöglicht. Solange die Spaltenüberschriften gleich bleiben, können die Daten einfach mithilfe des Schlüssels (d. h. der Spaltenüberschrift) aus dem Wörterbuch abgerufen werden. Dies ist die Vorgehensweise beim nächsten Schritt.

Abrufen von Daten aus dem Wörterbuch

Abrufen von 3D-Profilkörper-Elementkanten

Nachdem wir die Excel-Daten importiert haben und bereit für die Arbeit sind, können wir damit einige Informationen zu den 3D-Profilkörpermodellen aus Civil 3D abrufen.

  1. Wählen Sie das 3D-Profilkörpermodell nach seinem Namen aus.

  2. Rufen Sie eine bestimmte Basislinie innerhalb des 3D-Profilkörpers ab.

  3. Rufen Sie eine Elementkante innerhalb der Basislinie anhand ihres Punktcodes ab.

Erstellen von Koordinatensystemen

Als Nächstes generieren wir Koordinatensysteme entlang der 3D-Profilkörper-Elementkanten an den Stationswerten, die wir in der Excel-Datei angegeben haben. Diese Koordinatensysteme werden verwendet, um die Position, Drehung und Skalierung der Lichtmast-Blockreferenzen zu definieren.

Wenn Koordinatensysteme neu für Sie sind, finden Sie im Abschnitt Vektor, Ebene und Koordinatensystem weitere Informationen.

Abrufen von Koordinatensystemen entlang der 3D-Profilkörper-Elementkanten

Beachten Sie, dass zum Drehen der Koordinatensysteme hier ein Codeblock verwendet wird, je nachdem, auf welcher Seite der Basislinie sie sich befinden. Dies könnte mithilfe einer Sequenz von mehreren Blöcken erreicht werden, ist aber ein gutes Beispiel für eine Situation, in der es einfacher ist, einfach den Code zu schreiben.

Wenn Codeblöcke neu für Sie sind, finden Sie im Abschnitt Codeblöcke und DesignScript weitere Informationen.

Erstellen von Blockreferenzen

Gleich haben wir es geschafft! Wir verfügen über alle Informationen, die wir benötigen, um die Blockreferenzen tatsächlich platzieren zu können. Als Erstes müssen wir die gewünschten Blockdefinitionen mithilfe der Spalte BlockName in der Excel-Datei abrufen.

Abrufen der gewünschten Blockdefinitionen aus dem Dokument

Der letzte Schritt ist die Erstellung der Blockreferenzen.

Erstellen der Blockreferenzen im Modellbereich

Ergebnis

Beim Ausführen des Diagramms sollten neue Blockreferenzen im Modellbereich entlang des 3D-Profilkörpers angezeigt werden. Wenn der Ausführungsmodus des Diagramms auf Automatisch eingestellt ist und Sie die Excel-Datei bearbeiten, werden die Blockreferenzen automatisch aktualisiert.

Weitere Informationen über die Diagrammausführungsmodi finden Sie im Abschnitt Benutzeroberfläche.

Aktualisieren der Excel-Datei und schnelles Anzeigen der Ergebnisse in Civil 3D

Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.

Ausführen des Diagramms mit Dynamo Player und Anzeigen der Ergebnisse in Civil 3D

Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt Dynamo Player weitere Informationen.

🎉 Mission erfüllt!

Bonus: Visualisierung in Dynamo

Es kann hilfreich sein, die 3D-Profilkörpergeometrie in Dynamo zu visualisieren, um Kontext bereitzustellen. In diesem speziellen Modell sind die 3D-Profilkörper-Volumenkörper bereits im Modellbereich extrahiert. Diese exportieren wir in Dynamo.

Aber wir müssen noch etwas bedenken. Volumenkörper sind ein relativ "schwerer" Geometrietyp, was bedeutet, dass dieser Vorgang das Diagramm verlangsamt. Es wäre praktisch, wenn es eine einfache Möglichkeit gäbe, auszuwählen, ob wir die Volumenkörper anzeigen möchten oder nicht. Die offensichtliche Antwort ist, einfach den Corridor.GetSolids-Block zu trennen. Dadurch werden jedoch Warnungen für alle nachgeordneten Blöcke angezeigt, was zu einer chaotischen Ansicht führt. Dies ist eine Situation, in der der ScopeIf-Block hilfreich ist.

  1. Beachten Sie, dass der Object.Geometry-Block unten einen grauen Balken aufweist. Dies bedeutet, dass die Blockvorschau deaktiviert ist (Zugriff durch Klicken mit der rechten Maustaste auf den Block). Dadurch muss der Block GeometryColor.ByGeometryColor in der Hintergrundvorschau nicht mit anderer Geometrie um die Anzeigepriorität konkurrieren.

  2. Mit dem ScopeIf-Block können Sie einen ganzen Zweig von Blöcken selektiv ausführen. Wenn die test-Eingabe false ist, werden alle mit dem ScopeIf-Block verbundenen Blöcke nicht ausgeführt.

Hier sehen Sie das Ergebnis in der Dynamo-Hintergrundvorschau.

Visualisieren der 3D-Profilkörpergeometrie in Dynamo

Ideen

Im Folgenden finden Sie einige Anregungen, wie Sie die Funktionen dieses Diagramms erweitern können.

Fügen Sie eine rotation-Spalte zur Excel-Datei hinzu, die Sie zum Steuern der Drehung des Koordinatensystems verwenden können.

Fügen Sie horizontale oder vertikale Versätze zur Excel-Datei hinzu, sodass die Lichtmasten bei Bedarf von der 3D-Profilkörper-Elementkante abweichen können.

Anstatt eine Excel-Datei mit Stationswerten zu verwenden, generieren Sie die Stationswerte direkt in Dynamo mit einer Anfangsstation und typischem Abstand.

Civil 3DDynamo
Dynamo in Civil 3D Introduction—Unlocking the Mystery of Scripting | Autodesk Universitywww.autodesk.com
Mundane Civil 3D Tasks to Automate with Dynamo for Civil 3D | Autodesk Universitywww.autodesk.com
Getting Started with Dynamo for Civil 3D: A Beginner’s Guide | Autodesk Universitywww.autodesk.com
Civil 3D and Dynamo—Dynamic Culvert Design and Analysis | Autodesk Universitywww.autodesk.com
Generating, Transforming, and Analyzing Railway Design Data in Civil 3D and Dynamo | Autodesk Universitywww.autodesk.com
Optimize Road Design with Dynamo for Civil 3D and Generative Design | Autodesk Universitywww.autodesk.com
Computational Design for Civil Engineers | Autodesk Universitywww.autodesk.com
GitHub - Autodesk/civilconnection: CivilConnection enables the exchange of information between Civil 3D, Dynamo and Revit.GitHub
Arkance Systems Node Library for Civil 3D DynamoHuizBlog
Logo
Logo
Dynamo for Civil 3D: Automated Checks of Open-Format Road Design Made Easy | Autodesk Universitywww.autodesk.com
Helphelp.autodesk.com
Logo
Logo
Logo
Logo
Logo
Dynamo for Civil 3Dbooks.huiz.net
Underground Utility GIS Features to Civil 3D Pipe Networks with Dynamo | Autodesk Universitywww.autodesk.com
GitHub - mzjensen/Camber: An open-source Dynamo package for Civil 3D.GitHub
Logo
Logo

Python und Civil 3D

Dynamo ist als visuelles Programmierwerkzeug zwar sehr leistungsstark, es ist jedoch auch möglich, nicht nur Blöcke und Drähte zu verwenden, sondern Code in Textform zu schreiben. Es gibt zwei Möglichkeiten, dies zu tun:

  1. Schreiben von DesignScript mithilfe eines Codeblocks

  2. Schreiben von Python mithilfe eines Python-Blocks

In diesem Abschnitt wird beschrieben, wie Sie Python in der Civil 3D-Umgebung einsetzen können, um die Vorteile der .NET-APIs von AutoCAD und Civil 3D zu nutzen.

Weitere allgemeine Informationen zur Verwendung von Python in Dynamo finden Sie im Abschnitt Python .

API-Dokumentation

AutoCAD und Civil 3D verfügen über mehrere APIs, mit denen Entwickler wie Sie das Kernprodukt um benutzerdefinierte Funktionen erweitern können. Im Kontext von Dynamo sind die verwalteten .NET-APIs relevant. Die folgenden Links sind wichtig, um die Struktur der APIs und ihre Funktionsweise zu verstehen.

AutoCAD-.NET-API - Entwicklerhandbuch

AutoCAD-.NET-API - Referenzhandbuch

Civil 3D-.NET-API - Entwicklerhandbuch

Civil 3D-.NET-API - Referenzhandbuch

Wenn Sie diesen Abschnitt durcharbeiten, werden Ihnen möglicherweise einige Konzepte begegnen, mit denen Sie nicht vertraut sind, z. B. Datenbanken, Transaktionen, Methoden, Eigenschaften usw. Viele dieser Konzepte sind für die Arbeit mit .NET-APIs wichtig und nicht spezifisch für Dynamo oder Python. Da diese Konzepte in diesem Abschnitt der Einführung nicht behandelt werden, empfehlen wir für weitere Informationen die oben genannten Links.

Code-Vorlage

Wenn Sie einen neuen Python-Block zum ersten Mal bearbeiten, wird er automatisch mit Vorlagencode gefüllt, um Ihnen den Einstieg zu erleichtern. Hier sehen Sie eine Aufschlüsselung der Vorlage mit Erläuterungen zu den einzelnen Blöcken.

Die vorgabemäßige Python-Vorlage in Civil 3D
  1. Importiert die Module sys und clr, die beide für die korrekte Funktionsweise des Python-Interpreters erforderlich sind. Insbesondere ermöglicht das clr-Modul, dass .NET-Namensbereiche im Wesentlichen wie Python-Pakete behandelt werden.

  2. Lädt die Standardbaugruppen (d. h. DLLs) für die Arbeit mit den verwalteten .NET-APIs für AutoCAD und Civil 3D.

  3. Fügt Verweise zu den standardmäßigen AutoCAD- und Civil 3D-Namensbereichen hinzu. Diese entsprechen den Anweisungen using oder Imports in C# bzw. VB.NET.

  4. Auf die Eingabeanschlüsse des Blocks kann über eine vordefinierte Liste mit dem Namen IN zugegriffen werden. Sie können auf die Daten in einem bestimmten Anschluss über die Indexnummer zugreifen, z. B. dataInFirstPort = IN[0].

  5. Ruft das aktive Dokument und den aktiven Editor ab.

  6. Sperrt das Dokument und initiiert eine Datenbanktransaktion.

  7. Hier sollten Sie den Großteil der Skriptlogik platzieren.

  8. Heben Sie die Auskommentierung dieser Zeile auf, um die Transaktion nach der Hauptarbeit zu bestätigen.

  9. Wenn Sie Daten aus dem Block ausgeben möchten, weisen Sie diese der Variablen OUT am Ende des Skripts zu.

Sie möchten die Software anpassen? Sie können die vorgabemäßige Python-Vorlage ändern, indem Sie die Datei PythonTemplate.py in C:\ProgramData\Autodesk\C3D <Version>\Dynamo bearbeiten.

Beispiel

Im Folgenden werden anhand eines Beispiels einige der grundlegenden Konzepte zum Schreiben von Python-Skripten in Dynamo for Civil 3D demonstriert.

Ziel

🎯 Ruft die Umgrenzungsgeometrie aller Einzugsgebiete in einer Zeichnung ab.

Datensatz

Hier sehen Sie Beispieldateien, die für diese Übung als Referenz dienen können.

15KB
Python_Catchments.dyn
Open
961KB
Python_Catchments.dwg
Open

Lösungsübersicht

Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.

  1. Dokumentation zur Civil 3D-API ansehen

  2. Alle Einzugsgebiete im Dokument nach Layernamen auswählen

  3. Dynamo-Objekte "abwickeln", um auf die internen Civil 3D-API-Elemente zuzugreifen

  4. Dynamo-Punkte aus AutoCAD-Punkten erstellen

  5. PolyCurves aus den Punkten erstellen

Los gehts!

Überprüfen der API-Dokumentation

Bevor wir beginnen, unser Diagramm zu erstellen und Code zu schreiben, sollten wir uns die Dokumentation zur Civil 3D-API ansehen und einen Eindruck davon gewinnen, was die API uns zur Verfügung stellt. In diesem Fall gibt es eine Eigenschaft in der Einzugsgebietklasse, die die Umgrenzungspunkte des Einzugsgebiets zurückgibt. Beachten Sie, dass diese Eigenschaft ein Point3dCollection-Objekt zurückgibt. Dynamo kann diese Objektart nicht verarbeiten. Mit anderen Worten: Wir können keine PolyCurve aus einer Point3dCollection erstellen, daher müssen wir irgendwann alles in Dynamo-Punkte umwandeln. Doch mehr dazu später.

Abrufen aller Einzugsgebiete

Jetzt können wir mit der Erstellung der Diagrammlogik beginnen. Als Erstes müssen Sie eine Liste aller Einzugsgebiete im Dokument abrufen. Hierfür sind Blöcke verfügbar, sodass Sie dies nicht in das Python-Skript aufnehmen müssen. Die Verwendung von Blöcken bietet eine bessere Sichtbarkeit für andere Benutzer, die das Diagramm möglicherweise lesen (im Gegensatz zu in einem Python-Skript "verstecktem" Code). Außerdem konzentriert sich das Python-Skript auf eine Sache: die Rückgabe der Umgrenzungspunkte der Einzugsgebiete.

Abrufen aller Einzugsgebiete im Dokument nach Layer

Beachten Sie, dass die Ausgabe des Blocks All Objects on Layer eine Liste von CivilObjects ist. Dies liegt daran, dass Dynamo for Civil 3D derzeit keine Blöcke für die Arbeit mit Einzugsgebieten hat. Aus diesem Grund müssen wir über Python auf die API zugreifen.

Abwickeln von Objekten

Bevor wir fortfahren, müssen wir noch kurz auf ein wichtiges Konzept eingehen. Im Abschnitt Blockbibliothek wurde erläutert, wie Objekte und CivilObjects miteinander verbunden sind. Eine weitere relevante Information ist, dass ein Dynamo-Objekt als Wrapper um ein AutoCAD-Objekt herum fungiert. In ähnlicher Weise ist ein Dynamo-CivilObject ein Wrapper um ein Civil 3D-Objekt herum. Sie können ein Objekt abwickeln, indem Sie auf seine InternalDBObject- oder InternalObjectId-Eigenschaften zugreifen.

Dynamo-Typ
Enthält im Wrapper

Objekt Autodesk.AutoCAD.DynamoNodes.Object

Objekt Autodesk.AutoCAD.DatabaseServices.Entity

CivilObject Autodesk.Civil.DynamoNodes.CivilObject

Objekt Autodesk.Civil.DatabaseServices.Entity

Als Faustregel gilt: Es ist in der Regel sicherer, die Objekt-ID über die Eigenschaft InternalObjectId abzurufen und dann in einer Transaktion auf das im Wrapper enthaltene Objekt zuzugreifen. Dies liegt daran, dass die Eigenschaft InternalDBObject ein AutoCAD-DBObject zurückgibt, das sich nicht in einem schreibbaren Status befindet.

Python-Skript

Hier sehen Sie das vollständige Python-Skript, das für den Zugriff auf die internen Einzugsgebietobjekte deren Umgrenzungspunkte abruft. Die hervorgehobenen Zeilen stehen für die Zeilen, die vom Vorgabevorlagencode geändert/hinzugefügt wurden.

Klicken Sie auf den unterstrichenen Text im Skript, um eine Erläuterung für jede Zeile anzuzeigen.

# Python-Standard- und DesignScript-Bibliotheken laden
import sys
import clr

# Baugruppen für AutoCAD und Civil3D hinzufügen
clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')

clr.AddReference('ProtoGeometry')

# Referenzen aus AutoCAD importieren
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 *

# Referenzen aus Civil3D importieren
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

from Autodesk.DesignScript.Geometry import Point as DynPoint

# Die Eingaben für diesen Block werden als Liste in den IN-Variablen gespeichert.
objs = IN[0]

output = [] 

if objs is None:
    sys.exit("Die Eingabe ist null oder leer.")

if not isinstance(objs, list):
    objs = [objs]
    
adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor

with adoc.LockDocument():
    with adoc.Database as db:
        
        with db.TransactionManager.StartTransaction() as t:
            for obj in objs:              
                id = obj.InternalObjectId
                aeccObj = t.GetObject(id, OpenMode.ForRead)                
                if isinstance(aeccObj, Catchment):
                    catchment = aeccObj
                    acPnts = catchment.BoundaryPolyline3d                    
                    dynPnts = []
                    for acPnt in acPnts:
                        pnt = DynPoint.ByCoordinates(acPnt.X, acPnt.Y, acPnt.Z)
                        dynPnts.append(pnt)
                    output.append(dynPnts)
            
            # Commit vor Beenden der Transaktion
            t.Commit()
            pass
            
# Weisen Sie Ihre Ausgabe der OUT-Variable zu.
OUT = output

Als Faustregel sollten Sie den Großteil Ihrer Skriptlogik in eine Transaktion einschließen. Dadurch wird der sichere Zugriff auf die Objekte sichergestellt, die das Skript lesen und schreiben kann. In vielen Fällen kann das Auslassen einer Transaktion einen schwerwiegenden Fehler verursachen.

Erstellen von PolyCurves

An dieser Stelle sollte das Python-Skript eine Liste von Dynamo-Punkten ausgeben, die Sie in der Hintergrundvorschau sehen können. Der letzte Schritt besteht darin, einfach PolyCurves aus den Punkten zu erstellen. Beachten Sie, dass dies auch direkt im Python-Skript erfolgen kann. Wir haben dies jedoch absichtlich außerhalb des Skripts in einem Block platziert, damit es besser sichtbar ist. Hier sehen Sie, wie das fertige Diagramm aussieht.

Das endgültige Diagramm

Ergebnis

Hier sehen Sie die endgültige Dynamo-Geometrie.

Die resultierenden Dynamo-PolyCurves für die Einzugsgebietsgrenzen

🎉 Mission erfüllt!

IronPython vs. CPython

Hier noch eine kurze Anmerkung. Je nachdem, welche Version von Civil 3D Sie verwenden, ist der Python-Block möglicherweise anders konfiguriert. In Civil 3D 2020 und 2021 hat Dynamo das Werkzeug IronPython verwendet, um Daten zwischen .NET-Objekten und Python-Skripten zu verschieben. In Civil 3D 2022 wurde in Dynamo jedoch der standardmäßige native Python-Interpreter (auch CPython genannt) anstelle von Python 3 verwendet. Zu den Vorteilen dieser Umstellung zählen der Zugriff auf beliebte moderne Bibliotheken und neue Plattformfunktionen, grundlegende Wartung und Sicherheits-Patches.

Weitere Informationen zu dieser Umstellung und zum Aktualisieren älterer Skripte finden Sie im Dynamo-Blog. Wenn Sie IronPython weiterhin verwenden möchten, müssen Sie lediglich das DynamoIronPython2.7 - Paket mithilfe des Dynamo Package Manager installieren.

Logo
Logo
Logo
Logo
Logo
Logo