Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Uno de los muchos y excelentes casos de uso de Dynamo es la colocación dinámica de objetos discretos a lo largo de un modelo de obra lineal. A menudo, es necesario colocar objetos en ubicaciones independientes de los ensamblajes insertados a lo largo de la obra lineal, lo que resulta una tarea muy tediosa de realizar manualmente. Y, cuando la geometría horizontal o vertical de la obra lineal cambia, esto suele ir acompañado de un importante trabajo de rectificación.
Lectura de datos de un archivo externo (en este caso, Excel)
Organización de datos en diccionarios
Uso de sistemas de coordenadas para controlar la posición/escala/rotación
Colocación de referencias a bloque
Visualización de geometría en Dynamo
Este gráfico se ejecutará en Civil 3D 2020 y versiones posteriores.
Descargue primero los archivos de ejemplo que aparecen a continuación y abra el archivo DWG y el gráfico de Dynamo.
Es preferible que el archivo de Excel se guarde en el mismo directorio que el gráfico de Dynamo.
A continuación, se ofrece una descripción general de la lógica de este gráfico.
Leer el archivo de Excel e importar los datos en Dynamo
Obtener líneas características de la línea base de obra lineal especificada
Generar sistemas de coordenadas a lo largo de la línea característica de obra lineal en los P.K. deseados
Utilizar los sistemas de coordenadas para colocar referencias a bloque en el espacio modelo
¡Empecemos!
En este gráfico de ejemplo, vamos a utilizar un archivo de Excel a fin de almacenar los datos que utilizará Dynamo para colocar las referencias a bloque de farolas. La tabla presenta el siguiente aspecto.
El uso de Dynamo para leer datos de un archivo externo (como un archivo de Excel) es una excelente estrategia, sobre todo, cuando los datos deben compartirse con otros miembros del equipo.
Los datos de Excel se importan en Dynamo de este modo.
Ahora que tenemos los datos, debemos dividirlos por columna (Corridor, Baseline, PointCode, etc.) para poder utilizarlos en el resto del gráfico. Para ello, lo habitual es utilizar el nodo List.GetItemAtIndex y especificar el número de índice de cada columna que deseemos. Por ejemplo, la columna Corridor se encuentra en el índice 0, la columna Baseline en el índice 1, etc.
Parece lógico, ¿verdad? Sin embargo, este planteamiento puede plantear un problema. ¿Qué ocurre si el orden de las columnas del archivo de Excel cambia en el futuro? ¿O se añade una nueva columna entre otras dos? En ese caso, el gráfico no funcionará correctamente y deberá actualizarse. Podemos preparar el gráfico para el futuro incluyendo los datos en un diccionario, con los encabezados de las columnas de Excel como claves y el resto de los datos como valores.
Si es la primera vez que utiliza estos diccionarios, consulte la sección Diccionarios en Dynamo.
Esto permite que el gráfico sea más flexible a la hora de cambiar el orden de las columnas en Excel. Mientras los encabezados de las columnas sigan siendo los mismos, los datos podrán recuperarse simplemente del diccionario mediante su clave (es decir, el encabezado de columna), que es lo que haremos a continuación.
Ahora que ya tenemos los datos de Excel importados y listos, empecemos a utilizarlos para obtener información de Civil 3D sobre los modelos de obra lineal.
Seleccione el modelo de obra lineal por su nombre.
Obtenga una línea base específica en la obra lineal.
Obtenga una línea característica dentro de la línea base mediante su código de punto.
Ahora vamos a generar sistemas de coordenadas a lo largo de las líneas características de obra lineal en los valores de P.K. especificados del archivo de Excel. Estos sistemas de coordenadas se utilizarán para definir la posición, la rotación y la escala de las referencias a bloque de las farolas.
Si es la primera vez que utiliza los sistemas de coordenadas, consulte la sección Vector, plano y sistema de coordenadas.
Observe aquí el uso de un bloque de código para rotar los sistemas de coordenadas en función del lado de la línea base en el que se encuentren. Esto podría lograrse mediante una secuencia de varios nodos, pero este es un buen ejemplo de una situación en la que es más fácil simplemente escribirlo.
Si es la primera vez que utiliza bloques de código, consulte la sección Bloques de código y DesignScript.
Ya casi hemos terminado. Disponemos de toda la información necesaria para poder colocar realmente las referencias a bloque. Lo primero que hay que hacer es obtener las definiciones de bloque que deseamos mediante la columna BlockName del archivo de Excel.
A continuación, el último paso es crear las referencias a bloque.
Al ejecutar el gráfico, deberían aparecer nuevas referencias a bloque en el espacio modelo a lo largo de la obra lineal. Y esta es la mejor parte: si el modo de ejecución del gráfico se ha establecido en Automático y edita el archivo de Excel, las referencias de bloque se actualizan automáticamente.
Puede obtener más información sobre los modos de ejecución de gráficos en la sección Interfaz de usuario.
A continuación, se muestra un ejemplo de cómo ejecutar el gráfico con el Reproductor de Dynamo.
Si es la primera vez que utiliza el Reproductor de Dynamo, consulte la sección Reproductor de Dynamo.
Puede resultar útil visualizar la geometría de obra lineal en Dynamo para ofrecer algo de contexto. Este modelo concreto incluye sólidos de obra lineal extraídos en el espacio modelo, por lo que vamos a incorporarlos en Dynamo.
Sin embargo, hay algo más que debemos tener en cuenta. Los sólidos son un tipo de geometría relativamente "pesado", lo que significa que esta operación ralentizará el gráfico. Se agradecería que hubiera una forma sencilla de elegir si deseamos ver los sólidos o no. La respuesta obvia es simplemente desconectar el nodo Corridor.GetSolids, pero eso generará advertencias para todos los nodos posteriores, lo que resulta algo lioso. Esta es una situación en la que el nodo ScopeIf realmente es de gran utilidad.
Observe que el nodo Object.Geometry presenta una barra gris en la parte inferior. Esto significa que la vista preliminar del nodo está desactivada (para acceder a ella, haga clic con el botón derecho en el nodo), lo que permite que GeometryColor.ByGeometryColor evite entrar en conflicto con otra geometría para obtener prioridad de visualización en la vista preliminar en segundo plano.
El nodo ScopeIf permite básicamente ejecutar de forma selectiva una ramificación completa de nodos. Si la entrada test se ha establecido en "falso", no se ejecutará ningún nodo conectado al nodo ScopeIf.
Este es el resultado de la vista preliminar en segundo plano de Dynamo.
A continuación, se ofrecen algunas ideas sobre cómo podría ampliar las posibilidades de este gráfico.
Añada una columna de rotación al archivo de Excel y utilícela para controlar la rotación de los sistemas de coordenadas.
Añada desfases horizontales o verticales al archivo de Excel para que las farolas puedan desviarse de la línea característica de obra lineal si es necesario.
En lugar de utilizar un archivo de Excel con valores de P.K., genere estos valores directamente en Dynamo mediante un P.K. inicial y una separación típica.
Coloque referencias a bloque de farolas a lo largo de una obra lineal en los valores de P.K. especificados de un archivo de Excel.
¡Misión cumplida!
El diseño de ingeniería de una construcción de viviendas típica implica trabajar con varios servicios subterráneos, como el alcantarillado sanitario, el desagüe pluvial, el agua potable u otros. En este ejemplo se mostrará cómo puede utilizarse Dynamo para trazar las conexiones de servicios desde una red de distribución hasta una parcela (es decir, un terreno) especificada. Es habitual que cada parcela requiera una conexión de servicios, lo que supone un trabajo considerablemente tedioso para colocar todos ellos. Dynamo puede agilizar el proceso al dibujar automáticamente la geometría necesaria con precisión, además de proporcionar entradas flexibles que pueden ajustarse para adaptarse a las normas de los organismos locales.
Uso del nodo Select Object para la entrada de usuario
Trabajo con sistemas de coordenadas
Uso de operaciones geométricas como Geometry.DistanceTo y Geometry.ClosestPointTo
Creación de referencias a bloque
Control de la configuración de enlace de objetos
Este gráfico se ejecutará en Civil 3D 2020 y versiones posteriores.
Descargue primero los archivos de ejemplo que aparecen a continuación y abra el archivo DWG y el gráfico de Dynamo.
A continuación, se ofrece una descripción general de la lógica de este gráfico.
Obtener la geometría de curva para la red de distribución
Obtener la geometría de curva para una línea de parcela seleccionada por el usuario, invirtiéndola si es necesario
Generar los puntos de inserción para los contadores de servicio
Obtener los puntos de la red de distribución más cercanos a las ubicaciones de los contadores de servicio
Crear referencias a bloque y líneas en el espacio modelo
¡Empecemos!
Nuestro primer paso es introducir en Dynamo la geometría de la red de distribución. En lugar de seleccionar líneas o polilíneas individuales, utilizaremos todos los objetos de una determinada capa y los uniremos como una PolyCurve de Dynamo.
Si es la primera vez que utiliza la geometría de curvas de Dynamo, consulte la sección Curvas.
A continuación, debemos obtener la geometría de una línea de parcela seleccionada en Dynamo para poder trabajar con ella. La herramienta adecuada para la tarea es el nodo Select Object, que permite al usuario del gráfico seleccionar un objeto específico en Civil 3D.
También debemos ocuparnos de los posibles problemas que puedan surgir. La línea de parcela tiene un punto inicial y uno final, lo que significa que tiene una dirección. Para que el gráfico genere resultados coherentes, necesitamos que todas las líneas de parcela tengan una dirección coherente. Podemos dar cuenta de esta condición directamente en la lógica del gráfico, lo que hace que este sea más flexible.
Obtenga los puntos inicial y final de la línea de parcela.
Mida la distancia de cada punto a la red de distribución y, a continuación, calcule la distancia que sea mayor.
El resultado deseado es que el punto inicial de la línea sea el más cercano a la red de distribución. Si no es así, invertiremos la dirección de la línea de parcela. En caso contrario, simplemente restableceremos la línea de parcela original.
Es hora de decidir dónde se van a colocar los contadores de servicio. Por lo general, la colocación viene determinada por los requisitos de los organismos locales, por lo que nos limitaremos a proporcionar valores de entrada que puedan modificarse para adaptarlos a las distintas situaciones. Vamos a utilizar un sistema de coordenadas a lo largo de la línea de parcela como referencia para crear los puntos. Esto facilita la definición de desfases en relación con la línea de parcela, independientemente de su orientación.
Si es la primera vez que utiliza los sistemas de coordenadas, consulte la sección Vector, plano y sistema de coordenadas.
Ahora debemos obtener los puntos de la red de distribución más cercanos a las ubicaciones de los contadores de servicio. Esto nos permitirá dibujar las conexiones de servicios en el espacio modelo de forma que sean siempre perpendiculares a la red de distribución. El nodo Geometry.ClosestPointTo es la solución perfecta.
Esta es la PolyCurve de la red de distribución.
Estos son los puntos de inserción del contador de servicio.
El último paso consiste en crear objetos en el espacio modelo. Utilizaremos los puntos de inserción que hemos generado anteriormente para crear referencias a bloque y, a continuación, usaremos los puntos de la red de distribución para dibujar líneas en las conexiones de servicios.
Al ejecutar el gráfico, debe ver las nuevas referencias a bloque y las líneas de conexión de servicios en el espacio modelo. Pruebe a cambiar algunas de las entradas y observe cómo todo se actualiza automáticamente.
Tras colocar los objetos para una línea de parcela, puede que observe que los objetos se "desplazan" al seleccionar una línea diferente.
Este es el comportamiento por defecto de Dynamo y es muy útil en muchos casos. Sin embargo, puede que desee colocar varias conexiones de servicios de forma secuencial y que Dynamo cree nuevos objetos con cada ejecución en lugar de modificar los originales. Cambie la configuración de enlace de objetos para controlar este comportamiento.
Para obtener más información, consulte la sección Enlace de objetos.
Al cambiar esta configuración, se obligará a Dynamo a "olvidar" los objetos que crea con cada ejecución. A continuación, se muestra un ejemplo de ejecución del gráfico con el enlace de objetos desactivado mediante el Reproductor de Dynamo.
Si es la primera vez que utiliza el Reproductor de Dynamo, consulte la sección Reproductor de Dynamo.
A continuación, se ofrecen algunas ideas sobre cómo podría ampliar las posibilidades de este gráfico.
Coloque varias conexiones de servicios simultáneamente en lugar de seleccionar cada línea de parcela.
Ajuste las entradas para colocar bocas de alcantarilla en lugar de contadores de servicio de agua.
Añada un conmutador para permitir la colocación de una única conexión de servicio en un lado concreto de la línea de parcela en lugar de en ambos lados.
Coloque las referencias a bloque de contadores de servicios de agua a una distancia determinada de la línea de parcela y trace una línea para cada conexión de servicios perpendicular a la red de distribución.
¡Misión cumplida!
Aunque Dynamo se creó originalmente con Revit en mente, su versatilidad como herramienta de programación visual se extiende más allá de esta solución. Dynamo también está integrado en Civil 3D, lo que permite a los usuarios crear eficaces rutinas de automatización para proyectos de infraestructuras civiles. Se trata de una herramienta extremadamente útil para procesar desde tareas habituales hasta los flujos de trabajo de diseño más complejos, lo que le ayudará en última instancia a ahorrar tiempo, optimizar sus diseños y tomar mejores decisiones al respecto. Dynamo ofrece todo un conjunto de nodos diseñados específicamente para Civil 3D, así como bibliotecas de terceros procedentes de una floreciente comunidad de usuarios.
Este capítulo del manual de introducción, se centrará en Dynamo for Civil 3D, desde lo más básico hasta temas más avanzados.
Con el tiempo, puede que necesite ir más allá de los conceptos básicos y profundizar en el funcionamiento interno de Dynamo. Las páginas de esta sección le proporcionarán un esquema para descubrir las funciones avanzadas de Dynamo for Civil 3D a fin de que pueda llevar sus gráficos al siguiente nivel.
Al añadir tuberías y estructuras a una red de tuberías, Civil 3D utiliza una plantilla para asignar nombres automáticamente. Por lo general, esto es suficiente durante la colocación inicial, pero inevitablemente los nombres tendrán que cambiar en el futuro a medida que evolucione el diseño. Además, hay muchos patrones de nomenclatura diferentes que podrían ser necesarios, por ejemplo, denominar las estructuras de forma secuencial dentro de un tramo de tuberías empezando por la estructura más alejada aguas abajo o seguir un patrón de nomenclatura que se ajuste al esquema de datos de un organismo local. En este ejemplo, se muestra cómo se puede utilizar Dynamo para definir cualquier tipo de estrategia de nomenclatura y aplicarla de forma coherente.
Trabajo con cuadros delimitadores
Filtrado de datos mediante el nodo List.FilterByBoolMask
Ordenación de los datos mediante el nodo List.SortByKey
Generación y modificación de cadenas de texto
Este gráfico se ejecutará en Civil 3D 2020 y versiones posteriores.
Descargue primero los archivos de ejemplo que aparecen a continuación y abra el archivo DWG y el gráfico de Dynamo.
A continuación, se ofrece una descripción general de la lógica de este gráfico.
Seleccionar las estructuras por capa
Obtener las ubicaciones de estructuras
Filtrar las estructuras por desfase y, a continuación, ordenarlas por P.K.
Generar los nuevos nombres
Renombrar las estructuras
¡Empecemos!
Lo primero que debemos hacer es seleccionar todas las estructuras con las que tenemos previsto trabajar. Para ello, basta con seleccionar todos los objetos de una capa determinada, lo que significa que podemos seleccionar estructuras de diferentes redes de tuberías (siempre que compartan la misma capa).
Este nodo garantiza que no se recuperarán accidentalmente los tipos de objeto no deseados que puedan compartir la misma capa que las estructuras.
Ahora que disponemos de las estructuras, tenemos que averiguar su posición en el espacio para poder ordenarlas según su ubicación. Para ello, utilizaremos el cuadro delimitador de cada objeto. El cuadro delimitador de un objeto es el cuadro de tamaño mínimo que contiene por completo la extensión geométrica del objeto. Al calcular el centro del cuadro delimitador, obtenemos una aproximación bastante precisa del punto de inserción de la estructura.
Utilizaremos estos puntos para obtener el P.K. y el desfase de las estructuras con respecto a una alineación seleccionada.
Aquí es donde las cosas empiezan a ponerse un poco complicadas. En esta fase, tenemos una gran lista de todas las estructuras de la capa que hemos especificado y elegimos una alineación por la que deseamos ordenarlas. El problema es que puede haber estructuras en la lista que no deseamos cambiar de nombre. Por ejemplo, es posible que no formen parte del tramo concreto que nos interesa.
La alineación seleccionada
Las estructuras que deseamos renombrar
Las estructuras que se deben ignorar
Por lo tanto, debemos filtrar la lista de estructuras para que no se tengan en cuenta las que superen un determinado desfase con respecto a la alineación. La mejor forma de conseguirlo es mediante el nodo List.FilterByBoolMask. Después de filtrar la lista de estructuras, utilizamos el nodo List.SortByKey para ordenarlas por sus valores de P.K.
Si es la primera vez que trabaja con listas, consulte la sección Trabajo con listas.
Compruebe si el desfase de la estructura es menor que el valor del umbral.
Sustituya cualquier valor nulo por false (falso).
Filtre la lista de estructuras y P.K.
Ordene las estructuras por P.K.
La última parte del trabajo consiste en crear los nuevos nombres de las estructuras. El formato que usaremos es <alignment name>-STRC-<number>
. Aquí hay algunos nodos más para rellenar los números con ceros adicionales si se desea (por ejemplo, "01" en lugar de "1").
Y, por último, pero no por ello menos importante, cambiamos el nombre de las estructuras.
A continuación, se muestra un ejemplo de cómo ejecutar el gráfico con el Reproductor de Dynamo.
Si es la primera vez que utiliza el Reproductor de Dynamo, consulte la sección Reproductor de Dynamo.
Puede ser útil aprovechar la vista preliminar 3D en segundo plano de Dynamo para visualizar las salidas intermedias del gráfico en lugar de solo el resultado final. Algo fácil que podemos hacer es visualizar los cuadros delimitadores de las estructuras. Además, este conjunto de datos concreto tiene una obra lineal en el documento, por lo que podemos incorporar la geometría de línea característica de obra lineal en Dynamo para proporcionar contexto en relación con la ubicación de las estructuras en el espacio. Si el gráfico se utiliza en un conjunto de datos sin obras lineales, estos nodos no harán nada.
Ahora podemos entender mejor cómo funciona el proceso de filtrado de las estructuras por desfase.
A continuación, se ofrecen algunas ideas sobre cómo podría ampliar las posibilidades de este gráfico.
Cambie el nombre de las estructuras en función de su alineación más cercana en lugar de seleccionar una alineación específica.
Cambie el nombre de las tuberías, además del de las estructuras.
Establezca las capas de las estructuras en función del tramo.
Ahora que ya sabe un poco más sobre el panorama general, vamos a empezar a crear el primer gráfico de Dynamo en Civil 3D.
Este es un ejemplo sencillo que pretende demostrar la funcionalidad básica de Dynamo. Es recomendable seguir los pasos descritos en un nuevo documento vacío de Civil 3D.
Lo primero que debe hacer es abrir un documento vacío en Civil 3D. Una vez allí, vaya a la ficha Administrar de la cinta de opciones de Civil 3D y busque el grupo Programación visual.
Haga clic en el botón Dynamo, que iniciará Dynamo en una ventana independiente.
¿Cuál es la diferencia entre Dynamo y el Reproductor de Dynamo?
Dynamo es la herramienta que se utiliza para crear y ejecutar gráficos. El Reproductor de Dynamo permite ejecutar fácilmente gráficos sin tener que abrirlos en Dynamo.
Vaya a la sección Reproductor de Dynamo cuando desee probarlo.
Una vez que Dynamo esté abierto, aparecerá la pantalla de inicio. Haga clic en Nuevo para abrir un espacio de trabajo en blanco.
¿Y los ejemplos?
Dynamo for Civil 3D incluye algunos gráficos prediseñados que pueden servirle de inspiración para otras ideas sobre cómo usar Dynamo. Es recomendable que les eche un vistazo en algún momento, así como a los Flujos de trabajo de ejemplo aquí en el manual de introducción.
Ahora debería aparecer un espacio de trabajo vacío. Vamos a ver Dynamo en acción. Este es nuestro objetivo:
Muy sencillo, ¿verdad? Sin embargo, antes de empezar, debemos abordar algunos aspectos fundamentales.
Los componentes básicos de un gráfico de Dynamo se denominan nodos. Un nodo es como una pequeña máquina; se le introducen datos, realiza algún trabajo con ellos y genera un resultado. Dynamo for Civil 3D cuenta con una biblioteca de nodos que se pueden conectar mediante cables para formar un gráfico que realiza tareas más eficaces y de mayor tamaño que las que puede realizar un nodo por sí solo.
Espere... ¿Y si nunca he utilizado Dynamo?
Puede que algunos de estos conceptos le resulten bastante nuevos, pero no se preocupe. Estas secciones le ayudarán a ponerse al día.
Interfaz de usuario Nodos y cables Nodos y conceptos básicos
Ahora, vamos a crear el gráfico. Aquí hay una lista de todos los nodos que necesitaremos.
Para encontrar estos nodos, escriba sus nombres en la barra de búsqueda de la biblioteca o haga clic con el botón derecho en cualquier lugar del lienzo y realice allí la búsqueda.
¿Cómo puedo saber qué nodos utilizar y dónde encontrarlos?
Los nodos de la biblioteca se agrupan en categorías lógicas según su finalidad. Consulte la sección Biblioteca de nodos para realizar un recorrido más detallado.
El gráfico final debería presentar el siguiente aspecto.
Resumamos todo lo que hemos hecho aquí:
Hemos elegido el documento en el que se va a trabajar. En este caso (y en la mayoría), deseamos trabajar en el documento activo de Civil 3D.
Hemos definido el bloque de destino en el que se debe crear el objeto de texto (en este caso, el espacio modelo).
Se ha utilizado un nodo String para especificar la capa en la que se debe colocar el texto.
Se ha creado un punto mediante el nodo Point.ByCoordinates para definir la posición en la que se debe colocar el texto.
Se han definido las coordenadas X e Y del punto de inserción de texto mediante dos nodos Number Slider.
Se ha utilizado otro nodo String para definir el contenido del objeto de texto.
Y, por último, hemos creado el objeto de texto.
Veamos los resultados de nuestro nuevo y reluciente gráfico.
De nuevo en Civil 3D, asegúrese de que la ficha Modelo esté seleccionada. Debería ver el nuevo objeto de texto que ha creado Dynamo.
Si no aparece el texto, es posible que deba ejecutar el comando ZOOM -> EXTENSIÓN para ampliar la vista del espacio correcto.
¡Fantástico! Ahora vamos a realizar algunas mejoras en el texto.
De vuelta en el gráfico de Dynamo, cambie algunos de los valores de entrada, como la cadena de texto, las coordenadas del punto de inserción, etc. Debería observar cómo se actualiza automáticamente el texto en Civil 3D. Observe también que si desconecta uno de los puertos de entrada, se elimina el texto. Si vuelve a conectar todo, el texto se crea de nuevo.
¿Por qué Dynamo no inserta un nuevo objeto de texto cada vez que se ejecuta el gráfico?
Por defecto, Dynamo "recordará" los objetos que crea. Si cambia los valores de entrada del nodo, los objetos de Civil 3D se actualizan en lugar de crear objetos nuevos. Obtenga más información sobre este comportamiento en la sección Enlace de objetos.
Este ejemplo es apenas una pequeña muestra de lo que puede hacer con Dynamo for Civil 3D. Siga leyendo para obtener más información.
Anteriormente, hemos mencionado que los nodos son los componentes básicos de un gráfico de Dynamo y que se organizan en grupos lógicos en la biblioteca. En Dynamo for Civil 3D, hay dos categorías (o estantes) de la biblioteca que contienen nodos específicos para trabajar con objetos de AutoCAD y Civil 3D, como alineaciones, perfiles, obras lineales, referencias a bloque, etc. El resto de la biblioteca contiene nodos de naturaleza más genérica y coherentes entre todas las "versiones" de Dynamo (por ejemplo, Dynamo para Revit, Dynamo Sandbox, etc.).
Consulte la sección Biblioteca para obtener más información sobre la organización de los nodos de la biblioteca principal de Dynamo.
Nodos específicos para trabajar con objetos de AutoCAD y Civil 3D
Nodos de uso general
Nodos de paquetes de terceros que se pueden instalar por separado
Al utilizar los nodos que se encuentran en los estantes de AutoCAD y Civil 3D, el gráfico de Dynamo solo funcionará en Dynamo for Civil 3D. Si se abre un gráfico de Dynamo for Civil 3D en otra ubicación (por ejemplo, en Dynamo para Revit), estos nodos se marcarán con una advertencia y no se ejecutarán.
¿Por qué hay dos estantes independientes para AutoCAD y Civil 3D?
Esta organización distingue los nodos de los objetos nativos de AutoCAD (líneas, polilíneas, referencias a bloque, etc.) de los nodos de los objetos de Civil 3D (alineaciones, obras lineales, superficies, etc.). Desde el punto de vista técnico, AutoCAD y Civil 3D son dos componentes independientes; AutoCAD es la aplicación principal y Civil 3D se basa en ella.
Para trabajar con los nodos de AutoCAD y Civil 3D, es importante conocer a fondo la jerarquía de objetos dentro de cada estante. ¿Recuerda la taxonomía de la biología? Reino, phylum, clase, orden, familia, género y especie. Los objetos de AutoCAD y Civil 3D se organizan de forma similar. Veamos algunos ejemplos para explicarlo.
Vamos a utilizar una alineación como ejemplo.
Supongamos que su objetivo es cambiar el nombre de la alineación. A partir de aquí, el siguiente nodo que añadiría es CivilObject.SetName.
Al principio, es posible que esto parezca algo lioso. ¿Qué es un CivilObject y por qué la biblioteca no tiene un nodo Alignment.SetName? La respuesta está relacionada con la reutilización y la simplicidad. Si lo piensa, el proceso de cambio de nombre de un objeto de Civil 3D es el mismo tanto si se trata de una alineación, una obra lineal, un perfil o cualquier otro elemento. Por lo tanto, en lugar de tener nodos repetitivos que básicamente hacen lo mismo (por ejemplo, Alignment.SetName, Corridor.SetName, Profile.SetName, etc.), sería conveniente asignar esa funcionalidad a un solo nodo. Eso es exactamente lo que hace CivilObject.SetName.
Otra forma de enfocar esto es en términos de relaciones. Una alineación y una obra lineal son tipos de objetos de Civil, del mismo modo que una manzana y una pera son tipos de fruta. Al igual que usa un único pelador para pelar tanto una manzana como una pera, los nodos de objetos de Civil se aplican a cualquier objeto de este tipo. ¡Lo desordenada que estaría su cocina si tuviera un pelador distinto para cada tipo de fruta! En ese sentido, la biblioteca de nodos de Dynamo es igual que su cocina.
Ahora, vamos a dar un paso más allá. Supongamos que desea cambiar la capa de la alineación. Se utilizará el nodo Object.SetLayer.
¿Por qué no hay un nodo denominado CivilObject.SetLayer? Aquí se aplican los mismos principios de reutilización y simplicidad que hemos analizado anteriormente. La propiedad layer es común a cualquier objeto de AutoCAD que se pueda dibujar o insertar, como una línea, una polilínea, texto, una referencia a bloque, etc. Los objetos de Civil 3D como alineaciones y obras lineales se encuentran en la misma categoría, por lo que cualquier nodo que se aplique a un objeto también se puede utilizar con cualquier objeto de Civil.
Dynamo for Civil 3D lleva el paradigma de la programación visual a los ingenieros y los diseñadores que trabajan en proyectos de infraestructuras civiles. Puede pensar en Dynamo como una especie de "navaja suiza" digital para los usuarios de Civil 3D; sea cual sea la tarea, dispone de la herramienta adecuada para el trabajo. Su intuitiva interfaz le permite crear rutinas eficaces y personalizables sin necesidad de escribir una sola línea de código. No necesita ser programador para utilizar Dynamo, pero sí debe ser capaz de pensar con la lógica de un programador. Junto con los demás capítulos del manual de introducción, este le ayudará a desarrollar sus habilidades lógicas para que pueda abordar cualquier tarea con una mentalidad de diseño computacional.
Dynamo se introdujo por primera vez en Civil 3D 2020 y ha seguido evolucionando desde entonces. En un principio, se instalaba por separado mediante una actualización de software, pero ahora viene incluido con todas las versiones de Civil 3D. En función de la versión de Civil 3D que esté utilizando, es posible que observe que la interfaz de Dynamo presenta un aspecto ligeramente distinto al de los ejemplos que aparecen en este capítulo. Esto se debe a que se ha realizado una revisión significativa de la interfaz en Civil 3D 2023.
Es recomendable que consulte el blog de Dynamo para obtener la información más actualizada sobre el desarrollo de esta herramienta. En la tabla siguiente, se resumen los principales hitos en la trayectoria de Dynamo for Civil 3D.
Dynamo for Civil 3D contiene un mecanismo muy eficaz para "recordar" los objetos que crea cada nodo. Este mecanismo se denomina Enlace de objetos y permite que un gráfico de Dynamo genere resultados coherentes cada vez que se ejecuta en el mismo documento. Aunque esto es muy deseable en muchas situaciones, hay otras en las que es posible que desee tener más control sobre el comportamiento de Dynamo. Esta sección le ayudará a comprender cómo funciona el enlace de objetos y cómo puede aprovecharlo.
Observe este gráfico que crea un círculo en el espacio modelo de la capa actual.
Observe lo que sucede cuando se cambia el radio.
Esto es un enlace de objetos en acción. El comportamiento por defecto de Dynamo es modificar el radio del círculo en lugar de crear un nuevo círculo cada vez que se modifica la entrada del radio. Esto se debe a que el nodo Object.ByGeometry "recuerda" que crea este círculo específico cada vez que se ejecuta el gráfico. Además, Dynamo guardará esta información para que la próxima vez que abra el documento de Civil 3D y ejecute el gráfico, este presente exactamente el mismo comportamiento.
Veamos un ejemplo en el que puede que desee cambiar el comportamiento por defecto de enlace de objetos de Dynamo. Supongamos que desea crear un gráfico que coloque texto en el centro de un círculo. Sin embargo, lo que pretende con este gráfico es que pueda ejecutarse una y otra vez, y colocar cada vez un nuevo texto para cualquier Círculo que se seleccione. Este es el aspecto que presentaría el gráfico.
Sin embargo, esto es lo que sucede realmente cuando se selecciona un círculo diferente.
Tras realizar ese cambio, obtenemos el comportamiento que buscamos.
Dynamo for Civil 3D permite modificar el comportamiento por defecto de enlace de objetos a través de los parámetros de Almacenamiento de datos de enlace en el menú de Dynamo.
Tenga en cuenta que las opciones de almacenamiento de datos de enlace están disponibles en Civil 3D 2022.1 y versiones posteriores.
Todas las opciones están activadas por defecto. A continuación, se resumen las acciones de cada opción.
Si esta opción está activada, Dynamo "olvidará" los objetos que creó la última vez que se ejecutó el gráfico. De este modo, el gráfico puede ejecutarse en cualquier dibujo y situación, y creará nuevos objetos cada vez.
Cuándo utilizar esta opción
Utilice esta opción cuando desee que Dynamo "olvide" todo lo que ha realizado en ejecuciones anteriores y cree nuevos objetos cada vez.
Esta opción permite serializar los metadatos de enlace de objetos en el gráfico (archivo .dyn) al guardarlo. Si cierra o vuelve a abrir el gráfico y lo ejecuta en el mismo dibujo, todo debería funcionar igual que lo dejó. Si ejecuta el gráfico en un dibujo diferente, los datos de enlace se eliminarán del gráfico y se crearán nuevos objetos. Esto significa que, si abre el dibujo original y vuelve a ejecutar el gráfico, se crearán nuevos objetos, además de los antiguos.
Cuándo utilizar esta opción
Utilice esta opción cuando desee que Dynamo "recuerde" los objetos que creó la última vez que se ejecutó en un dibujo específico.
Esta opción es la más adecuada para situaciones en las que es posible mantener una relación de 1:1 entre un dibujo específico y un gráfico de Dynamo. Las opciones 1 y 3 son más idóneas para gráficos diseñados para ejecutarse en varios dibujos.
Es similar a la opción 2, salvo que los datos de enlace de objetos se serializan en el dibujo en lugar de en el gráfico (archivo .dyn). Si cierra o vuelve a abrir el gráfico y lo ejecuta en el mismo dibujo, todo debería funcionar igual que lo dejó. Si ejecuta el gráfico en un dibujo diferente, los datos de enlace se conservan en el dibujo original, ya que se guardan en el dibujo y no en el gráfico.
Cuándo utilizar esta opción
Utilice esta opción cuando desee utilizar el mismo gráfico en varios dibujos y conseguir que Dynamo "recuerde" lo que realizó en cada uno de ellos.
Lo primero que hay que tener en cuenta con esta opción es que no afecta al modo en que el gráfico interactúa con el dibujo cuando se ejecuta el gráfico a través de la interfaz principal de Dynamo. Esta opción solo se aplica cuando el gráfico se ejecuta con el Reproductor de Dynamo.
Si ejecuta el gráfico mediante la interfaz principal de Dynamo y, a continuación, cierra y ejecuta el mismo gráfico mediante el Reproductor de Dynamo, este creará nuevos objetos sobre los que creó anteriormente. Sin embargo, una vez que el Reproductor de Dynamo haya ejecutado el gráfico una vez, serializará los datos de enlace de objetos en el dibujo. Por lo tanto, si ejecuta el gráfico varias veces a través del Reproductor de Dynamo, este actualizará los objetos en lugar de crear otros nuevos. Si ejecuta el gráfico a través del Reproductor de Dynamo en un dibujo diferente, los datos de enlace seguirán conservándose en el dibujo original, ya que se guardan en el dibujo y no en el gráfico.
Cuándo utilizar esta opción
Utilice esta opción cuando desee ejecutar un gráfico con el Reproductor de Dynamo en varios dibujos y que este "recuerde" lo que realizó en cada uno de ellos.
Carreteras, ferrocarriles, terrenos, servicios públicos, topografía, GIS...
La infraestructura civil es todo esto y más. Esta sección contiene varios gráficos de ejemplo útiles y prácticos que le ayudarán a alcanzar pleno dominio de Dynamo y a descubrir todo el potencial de Dynamo for Civil 3D. Cada gráfico se completa con descripciones detalladas de la lógica que se empleó para crearlo, de modo que no solo pueda utilizarlo, sino también comprenderlo.
Además, estos ejemplos encarnan prácticas recomendadas de eficacia probada para crear gráficos útiles. A medida que trabaje con los ejemplos, le animamos a familiarizarse con la sección de para obtener más ideas sobre cómo crear gráficos eficaces, flexibles y manejables.
Trabajar con puntos COGO y grupos de puntos en Civil 3D es un elemento central de muchos procesos de campo al dibujo terminado. Dynamo destaca realmente cuando se trata de la gestión de datos y, en este ejemplo, le mostraremos un posible caso de uso.
Trabajo con listas
Agrupación de objetos similares con el nodo List.GroupByKey
Visualización de la salida personalizada en el Reproductor de Dynamo
Este gráfico se ejecutará en Civil 3D 2020 y versiones posteriores.
Descargue primero los archivos de ejemplo que aparecen a continuación y abra el archivo DWG y el gráfico de Dynamo.
A continuación, se ofrece una descripción general de la lógica de este gráfico.
Obtener todos los puntos COGO del documento
Agrupar puntos COGO por descripción
Crear grupos de puntos
Generar un resumen en el Reproductor de Dynamo
¡Empecemos!
El primer paso consiste en obtener todos los grupos de puntos del documento y, a continuación, todos los puntos COGO dentro de cada grupo. Esto nos proporcionará una lista anidada o una "lista de listas", con las que será más fácil trabajar más adelante si aplanamos todo hasta una sola lista con el nodo List.Flatten.
Ahora que tenemos todos los puntos COGO, debemos separarlos en grupos en función de sus descripciones. Esto es exactamente lo que hace el nodo List.GroupByKey. Básicamente, agrupa todos los elementos que comparten la misma clave.
Ya se ha completado la parte más complicada. El último paso consiste en crear nuevos grupos de puntos de Civil 3D a partir de los puntos COGO agrupados.
Al ejecutar el gráfico, no hay nada que ver en la vista preliminar en segundo plano de Dynamo porque no estamos trabajando con ninguna geometría. Por lo tanto, la única forma de ver si el gráfico se ha ejecutado correctamente es comprobar el espacio de herramientas o echar un vistazo a las vistas preliminares de salida de los nodos. Sin embargo, si ejecutamos el gráfico con el Reproductor de Dynamo, podemos proporcionar más información sobre los resultados del gráfico mediante un resumen de los grupos de puntos que se han creado. Solo hay que hacer clic con el botón derecho en un nodo y establecerlo en Se genera. En este caso, se utiliza un nodo Watch renombrado para ver los resultados.
A continuación, se muestra un ejemplo de cómo ejecutar el gráfico con el Reproductor de Dynamo.
A continuación, se ofrecen algunas ideas sobre cómo podría ampliar las posibilidades de este gráfico.
Modifique la agrupación de puntos para que se base en la descripción completa en lugar del código original.
Agrupe los puntos por otras categorías predefinidas que elija (por ejemplo, "instantáneas del terreno", "monumentos", etc.)
Cree automáticamente superficies TIN para puntos de determinados grupos.
El desarrollo de envolventes cinemáticos para la validación de la separación es una parte importante del diseño de ferrocarriles. Dynamo se puede utilizar para generar sólidos para el envolvente en lugar de crear y administrar subensamblajes de obra lineal complejos para realizar el trabajo.
Trabajo con líneas características de obra lineal
Transformación de la geometría entre sistemas de coordenadas
Creación de sólidos mediante solevación
Control del comportamiento de los nodos con parámetros de encaje
Este gráfico se ejecutará en Civil 3D 2020 y versiones posteriores.
Descargue primero los archivos de ejemplo que aparecen a continuación y abra el archivo DWG y el gráfico de Dynamo.
A continuación, se ofrece una descripción general de la lógica de este gráfico.
Obtener líneas características de la línea base de obra lineal especificada
Generar sistemas de coordenadas a lo largo de la línea característica de obra lineal con la separación deseada
Transformar la geometría de bloque de perfil en sistemas de coordenadas
Solevar un sólido entre los perfiles
Crear los sólidos en Civil 3D
¡Empecemos!
El primer paso es obtener datos de obra lineal. Seleccionaremos el modelo de obra lineal por su nombre, obtendremos una línea base específica dentro de la obra lineal y, a continuación, conseguiremos una línea característica dentro de la línea base por su código de punto.
Ahora vamos a generar sistemas de coordenadas a lo largo de las líneas características de obra lineal entre un P.K. inicial y uno final especificados. Estos sistemas de coordenadas se utilizarán para alinear la geometría de bloque del perfil del vehículo con la obra lineal.
Observe el pequeño XXX en la esquina inferior derecha del nodo. Esto significa que los parámetros de encaje del nodo se han definido como Producto vectorial, lo que es necesario para generar los sistemas de coordenadas con los mismos valores de P.K. para ambas líneas características.
Ahora tenemos que crear de alguna manera una matriz de los perfiles de los vehículos a lo largo de las líneas características. Lo que vamos a hacer es transformar la geometría desde la definición de bloque del perfil del vehículo mediante el nodo Geometry.Transform. Se trata de un concepto difícil de visualizar, así que antes de ver los nodos, he aquí un gráfico que muestra lo que va a ocurrir.
En definitiva, lo que hacemos es utilizar la geometría de Dynamo de una única definición de bloque y desplazarla o rotarla, a la vez que creamos una matriz a lo largo de la línea característica. ¡Increíble! A continuación, se muestra el aspecto de la secuencia de nodos.
De esta forma, se obtiene la definición de bloque del documento.
Estos nodos obtienen la geometría de Dynamo de los objetos del bloque.
Estos nodos definen básicamente el sistema de coordenadas desde el que se está transformando la geometría.
Y, por último, este nodo realiza el trabajo real de transformar la geometría.
Observe el encaje más largo en este nodo.
Y esto es lo que obtenemos en Dynamo.
¡Buenas noticias! Ya se ha completado la parte más complicada. Ahora solo tenemos que generar sólidos entre los perfiles. Esto se consigue fácilmente con el nodo Solid.ByLoft.
Este es el resultado. Recuerde que estos son sólidos de Dynamo; aún debemos crearlos en Civil 3D.
El último paso es generar los sólidos en el espacio modelo. También les asignaremos un color para que sean fáciles de ver.
A continuación, se muestra un ejemplo de cómo ejecutar el gráfico con el Reproductor de Dynamo.
A continuación, se ofrecen algunas ideas sobre cómo podría ampliar las posibilidades de este gráfico.
Añada la capacidad de utilizar diferentes intervalos de P.K. por separado para cada vía.
Divida los sólidos en segmentos más pequeños que se puedan analizar individualmente para detectar conflictos.
Compruebe si los sólidos de envolvente se intersecan con elementos y coloree aquellos que entren en conflicto.
Cambie el nombre de las estructuras de red de tuberías en orden según el etiquetado en formato P.K. de una alineación.
¡Misión cumplida!
Cree un gráfico de Dynamo que inserte texto en el espacio modelo.
¡Misión cumplida!
Versión de Civil 3D | Versión de Dynamo | Notas |
---|---|---|
Parece que el texto se suprime y se vuelve a crear con cada ejecución del gráfico. En realidad, la posición del texto se modifica en función del círculo seleccionado. Por lo tanto, es el mismo texto, solo que en un lugar diferente. Para crear un nuevo texto cada vez, debemos modificar la configuración de enlace de objetos de Dynamo para que no se conserve ningún dato de enlace (consulte a continuación).
Si es la primera vez que utiliza el Reproductor de Dynamo, consulte la sección .
Cree un grupo de puntos para cada descripción de punto COGO exclusiva.
Si es la primera vez que trabaja con listas, consulte la sección .
Si es la primera vez que utiliza el Reproductor de Dynamo, consulte la sección .
¡Misión cumplida!
Utilice un bloque de perfil de vehículo para generar sólidos 3D de envolvente libre a lo largo de una obra lineal.
Si es la primera vez que utiliza los sistemas de coordenadas, consulte la sección .
Si es la primera vez que utiliza el encaje de nodos, consulte la sección .
Si es la primera vez que utiliza el Reproductor de Dynamo, consulte la sección .
¡Misión cumplida!
2024.1
2.18
2024
2.17
Actualización de la interfaz de usuario del Reproductor de Dynamo
2023.2
2.15
2023
2.13
Actualización de la interfaz de usuario de Dynamo
2022.1
2.12
Adición de la configuración de almacenamiento de datos de enlace de objetos
Nuevos nodos para controlar el enlace de objetos
2022
2.10
Incorporación en la instalación principal de Civil 3D
Transición de IronPython a Python.NET
2021
2.5
2020.2
2.4
2020 Update 2
2.4
Nuevos nodos añadidos
2020.1
2.2
2020
2.1
Lanzamiento inicial
Los paquetes de Dynamo son conjuntos de herramientas desarrollados por terceros para ampliar las principales funciones de Dynamo. Todos los usuarios pueden acceder a ellos y descargarlos con un solo clic.
Consulte la sección Paquetes para obtener más información sobre cómo empezar a trabajar con paquetes.
A continuación, se muestra una lista de algunos de los paquetes más populares que pueden llevar los gráficos de Dynamo for Civil 3D al siguiente nivel.
El kit de herramientas de Civil 3D es un paquete de Dynamo for Civil 3D que aporta importantes mejoras a las funciones de Dynamo mediante un gran número de nodos adicionales.
Camber es un paquete de Dynamo for Civil 3D de código abierto que incluye cientos de nodos para trabajar con etiquetas, refX, accesos directos a datos, estilos y mucho más.
CivilConnection es un paquete de Dynamo para Revit de código abierto que permite el intercambio de información entre Civil 3D, Dynamo y Revit.
Los nodos de Arkance Systems son un paquete de Dynamo for Civil 3D con una amplia variedad de nodos útiles para trabajar con cotas, tablas, vistas, control de taladros y mucho más.
El Reproductor de Dynamo proporciona un método simplificado para ejecutar gráficos de Dynamo en Civil 3D. Una vez que se haya creado un gráfico, no es necesario tener conocimientos de Dynamo para utilizar el Reproductor y ejecutar los gráficos. Esto facilita el intercambio de gráficos con otros usuarios que podrían no estar interesados en explorar los detalles de nodos y cables.
Para obtener más información sobre el Reproductor de Dynamo en Civil 3D, consulte la documentación proporcionada en el sitio de la Ayuda de Civil 3D.
Este manual de introducción es solo el comienzo de su andadura con Dynamo for Civil 3D. Hay una gran cantidad de conocimientos disponibles en la floreciente comunidad de usuarios de Dynamo. Eche un vistazo a algunos de estos recursos mientras continúa con su aprendizaje.
Aunque Dynamo es extremadamente eficaz como herramienta de programación visual, también es posible ir más allá de los nodos y los cables, y escribir código en forma de texto. Existen dos formas de hacerlo:
Escribir DesignScript mediante un bloque de código
Escribir Python mediante un nodo de Python
Esta sección se centrará en cómo aprovechar Python en el entorno de Civil 3D para sacar partido de las API de .NET de AutoCAD y Civil 3D.
Consulte la sección Python para obtener información sobre cómo usar Python en Dynamo.
Tanto AutoCAD como Civil 3D disponen de varias API que permiten a desarrolladores como usted ampliar el producto principal con funciones personalizadas. En el contexto de Dynamo, lo pertinente son las API de .NET administrado. Los siguientes vínculos son esenciales para conocer la estructura de las API y su funcionamiento.
Manual para desarrolladores de las API de .NET de AutoCAD
Manual de referencia de las API de .NET de AutoCAD
Manual para desarrolladores de las API de .NET de Civil 3D
Manual de referencia de las API de .NET de Civil 3D
A medida que avance por esta sección, es posible que haya algunos conceptos con los que no esté familiarizado, como bases de datos, transacciones, métodos, propiedades, etc. Muchos de estos conceptos son fundamentales para trabajar con las API de .NET y no son específicos de Dynamo o Python. Está fuera del alcance de esta sección del manual abordar estos temas en detalle, por lo que se recomienda consultar con frecuencia los vínculos anteriores para obtener más información.
Al editar por primera vez un nuevo nodo de Python, este se rellenará previamente con el código de la plantilla para que pueda empezar. A continuación, se muestra un desglose de la plantilla con explicaciones sobre cada bloque.
Importa los módulos
sys
yclr
, que son necesarios para que el intérprete de Python funcione correctamente. En concreto, el móduloclr
permite que los espacios de nombres de .NET se traten básicamente como paquetes de Python.Carga los ensamblajes estándar (es decir, los archivos DLL) para trabajar con las API de .NET administrado para AutoCAD y Civil 3D.
Añade referencias a espacios de nombres estándar de AutoCAD y Civil 3D. Equivalen a las directivas
using
oImports
de C# o VB.NET (respectivamente).Se puede acceder a los puertos de entrada del nodo mediante una lista predefinida denominada
IN
. Puede acceder a los datos de un puerto específico mediante su número de índice como, por ejemplo,dataInFirstPort = IN[0]
.Obtiene el documento y el editor activos.
Bloquea el documento e inicia una transacción de base de datos.
Aquí debe colocar la mayor parte de la lógica de la secuencia de comandos.
Anule los comentarios de esta línea para confirmar la transacción una vez que haya terminado el trabajo principal.
Si desea generar datos del nodo, asígnelo a la variable
OUT
al final de la secuencia de comandos.
¿Desea personalizar la plantilla?
Puede modificar la plantilla de Python por defecto. Para ello, edite el archivo PythonTemplate.py
ubicado en C:\ProgramData\Autodesk\C3D <version>\Dynamo
.
Veamos un ejemplo para mostrar algunos de los conceptos básicos de la escritura de secuencias de comandos de Python en Dynamo for Civil 3D.
A continuación, encontrará archivos de ejemplo que puede consultar para este ejercicio.
A continuación, se ofrece una descripción general de la lógica de este gráfico.
Consultar la documentación de la API de Civil 3D
Seleccionar todas las cuencas vertientes del documento por nombre de capa
"Desenvolver" los objetos de Dynamo para acceder a los miembros internos de la API de Civil 3D
Crear puntos de Dynamo a partir de puntos de AutoCAD
Crear PolyCurves a partir de los puntos
¡Empecemos!
Antes de empezar a crear el gráfico y escribir el código, conviene echar un vistazo a la documentación de la API de Civil 3D y hacerse una idea de lo que esta pone a nuestra disposición. En este caso, hay una propiedad de la clase Catchment que devolverá los puntos de contorno de la cuenca vertiente. Tenga en cuenta que esta propiedad devuelve un objeto Point3dCollection
, que Dynamo desconoce cómo utilizar. En otras palabras, no podremos crear una PolyCurve a partir de un objeto Point3dCollection
, por lo que al final tendremos que convertirlo todo en puntos de Dynamo. Ya abordaremos este tema más adelante.
Ahora podemos empezar a crear la lógica del gráfico. Lo primero que hay que hacer es obtener una lista de todas las cuencas vertientes del documento. Hay nodos disponibles para ello, por lo que no necesitamos incluirla en la secuencia de comandos de Python. El uso de nodos proporciona una mejor visibilidad para otra persona que pueda leer el gráfico (en lugar de incluir mucho código en una secuencia de comandos de Python), y, además, mantiene la secuencia de comandos de Python centrada en un único objetivo, devolver los puntos límite de las cuencas vertientes.
Observe que la salida del nodo All Objects on Layer es una lista de CivilObjects. Esto se debe a que Dynamo for Civil 3D no dispone actualmente de ningún nodo que permita trabajar con cuencas vertientes, que es el motivo por el que necesitamos acceder a la API a través de Python.
Antes de continuar, debemos abordar brevemente un concepto importante. En la sección Biblioteca de nodos, se ha explicado cómo se relacionan los objetos y CivilObjects. Para añadir algo más de detalle, un objeto de Dynamo es una envoltura alrededor de una entidad de AutoCAD. De forma similar, un CivilObject de Dynamo es una envoltura alrededor de una entidad de Civil 3D. Puede "desenvolver" un objeto. Para ello, acceda a sus propiedades InternalDBObject
o InternalObjectId
.
Por regla general, es más seguro obtener el ID de objeto mediante la propiedad InternalObjectId
y, a continuación, acceder al objeto envuelto en una transacción. Esto se debe a que la propiedad InternalDBObject
devolverá un DBObject de AutoCAD que no se encuentra en estado de escritura.
A continuación, se muestra la secuencia de comandos completa de Python que realiza el trabajo de acceder a los objetos de cuenca vertiente internos para obtener sus puntos de contorno. Las líneas resaltadas representan las que se han modificado o añadido a partir del código de plantilla por defecto.
Haga clic en el texto subrayado en la secuencia de comandos para obtener una explicación de cada línea.
Como regla general, es recomendable incluir la mayor parte de la lógica de la secuencia de comandos en una transacción. De este modo, se garantiza un acceso seguro a los objetos que la secuencia de comandos está leyendo o escribiendo. En muchos casos, omitir una transacción puede provocar un error grave.
En esta fase, la secuencia de comandos de Python debería generar una lista de puntos de Dynamo que se pueden ver en la vista preliminar en segundo plano. El último paso consiste en crear simplemente PolyCurves a partir de los puntos. Tenga en cuenta que esto también podría hacerse directamente en la secuencia de comandos de Python, pero lo hemos puesto intencionadamente fuera de ella en un nodo para que resulte más visible. Este es el aspecto del gráfico final.
Y esta es la geometría final de Dynamo.
Apenas una nota rápida aquí antes de terminar. En función de la versión de Civil 3D que esté utilizando, es posible que el nodo de Python se haya configurado de forma diferente. En Civil 3D 2020 y 2021, Dynamo utilizaba una herramienta denominada IronPython para desplazar datos entre objetos .NET y secuencias de comandos de Python. Sin embargo, en Civil 3D 2022, Dynamo realizó la transición al intérprete nativo de Python estándar (también conocido como CPython) que utiliza Python 3. Las ventajas de esta transición incluyen el acceso a las bibliotecas modernas más conocidas y a las nuevas funciones de la plataforma, el mantenimiento esencial y los parches de seguridad.
Puede obtener más información sobre esta transición y sobre cómo actualizar las secuencias de comandos existentes en el blog de Dynamo. Si desea seguir utilizando IronPython, solo tendrá que instalar el paquete de DynamoIronPython2.7 mediante Dynamo Package Manager.
Esta línea obtiene la clase específica que necesitamos de la biblioteca de geometría de Dynamo. Tenga en cuenta que aquí se especifica import Point as DynPoint
en lugar de import *
, ya que este último elemento provocaría conflictos de nombres.
Aquí especificamos exactamente el puerto de entrada que contiene los datos que deseamos en lugar del elemento IN
por defecto, que hace referencia a la lista completa de todas las entradas.
Obtenga la geometría de contorno de todas las cuencas vertientes de un dibujo.
Tipo de Dynamo | Envolturas |
---|---|
¡Misión cumplida!
Objeto Autodesk.AutoCAD.DynamoNodes.Object
Entidad Autodesk.AutoCAD.DatabaseServices.Entity
CivilObject Autodesk.Civil.DynamoNodes.CivilObject
Entidad Autodesk.Civil.DatabaseServices.Entity