Erstellt neue Blöcke in Autodesk Dynamo for Civil 3D zum Erstellen von Punkten, Hinzufügen von Punkten zu einer Punktgruppe und Erstellen einer Fläche aus einer Punktgruppe.
Dynamo-Beispielskript: CoGoPoints.dyn
Beispielprojekt: CoGoPoints.dwg
Die Blöcke, die beim Importieren von CoGoPoints.dll erstellt werden, werden in der folgenden Abbildung dargestellt.
Koordinatenpunkte werden in der Zeichnung erstellt und zu einer Punktgruppe hinzugefügt, und eine Fläche wird basierend auf der Punktgruppe erstellt.
![]() |
![]() |
Dynamo bietet zwei Möglichkeiten, einen Verfolgungsmechanismus umzusetzen. Eine davon ist, die vorhandene Methode (CommonConstruct) beim Erstellen neuer Blöcke zu verwenden. Alternativ können Sie mit einer Vorlage Verfolgungscode schreiben.
Um einen Verfolgungsmechanismus für neue Blöcke umzusetzen, müssen Klassen von Autodesk.AutoCAD.DynamoNodes.ObjectBase oder Autodesk.AutoCAD.DynamoNodes.Object abgeleitet werden. Ein verfolgter Block muss eine Ausgabe der erstellten Klasse des Blocks aufweisen, damit die Verfolgung gültig ist.
Die Funktion CommonConstruct wird in Autodesk.AutoCAD.DynamoNodes.ObjectBase und Autodesk.AutoCAD.DynamoNodes.Object erstellt.
Autodesk.AutoCAD.DynamoNodes.ObjectBase | Autodesk.AutoCAD.DynamoNodes.Object |
---|---|
![]() |
![]() |
Sie können Klassen erstellen, um entweder Autodesk.AutoCAD.DynamoNodes.ObjectBase oder Autodesk.AutoCAD.DynamoNodes.Object zu übernehmen. Die obigen Methoden können aufgerufen werden, wenn Sie neue Blöcke entsprechend der übernommenen Beziehung erstellen. Beachten Sie beispielsweise den Block PointGroup.CreateFromPoints.
Der Block erstellt eine Punktgruppe in Civil 3D aus einer Liste von Punkten.
Autodesk.Civil.DatabaseServices.PointGroup definiert eine Punktgruppe in Civil 3D, die von Autodesk.AutoCAD.DatabaseServices.Object abgeleitet ist. Eine neue Klasse namens PointGroup, abgeleitet von Autodesk.AutoCAD.DynamoNodes.Objectbase, muss erstellt werden, um den Civil 3D-Punktgruppentyp zu ummanteln. Das Attribut DynamoServices.RegisterForTrace kann zur Klasse PointGroup hinzugefügt werden, um einen Verfolgungsmechanismus umzusetzen. Dies ist nicht erforderlich, da Dynamo vorgabemäßig Unterstützung dafür bietet. Allerdings ist es eine übliche Coding-Praxis.
Der Block CreateFromPoints kann jetzt in PointGroup definiert werden. Aufgrund der inhärenten Beziehung kann CommonConstruct in Autodesk.AutoCAD.DynamoNodes.ObjectBase aufgerufen werden.
Die TNode-Methode ist der Blocktyp und erforderlich, um Autodesk.AutoCAD.DynamoNodes.ObjectBase zu übernehmen.
TNode = CogoPoints.PointGroupTObject ist der Typ des AutoCAD-Objekts, der zur Übernahme von Autodesk.AutoCAD.DatabaseServices.DBObject erforderlich ist.
TObject = Autodesk.Civil.DatabaseServices.PointGroupDie Funktion objectCreator erstellt ein Objekt. In diesem Beispiel ist es definiert als das Erstellen einer neuen Punktgruppe.
Die Funktion objectUpdater aktualisiert ein Objekt. In diesem Beispiel ist es definiert als das Aktualisieren einer vorhandenen Punktgruppe.
Die Funktion CommonConstruct sucht vorhandene Objekte für die verfolgte Referenz. War die Suche erfolgreich, erfolgt das Update mit dem Aufruf objectUpdater über isExisting==true. Wenn die Aktualisierung fehlschlägt, führt objectCreator einen Aufruf durch, um ein neues Objekt zu erstellen. Dann ruft objectUpdater isExisting==false auf.
Die Funktion CommonConstruct versucht, bestehende Objekte in der Datenbank mit demselben verfolgten Referenzwert zu aktualisieren. Wenn dies fehlschlägt, wird ein neues Objekt erstellt. Wenn das Objekt die Aktualisierung nicht unterstützt, wird isExisting==false zurückgegeben. Das bedeutet, dass ein neues Objekt erstellt und das alte Objekt gelöscht wird. CommonConstruct versucht, auch in diesem Fall denselben Referenzwert beizubehalten.
Die vollständigen Beispielcodes werden in PointGroup.cs angezeigt, und die CommonConstruct-Methode in Autodesk.AutoCAD.DynamoNodes.Object ist wie oben beschrieben.
Mithilfe der folgenden Vorlage können Sie Verfolgungscode schreiben. Die Klasse für neue Blöcke muss jedoch trotzdem Autodesk.AutoCAD.DynamoNodes.Object oder Autodesk.AutoCAD.DynamoNodes.Entity übernehmen.
Sie können sowohl den Code zum Erstellen als auch den Code zum Aktualisieren ausfüllen, um den Verfolgungscode in der obigen Vorlage umzusetzen.
DocumentContext stellt sicher, dass die Dokumentsperre für den Lese-/Schreibzugriff auf die Datenbank und für eine Transaktion zum Öffnen von Datenbankobjekten abgerufen wird. Alle Blöcke, die Datenbankobjekte lesen oder schreiben, müssen die oben beschriebene Methode verwenden.