Crea nuevos nodos en Autodesk Dynamo para Civil 3D para crear puntos, añadir puntos a un grupo de puntos y crear una superficie a partir de un grupo de puntos.
Ejemplo de secuencia de comandos de Dynamo: CoGoPoints.dyn
Proyecto de ejemplo: CoGoPoints.dwg
Los nodos que se han creado al importar CoGoPoints.dll se muestran en la siguiente ilustración.
Se crean puntos COGO en el dibujo, se añaden a un grupo de puntos y se crea una superficie a partir del grupo de puntos.
![]() |
![]() |
Dynamo ofrece dos maneras de conseguir un mecanismo de rastreo. Una es utilizar el método existente (CommonConstruct) al crear nodos. La otra forma es escribir código de rastreo con una plantilla.
Para conseguir un mecanismo de rastreo para nodos nuevos, las clases deben derivarse de Autodesk.AutoCAD.DynamoNodes.ObjectBase o Autodesk.AutoCAD.DynamoNodes.Object. Un nodo rastreado debe tener una salida de la clase creada del nodo para hacer que el rastreo sea válido.
La función CommonConstruct se crea tanto en Autodesk.AutoCAD.DynamoNodes.ObjectBase como en Autodesk.AutoCAD.DynamoNodes.Object.
Autodesk.AutoCAD.DynamoNodes.ObjectBase | Autodesk.AutoCAD.DynamoNodes.Object |
---|---|
![]() |
![]() |
Puede crear clases para heredar Autodesk.AutoCAD.DynamoNodes.ObjectBase o Autodesk.AutoCAD.DynamoNodes.Object. Se puede llamar a los métodos anteriores al crear nuevos nodos según la relación heredada. Por ejemplo, observe el siguiente nodo PointGroup.CreateFromPoints.
El nodo crea un grupo de puntos en Civil 3D a partir de una lista de puntos.
Autodesk.Civil.DatabaseServices.PointGroup define un grupo de puntos en Civil 3D derivado de Autodesk.AutoCAD.DatabaseServices.Object. Debe crearse una clase nueva con el nombre PointGroup y que deriva de Autodesk.AutoCAD.DynamoNodes.Objectbase para encapsular el tipo de grupo de puntos de Civil 3D. Se puede añadir el atributo DynamoServices.RegisterForTrace a la clase PointGroup para conseguir un mecanismo de rastreo. No es imprescindible porque Dynamo lo admite por defecto, pero es una buena convención de codificación.
El nodo CreateFromPoints ahora puede definirse en PointGroup. Debido a la relación inherente, se puede llamar a CommonConstruct en Autodesk.AutoCAD.DynamoNodes.ObjectBase.
El método TNode es el tipo del nodo y es necesario para heredar Autodesk.AutoCAD.DynamoNodes.ObjectBase.
TNode = CogoPoints.PointGroupTObject es el tipo del objeto de AutoCAD necesario para heredar Autodesk.AutoCAD.DatabaseServices.DBObject.
TObject = Autodesk.Civil.DatabaseServices.PointGroupLa función objectCreator crea un objeto. En este ejemplo, se define como la creación de un nuevo grupo de puntos.
La función objectUpdater actualiza un objeto. En este ejemplo, se define como la actualización de un nuevo grupo de puntos existente.
La función CommonConstruct intenta encontrar los objetos existentes del identificador trazado. Si los encuentra, se actualiza con la llamada objectUpdater, con isExisting==true. Si falla la actualización, objectCreator llama para crear un objeto nuevo y, a continuación, objectUpdater llama a isExisting==false.
La función CommonConstruct intenta actualizar los objetos existentes de la base de datos con el mismo valor del identificador trazado. Si falla, creará un objeto. Si el objeto no admite actualizaciones, puede devolver isExisting==false. Esto implica que creará otro objeto y eliminará el anterior. CommonConstruct intentará mantener el mismo valor de identificador en este caso.
Los códigos de ejemplo completos se muestran en PointGroup.cs y el método CommonConstruct en Autodesk.AutoCAD.DynamoNodes.Object es tal como se ha descrito anteriormente.
Puede escribir código de rastreo con la siguiente plantilla. Sin embargo, la clase para los nuevos nodos aún necesita heredar Autodesk.AutoCAD.DynamoNodes.Object o Autodesk.AutoCAD.DynamoNodes.Entity.
Puede completar tanto el código de creación como el de actualización para conseguir el código de rastreo en la plantilla anterior.
DocumentContext garantiza que el bloqueo del documento se obtenga para acceso de lectura/escritura de la base de datos y al hacer una transacción para abrir los objetos de la base de datos. Cualquier nodo que quiera leer objetos de base de datos o escribir en ellos debe utilizar el método anterior.