Un artículo de TFM que explora a fondo la Programación Aplicada al BIM, analiza sus conceptos fundamentales y su aplicación.
La Programación Aplicada al Building Information Modeling (BIM) es una disciplina en constante crecimiento que está transformando radicalmente la forma en que se conciben, diseñan y construyen edificios e infraestructuras en todo el mundo. En un mundo cada vez más digitalizado, el BIM se ha convertido en un estándar en la industria de la arquitectura, ingeniería y construcción (AEC), permitiendo a los profesionales crear modelos virtuales precisos y colaborativos de proyectos que abarcan desde pequeñas estructuras hasta megaproyectos a gran escala.
La Programación, por otro lado, se ha consolidado como una poderosa herramienta que complementa y potencia la eficiencia del BIM. Al combinar la capacidad de modelado tridimensional del BIM con la lógica de programación, los expertos pueden automatizar tareas repetitivas, optimizar procesos y aprovechar al máximo los datos generados en un proyecto BIM.
En este artículo sobre el Trabajo de Fin de Máster (TFM) de alumno Daniel Cruz del Máster en Programación Aplicada a BIM, exploraremos a fondo la Programación Aplicada al BIM, analizando sus conceptos fundamentales y su aplicación.
La programación aplicada al BIM nos permite automatizar y optimizar procesos en cualquier fase del desarrollo de proyectos, lo que nos permite mejorar en gran medida la productividad en nuestro trabajo.
En el caso de Revit tenemos varias formas de incorporar la programación a nuestros flujos de trabajo, pudiendo hacerlo a través de:
Para este TFM he escogido dos de ellas:
En primer lugar, un plugin basado en el uso de piezas y montajes que permite automatizar el modelado y documentación de elementos industrializados o prefabricados en Revit.
En segundo lugar, un script de Dynamo que nos permite automatizar la creación de vistas y aplicación de configuraciones solares para la realización de estudios de soleamiento.
La idea para plantear este plugin es crear una herramienta que nos permita automatizar todo el proceso de creación, división y documentación de piezas y montajes en cualquier modelo de Revit.
El objetivo es poder procesar, de forma rápida y eficaz, cualquier material o conjunto de materiales presentes en el modelo, automatizando tanto la creación de paneles en base a un tamaño máximo establecido (ya sea una limitación de tamaño por fabricación o cualquier otro criterio) como la creación de toda la documentación necesaria para el montaje o fabricación de dichos paneles, según las necesidades de cada caso (vistas y planos de montajes y/o archivos CNC para fabricación).
Pretende ser una herramienta genérica que se pueda usar sobre cualquier material y en cualquier modelo sin alterar el entorno de datos del mismo. No añade parámetros ni inserta familias ajenas al modelo base durante su ejecución. Se apoya en parámetros propios de Revit y familias existentes en el modelo.
Pretende además ser una herramienta abierta que sirva de base para ser personalizada añadiendo comandos específicos para sistemas constructivos concretos.
Como caso de estudio hemos elegido una vivienda unifamiliar con muros, suelos y cubiertas con estructura de CLT, siendo este el material elegido para procesarlo con el plugin.
Esta fase de la ejecución del plugin es la que se encarga de extraer de nuestro modelo las piezas del material o materiales elegidos y prepararlas para poder trabajar con ellas.
a. Crear piezas:
Datos:
Acciones:
Crea piezas en los muros, suelos y cubiertas que incluyen el material o materiales elegidos.
Crea la vista de trabajo.
Genera y asigna nombre a la vista creada (en este caso “Piezas_CLT”).
Aisla en la vista de trabajo las piezas del material o materiales elegidos.
Valida el tamaño de las piezas coloreando en rojo aquellas que superan el tamaño máximo escogido.
Resultado:
Esta fase agrupa los comandos encargados de la división de piezas para la creación de los paneles.
a. Dividir piezas muros
Datos:
Acciones:
Divide todas las piezas del material o materiales escogidos que estén ubicadas en muros sin huecos en tantas piezas como permita el ancho elegido para la división.
Valida el tamaño de las piezas resultantes de la división.
b. Colocar dinteles
Datos:
Acciones:
Coloca dinteles y antepechos en los huecos (ubicados en muros con piezas del material o materiales elegidos) que superen el área indicada.
Valida el tamaño de las piezas resultantes de la división.
c. Colocar dintel por hueco
Datos:
Selección en el modelo de la pieza en la que se ubica el hueco.
Selección en el modelo de las aristas superior e inferior del hueco en el que se colocarán dintel y antepecho.
Longitud de los apoyos de los dinteles sobre el muro (Solape).
Acciones:
Coloca dintel y antepecho en el hueco elegido, sólo dintel en el caso de puertas.
Valida el tamaño de las piezas resultantes de la división.
Resultado
d. Dividir piezas suelos
Datos:
Acciones:
e. Dividir pieza
Datos:
Selección en el modelo de la pieza a dividir
Acciones:
Divide la pieza seleccionada en tantas piezas como permita el ancho elegido.
Valida el tamaño de las piezas resultantes de la división.
Resultado
f. Dividir pieza dos direcciones
Datos:
Selección en el modelo de la pieza a dividir
Acciones:
Divide la pieza seleccionada en la dirección o direcciones elegidas y en tantas piezas como permita el ancho o los anchos elegidos.
Valida el tamaño de las piezas resultantes de la división.
Resultado
g. Dividir faldones
Datos:
Selección de pieza de cubierta inclinada.
Acciones:
Divide la pieza de una cubierta inclinada generando una pieza por faldón.
Valida el tamaño de las piezas resultantes de la división.
A partir de aquí, usando los dos comandos anteriores ("Dividir pieza" y "Dividir pieza dos direcciones"), podemos dividir cada uno de los faldones de la forma que necesitemos.
a. Generar documentación
Punto de partida
Datos:
Acciones:
Crea un montaje con las piezas que forman parte de cada uno de los elementos constructivos (muros, suelos, cubiertas) o un montaje para cada una de las piezas, en función de la opción elegida.
Asigna valores de Marca de tipo y Marca a los montajes creados.
Asigna nombre a todos los tipos de montajes creados.
Crea vistas de los montajes. Crea proyecciones frontal, superior, izquierda, y derecha aplicando la plantilla escogida, además genera también una vista 3D y una tabla de cómputo de materiales).
Crea planos para las vistas de montaje.
Maqueta las vistas de montaje en los planos, adaptando la escala de las vistas al tamaño del plano.
Acota las vistas de los montajes.
Exporta a un único pdf todos los planos de montajes creados por el comando.
Generar, a partir de los montajes generados por el plugin, los archivos CNC necesarios para la fabricación de las piezas creadas.
Resultado
Montajes en los que cada uno de ellos contiene todas las piezas de un mismo elemento (muro, suelo o cubierta).
Un montaje para cada una de las piezas.
Parte de la tabla de planificación de montajes en la que vemos montajes de piezas provenientes de muros y suelos agrupados por su tipo y con su marca de ejemplar asignada.
CREACIÓN DE VISTAS Y PLANOS DE MONTAJES:
Plano de montaje formado por todas las piezas de un muro.
Plano de montaje formado por una única pieza de un muro.
Plano de montaje formado por todas las piezas de un suelo.
El objetivo de esta parte del TFM es crear un script en Dynamo que permita la creación de estudios de soleamiento. El script automatiza la creación de vistas y la aplicación de una configuración solar determinada a partir de la introducción de las fechas y horas que nos interesen para el estudio.
El script se planteó de tal forma que su estructura fuera lo más clara posible, utilizando nodos de python que nos permiten estructurar el código de la forma más adecuada a nuestras necesidades. Esto nos permite tener pocos nodos y unas conexiones claras y ordenadas entre ellos.
Entorno conocido para cualquier usuario.
Mayor variedad de opciones para configurar la entrada de datos, permitiéndonos configurar los inputs de la manera más apropiada en cada caso. Selección de fechas a través de un calendario, selección de horas, ListBox….
Control de la ejecución de todos los nodos a partir del resultado del cuadro de diálogo; podemos cancelar la ejecución desde el cuadro sin generar errores en los nodos posteriores.
DateTimes (fecha y hora para aplicar a la configuración solar de cada una de las vistas).
Vista a duplicar.
Nombres para las vistas (generados por el nodo anterior en base a las configuraciones de fecha y hora).
Resultado del cuadro de diálogo. Nos permite gestionar la ejecución del nodo en caso de cancelación.
Crea tantos duplicados de la vista elegida como configuraciones solares hayamos introducido.
Asigna nombre a cada una de las vistas.
Aplica la configuración solar correspondiente a cada una de las vistas.
Vistas creadas
Vistas creadas por el nodo anterior.
Bloque de título para los planos.
Número de filas de vistas por plano.
Número de columnas de vistas por plano.
Resultado del cuadro de diálogo.
Crea el número de planos necesario para albergar las vistas creadas, asignando a cada plano el número de vistas establecido.
Establece nombre (Estudio de soleamiento_0, Estudio de soleamiento_1, …) y número de plano (Sol_0, Sol_1,...) para cada uno de ellos.
Coloca las vistas en los planos en base al número de filas y columnas de vistas a colocar en cada plano.
En los casos en los que el tamaño del conjunto de vistas establecido para un plano supere el tamaño del mismo, el script ajusta la escala de las vistas hasta que estas encajen en el plano.
Planos generados
Planos creados por el nodo anterior.
Opción de exportación a PDF (true/false).
Crea un PDF con tantas hojas como planos se introduzcan.
Ubica el archivo en la misma carpeta en la que se ubica el RVT.
Nombra el archivo a partir del nombre del RVT y el sufijo “Estudio de soleamiento”
Archivo pdf con todos los planos generados por el script.
La utilización de la programación en entornos BIM nos permite, mediante la automatización, acortar en gran medida los tiempos de definición de un proyecto, tanto utilizando este recurso en la creación o colocación de elementos en el modelo, como en la elaboración de documentación o en la extracción y utilización de datos de dicho modelo.
Los sistemas de construcción prefabricados e industrializados, al tratarse de elementos previamente definidos y colocados en el modelo en base a criterios preestablecidos, son claros beneficiarios de las ventajas de utilizar la programación en todas las fases del desarrollo, desde el modelado hasta la elaboración de toda la documentación de montaje o fabricación para dichos elementos.
Arquitecto cuya actividad se centra principalmente en temas relacionados con la metodología BIM, desde el modelado (Revit, Infraworks) hasta la automatización de flujos de trabajo en Revit mediante programación de scripts con Dynamo y Python o la creación de plugins en C#. Otro ámbito de actividad es la visualización de modelos, tanto de edificación como de obra civil, utilizando las posibilidades que ofrece la combinación de datos GIS con herramientas BIM y programas de renderizado.
1. ¿Por qué elegiste Structuralia?
"En primer lugar, buscaba un máster online que pudiera compatibilizar con una jornada laboral a tiempo completo y que estuviese avalado por una titulación universitaria oficial.
En segundo lugar, me ayudó a tomar la decisión la referencia previa que tenía del director del máster, Javier Aramendía, a través de la realización de pequeños cursos relacionados con el tema de la programación aplicada al BIM."
2. ¿Qué es lo que más destacarías del máster?
"Resaltaría el amplio y bien estructurado temario que abarca desde la programación visual con Dynamo, ideal para iniciarse en el mundo de la programación, hasta la creación de aplicaciones web para Autodesk Forge, pasando por varios lenguajes de programación como Python, C# y MySQL."
3. ¿En qué te ha ayudado o crees que te podría ayudar en tu actual o futuro desarrollo profesional?
"Me ha permitido profundizar en el mundo de la programación y, a partir de unos conocimientos básicos previos de programación visual en Dynamo, dar el salto a la programación con código. Estos conocimientos me permitirán desarrollar, con garantías, programas que permitan optimizar flujos de trabajo en el desarrollo de proyectos, pudiendo abarcar desde la implantación de scripts de Dynamo y plugins de Revit en el desarrollo de mis propios proyectos hasta la creación de este tipo de herramientas para implantaciones de terceros."