Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
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.
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
Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.
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.
Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.
Excel-Datei lesen und Daten in Dynamo importieren
Elementkanten aus der angegebenen 3D-Profilkörper-Basislinie abrufen
Koordinatensysteme entlang der 3D-Profilkörper-Elementkante an den gewünschten Stationen generieren
Koordinatensysteme zum Platzieren von Blockreferenzen im Modellbereich verwenden
Los gehts!
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.
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.
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.
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.
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.
Wählen Sie das 3D-Profilkörpermodell nach seinem Namen aus.
Rufen Sie eine bestimmte Basislinie innerhalb des 3D-Profilkörpers ab.
Rufen Sie eine Elementkante innerhalb der Basislinie anhand ihres Punktcodes ab.
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.
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.
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.
Der letzte Schritt ist die Erstellung der Blockreferenzen.
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.
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 Dynamo Player weitere Informationen.
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.
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.
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.
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.
Platzieren Sie Lichtmast-Blockreferenzen entlang eines 3D-Profilkörpers an Stationswerten, die in einer Excel-Datei angegeben sind.
Mission erfüllt!
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.
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.
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.
Wenn Dynamo geöffnet ist, wird der Startbildschirm angezeigt. Klicken Sie auf Neu, um einen leeren Arbeitsbereich zu öffnen.
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.
Sie sollten jetzt einen leeren Arbeitsbereich sehen. Erleben Sie Dynamo in Aktion! Hier ist unser Ziel:
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.
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.
Fassen wir zusammen, was wir hier erreicht haben:
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.
Wir haben den Zielblock definiert, in dem das Textobjekt erstellt werden soll (in diesem Fall der Modellbereich).
Wir haben mithilfe eines String-Blocks angegeben, auf welchem Layer der Text platziert werden soll.
Wir haben einen Punkt mithilfe des Point.ByCoordinates-Blocks erstellt, um die Position zu definieren, an der der Text platziert werden soll.
Wir haben die X- und Y-Koordinaten des Texteinfügepunkts mithilfe von zwei Number Slider-Blöcken definiert.
Wir haben den Inhalt des Text-Objekts mithilfe eines anderen String-Blocks definiert.
Schließlich haben wir das Text-Objekt erstellt.
Sehen wir uns nun die Ergebnisse unseres brandneuen Diagramms an.
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.
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.
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!
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.
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.
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.
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
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.
Spezifische Blöcke für die Arbeit mit AutoCAD- und Civil 3D-Objekten
Allgemeine Blöcke
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.
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.
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.
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.
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.
Arbeiten mit Begrenzungsrahmen
Filtern von Daten mithilfe des Blocks List.FilterByBoolMask
Sortieren von Daten mithilfe des Blocks List.SortByKey
Erstellen und Ändern von Textzeichenfolgen
Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.
Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.
Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.
Schächte/Bauwerke nach Layer auswählen
Positionen von Schächten/Bauwerken abrufen
Schächte/Bauwerke nach Versatz filtern und nach Station sortieren
Neue Namen generieren
Schächte/Bauwerke umbenennen
Los gehts!
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).
Dieser Block stellt sicher, dass wir nicht versehentlich unerwünschte Objekttypen abrufen, die möglicherweise den gleichen Layer wie die Schächte/Bauwerke verwenden.
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.
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.
Die ausgewählte Achse
Die Schächte/Bauwerke, die wir umbenennen möchten
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.
Überprüfen, ob der Schacht-/Bauwerkversatz kleiner als der Schwellenwert ist.
Alle Nullwerte durch false ersetzen
Liste der Schächte/Bauwerke und Stationen filtern
Schächte/Bauwerke nach Stationen sortieren
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").
Und nicht zuletzt benennen wir die Schächte/Bauwerke um.
Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.
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.
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.
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.
Arbeiten mit Listen
Gruppieren ähnlicher Objekte mit dem Block List.GroupByKey
Anzeigen von benutzerdefinierten Ausgaben in Dynamo Player
Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.
Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.
Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.
Alle Koordinatenpunkte im Dokument abrufen
Koordinatenpunkte nach Beschreibung gruppieren
Punktgruppen erstellen
Zusammenfassung in Dynamo Player ausgeben
Los gehts!
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.
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.
Die harte Arbeit ist getan! Der letzte Schritt besteht darin, neue Civil 3D-Punktgruppen aus den gruppierten Koordinatenpunkten zu erstellen.
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.
Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.
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.
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.
Arbeiten mit 3D-Profilkörper-Elementkanten
Transformieren von Geometrie zwischen Koordinatensystemen
Erstellen von Volumenkörpern durch Anhebung
Steuern des Blockverhaltens mit Vergitterungseinstellungen
Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.
Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.
Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.
Elementkanten aus der angegebenen 3D-Profilkörper-Basislinie abrufen
Koordinatensysteme entlang der 3D-Profilkörper-Elementkante mit dem gewünschten Abstand erstellen
Blockgeometrie des Längsschnitts in die Koordinatensysteme umwandeln
Volumenkörper zwischen den Längsschnitten anheben
Volumenkörper in Civil 3D erstellen
Los gehts!
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.
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.
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.
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.
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.
Hiermit wird die Blockdefinition aus dem Dokument abgerufen.
Diese Blöcke übernehmen die Dynamo-Geometrie der Objekte innerhalb des Blocks.
Diese Blöcke definieren im Wesentlichen das Koordinatensystem, aus dem die Geometrie transformiert wird.
Und schließlich führt dieser Block die eigentliche Transformation der Geometrie durch.
Beachten Sie die längste Vergitterung in diesem Block.
Und so sieht dies in Dynamo aus.
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.
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.
Hier sehen Sie ein Beispiel für die Ausführung des Diagramms mit Dynamo Player.
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.
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 vertraut machen, der weitere Ideen zum Erstellen leistungsstarker, flexibler und langlebiger Diagramme enthält.
Erstellen Sie ein Dynamo-Diagramm, das Text in den Modellbereich einfügt.
Mission erfüllt!
Benennen Sie Kanalnetz-Schächte/Bauwerke basierend auf der Station einer Achse um.
Wenn Listen neu für Sie sind, finden Sie im Abschnitt weitere Informationen.
Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt weitere Informationen.
Mission erfüllt!
Erstellen Sie eine Punktgruppe für jede eindeutige Koordinatenpunktbeschreibung.
Wenn Listen neu für Sie sind, finden Sie im Abschnitt weitere Informationen.
Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt weitere Informationen.
Mission erfüllt!
Verwenden Sie einen Block für einen Fahrzeug-Längsschnitt, um 3D-Volumenkörper mit Lichtraumprofil entlang eines 3D-Profilkörpers zu erstellen.
Wenn Koordinatensysteme neu für Sie sind, finden Sie im Abschnitt weitere Informationen.
Wenn die Blockvergitterung neu für Sie ist, finden Sie im Abschnitt weitere Informationen.
Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt weitere Informationen.
Mission erfüllt!
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.
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 auf der Seite Civil 3D-Hilfe.
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.
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
Dieses Diagramm wird in Civil 3D 2020 und höher ausgeführt.
Laden Sie zunächst die folgenden Beispieldateien herunter, und öffnen Sie dann die DWG-Datei und das Dynamo-Diagramm.
Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.
Ruft die Kurvengeometrie für die Hauptverteilung ab.
Ruft die Kurvengeometrie für eine vom Benutzer ausgewählte Parzellenlinie ab und kehrt sie bei Bedarf um
Generiert Einfügepunkte für die Hausanschlusszähler
Ruft die Punkte auf der Hauptverteilung ab, die den Zählerpositionen am nächsten sind
Erstellt Blockreferenzen und Linien im Modellbereich
Los gehts!
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.
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.
Rufen Sie die Start- und Endpunkte der Parzellenlinie ab.
Messen Sie den Abstand von jedem Punkt zur Hauptverteilung, und ermitteln Sie dann, welcher Abstand größer ist.
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.
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.
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.
Dies ist die Hauptverteilungs-PolyCurve.
Dies sind die Zählereinfügepunkte.
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.
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.
Sie werden feststellen, dass nach dem Platzieren der Objekte für eine Parzellenlinie die Objekte bei Auswahl einer anderen Parzellenlinie "verschoben" werden.
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.
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.
Wenn Dynamo Player neu für Sie ist, finden Sie im Abschnitt Dynamo Player weitere Informationen.
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.
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.
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.
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 #binding-settings unten).
Nachdem wir diese Änderung vorgenommen haben, erhalten wir das gewünschte Verhalten.
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.
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.
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.
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.
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 Dynamo Player 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.
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:
Schreiben von DesignScript mithilfe eines Codeblocks
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.
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.
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.
Importiert die Module
sys
undclr
, die beide für die korrekte Funktionsweise des Python-Interpreters erforderlich sind. Insbesondere ermöglicht dasclr
-Modul, dass .NET-Namensbereiche im Wesentlichen wie Python-Pakete behandelt werden.Lädt die Standardbaugruppen (d. h. DLLs) für die Arbeit mit den verwalteten .NET-APIs für AutoCAD und Civil 3D.
Fügt Verweise zu den standardmäßigen AutoCAD- und Civil 3D-Namensbereichen hinzu. Diese entsprechen den Anweisungen
using
oderImports
in C# bzw. VB.NET.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]
.Ruft das aktive Dokument und den aktiven Editor ab.
Sperrt das Dokument und initiiert eine Datenbanktransaktion.
Hier sollten Sie den Großteil der Skriptlogik platzieren.
Heben Sie die Auskommentierung dieser Zeile auf, um die Transaktion nach der Hauptarbeit zu bestätigen.
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.
Im Folgenden werden anhand eines Beispiels einige der grundlegenden Konzepte zum Schreiben von Python-Skripten in Dynamo for Civil 3D demonstriert.
Hier sehen Sie Beispieldateien, die für diese Übung als Referenz dienen können.
Hier sehen Sie einen Überblick über die Logik in diesem Diagramm.
Dokumentation zur Civil 3D-API ansehen
Alle Einzugsgebiete im Dokument nach Layernamen auswählen
Dynamo-Objekte "abwickeln", um auf die internen Civil 3D-API-Elemente zuzugreifen
Dynamo-Punkte aus AutoCAD-Punkten erstellen
PolyCurves aus den Punkten erstellen
Los gehts!
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.
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.
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.
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.
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.
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.
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.
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.
Hier sehen Sie die endgültige Dynamo-Geometrie.
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.
Diese Zeile ruft die spezifische Klasse ab, die wir aus der Dynamo-Geometriebibliothek benötigen. Beachten Sie, dass wir hier import Point as DynPoint
anstelle von import *
angeben, da Letzteres zu Namenskonflikten führen würde.
Hier geben wir an, welcher Eingabeanschluss die gewünschten Daten enthält, und nicht die Vorgabe IN
, die sich auf die gesamte Liste aller Eingaben bezieht.
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.
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.
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.
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.
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.
Platzieren Sie Wasseranschlusszähler-Blockreferenzen in angegebenen Abständen von einer Parzellenlinie, und zeichnen Sie eine Linie für jeden Hausanschluss lotrecht zur Hauptverteilung.
Mission erfüllt!
Ruft die Umgrenzungsgeometrie aller Einzugsgebiete in einer Zeichnung ab.
Mission erfüllt!