La digitalización y las tecnologías relacionadas a BIM (Building Information Modelling) han sido adoptadas en gran medida en la industria de la construcción durante los últimos años, siendo su aplicación se centrada inicialmente en edificaciones en general. Posteriormente se ha ido implementando al área de infraestructura vial, por lo que los investigadores internacionales han denominado con el acrónimo de I-BIM (Infraestructure Building Information Modelling) al sistema de gestión de la información de procesos digitales para infraestructuras, los softwares empleados dentro de esta metodología son diversos, siendo los más conocidos Autodesk Infraworks, Inventor, Civil 3D, Revit, Naviswork, entre otros. (Abbondati, Francesco (2020); Vignati, Valeria (2021))
Es así que Dynamo facilita la implementación adecuada de estas metodologías en los diferentes programas empleados, no únicamente Revit que es donde se conoció inicialmente, sino en programas como Civil 3D, Formit, etc.
ANÁLISIS DE LA PROBLEMÁTICA
La creación de parámetros adicionales y su posterior asignación en el entorno Civil 3D puede ser algo sencillo cuando se tienen pocos valores que agregar y pocos elementos dentro del modelado, sin embargo, cuando el modelo presenta una gran cantidad de elementos (corredores, superficies, alineamientos, etc) y una gran cantidad de parámetros necesarios a incluir dentro de cada uno de los diferentes elementos, la tarea se vuelve mucho mas tediosa e incluso complicada en cierta medida. Para poder reducir tiempos y dar solución a algo aparentemente simple como puede ser el proceso de creación y asignación de parámetros adicionales a elementos Civil 3D, así como su posterior colocación de información se recurrirá a la programación visual con Dynamo para Civil 3D.
Conceptos claves
Analizaremos los conceptos clave para generar la solución:
Dynamo para Civil 3D. – Es una aplicación de programación visual que puede automatizar tareas en Civil 3D. Fue introducida en la versión 2020 de Civil 3D. Es una herramienta gráfica de código abierto para el diseño y documentación. Es una interface visual empleada para crear flujos lógicos de rutinas y poder manipular información y generar geometrías.
Property Sets. – También conocidos como conjunto de propiedades, son empleados para asignar y acceder a propiedades personalizadas para un objeto en particular. Una Property Set Definition especifica las características de un grupo de propiedades que se pueden asociar a un objeto.
Un ejemplo típico es pensar en un sólido 3D en la interfaz del programa, la cual posee propiedades por defecto como capa, color, tipo de línea, sin embargo, el valor de su volumen no es algo que se pueda apreciar en la Paleta de propiedades directamente. Para que este valor puede figurar dentro de la Paleta de propiedades se debe recurrir a la configuración de un property set aplicado a sólidos 3D.
Generando PPSETS
A continuación, se mostrará la forma tradicional de crear y asignar los conjuntos de propiedades a elementos de Civil 3D, para lo cual emplearemos de ejemplo un modelo Civil 3D, en el cual se tiene una estructura ferroviaria con postes eléctricos a lo largo de su recorrido.
Digamos que se quieren crear parámetros para los elementos de concreto que sostendrán los rieles (durmientes o traviesas), a este conjunto de propiedades se le denominará como “CONC_TIE” y tendrá como parámetros “fabricante” y “Name”, siendo el primero un parámetro de tipo texto que se colocará manualmente y el segundo un parámetro generado de manera automática.
Asimismo, se creará un conjunto de propiedades para los elementos postes de codificación CNTR y se denominará “OCS_CNTR”, el cual tendrá igualmente los dos parámetros del conjunto anterior, adicionalmente tendrá el parámetro de texto llamado “Lado”
Para la creación de los property sets iremos a la pestaña “Manage” y a la opción “Define Property Sets”
Se abrirá la siguiente ventana en donde se agregarán los nuevos conjuntos de propiedades, dentro de los cuales se asignarán los parámetros respectivos.
Primero se debe seleccionar el tipo de elemento que llevará los parámetros, en este caso, ambos elementos son del tipo BlockReference por lo que se seleccionará dicha opción.
Para colocar parámetros de forma manual se seleccionará el siguiente icono.
Por otro lado, si se desea que el parámetro obtenga un valor de forma automática dentro de los valores que puedan obtenerse del elemento se hará de la siguiente manera:
En general, existen diferentes formas de crear estos parámetros, en el presente artículo se mencionan los más frecuentes.
Finalmente se tienen los property sets creados para los elementos BlockReference
Una vez creados los conjuntos de propiedades se debe seleccionar el elemento al que se quiere asignar dichos parámetros de la siguiente manera:
Primero se seleccionará “Extended Data” y luego “nuevo property set”.
En la pestaña emergente se seleccionará solo el conjunto de propiedades que se desea agregar al elemento, en este caso se seleccionará el property set “OCS_CNTR”, obteniendo lo siguiente:
Se puede apreciar que los parámetros han sido asignados al elemento, pero que se encuentran sin valor alguno, por lo que se deberá ingresar de manera manual para cada elemento. De igual forma primero se deben de asignar estos parámetros a los elementos correspondientes en el modelo.
Por lo que se puede apreciar que, al tener gran cantidad de elementos, dicha tarea se hará algo tediosa, repetitiva y demandará cierta cantidad de tiempo, por lo que ahora se mostrará la mejora que se puede obtener mediante Dynamo y la programación visual.
Mejora con Dynamo
Comencemos considerando que se tienen creados los property sets requeridos para el proyecto en cuestión, la tarea será realizar un filtrado dentro de los elementos presentes en el modelo y asignar el property set adecuado a cada tipo de elemento, para lo cual se realizarán los siguientes pasos.
Primero se debe tener en cuenta que los elementos a los cuales se asignarán los property sets, son del tipo Block Reference y cada tipo lleva un nombre asociado, en este caso el poste lleva el nombre “OCS_CNTR” y la durmiente de concreto lleva el nombre “CONC_TIE”.
Teniendo claro lo anterior, se entiende que se puede emplear dichos nombres para seleccionar en dynamo los elementos del tipo Block Reference y los property sets, no siendo necesario esto, se podrían tener nombres diferentes para los elementos y property sets. Sin embargo, hacerlo de esta manera reduce un poco la cantidad de nodos a emplear.
A continuación, se muestran los nodos empleados para la asignación de property sets a los elementos, así como la colocación de valores en dichos parámetros.
- Document.Current: Selecciona el documento actual de trabajo.
- Document.BlockByName: Selecciona los elementos del tipo Block dentro del documento actual de trabajo, asociados a un nombre. (En Autocad y Civil 3D los elementos del tipo Block son más amplios, llegando a contener como elemento tipo Block al espacio de modelo, espacio papel, bloques de referencia, entre otros)
- Document.BlockReferences: Selecciona los elementos del tipo Block Reference asociados a elementos del tipo Block.
- Document.PropertySetDefinitions: Selecciona todos los propertySetDefintion presentes en el documento actual.
- PropertySetDefinition.Name: Devuelve el nombre de los propertySetDefinition como elemento String (cadena de texto).
- List.Contains: Devuelve valores booleanos dependiendo de la condición de que exista cierto elemento en un ítem.
- List.Filter: Realiza un filtrado de los elementos de una lista dada una condición.
- Object.AddPropertySet: Agrega un propertyset a un objeto dado.
- Object.UpdateProperty: Actualiza el valor de un parámetro para un objeto dado.
Obteniendo el siguiente resultado.
Se aprecia que para todos lo elementos en cuestión se logró asignar el conjunto de propiedades deseado, así como también se colocó el valor deseado del parámetro “fabricante” para todos los elementos.
En caso de tener mayor cantidad de parámetros se puede emplear una hoja de Excel para que sea leída mediante Dynamo y asigne los valores correspondientes a cada parámetro.
Para el caso de que se requiera que otros archivos Civil 3D tengan los mismos conjuntos de propiedades que el archivo actual, se puede optar por diferentes métodos, a continuación, mencionaremos como transferir y actualizar dichos propertysets mediante Dynamo.
Obtención de PPSETS
Cuando se tiene pocos propertysets, y pocos archivos Civil 3D, realizar esta tarea de forma manual es sencilla, sin embargo, cuando se cuenta con gran cantidad de archivos Civil 3D y en cada uno una gran cantidad de parámetros adicionales a crear, la tarea se vuelva más complicada, por lo que empezaremos obteniendo los propertysets ya creados en un archivo de extensión JSON, de la siguiente manera.
Seleccionamos la ruta en donde se creará el archivo json con los propertysets cuyo nombre es ingresado
Dentro del Python script se emplea un archivo de ayuda (pset_utils.py), que viene por defecto y se encuentra en la ruta mencionada en amarillo.
Se creará el archivo “CONC_TIE.json” en la ruta especificada, y mediante un editor de texto, en este caso SUBLIME TEXT, se podrá revisar el contenido y modificarlo de ser necesario.
En el nuevo archivo se creará dicho conjunto de propiedades a través de Dynamo, mediante los siguientes pasos.
Conclusiones
Si es posible y factible generar de manera más eficiente una gran cantidad de parámetros extras a elementos de modelo en Civil 3D mediante Dynamo.
- Esta rutina es altamente editable, y permite crear conjunto de propiedades de manera masiva para cualquier archivo Civil 3D.
- La colocación de valores dentro de los parámetros creados puede realizarse de manera eficiente y sencilla.
Recomendaciones
- Se recomienda un nivel intermedio en el manejo de Dynamo para poder realizar la edición y el mantenimiento de esta rutina.
- Se recomienda poseer ordenada la información de los parámetros a crear en un archivo Excel para facilitar su creación y asignación.
- Se recomienda contar con editores de texto para manipular más fácilmente archivos json, py o de otro lenguaje de programación.
Bibliografía
Aprende los fundamentos de Dynamo: https://engineergeek.org/bimi/
- Dynamo Primer, DynamoBIM.org
- Vignali, Valeria (2021) https://doi.org/10.1016/j.autcon.2021.103752
- Abbondato, Francesco (2020). https://doi.org/10.1016/j.trpro.2020.03.052