¿Cómo empezar en la programación BIM?
BIM¿Te gustaría potenciar tu carrera en la construcción? Descubre cómo la programación BIM puede transformar tu enfoque profesional. Aprende el camino para automatizar procesos con programación, y mejora la eficiencia en tus proyectos. ¡Explora cómo la programación puede ser tu herramienta clave para el éxito!
Introducción
La metodología BIM ha revolucionado la eficiencia en el diseño y planificación de proyectos de construcción al integrar la gestión de información y modelos 3D. Sin embargo también ha generado un incremento en la demanda de programadores especializados en construcción y modelado, ya que la automatización de procesos se ha convertido en una prioridad también dentro de BIM.
No solo eso, sino que con el auge de la inteligencia artificial, esta necesidad se ha intensificado aún más, haciendo esencial que los profesionales del sector adquieran habilidades en programación para mantenerse competitivos y contribuir al desarrollo de soluciones innovadoras en la construcción.
¿Por qué usar programación?
Primero comencemos por conocer que la programación es el proceso de crear instrucciones que una computadora sigue para realizar tareas específicas. Sus aplicaciones pueden ser llevadas a cualquier campo incluyendo también la construcción. Por ejemplo, conociendo la secuencia para la elaboración de un cronograma de obra, es posible programar ciertas actividades de forma que se ahorre tiempo y aumenten las ganancias.
Nota: En el avance de obra es sumamente importante tener actualizado las actividades, cantidades y rendimiento para conocer si el proyecto está dentro del cronograma establecido.
Ventajas de aprender programación
Entre las principales ventajas se encuentran las siguientes:
- Alta demanda de programadores: En todos los sectores así como en el sector construcción se está aumentando las contrataciones de profesionales que permitan agilizar los procesos dentro del diseño y control del proyecto.
- Automatización de tareas: Las tareas repetitivas como control documentario o actualización de información es fácilmente desarrollado con ayuda de la programación.
- Optimización de recursos: Al hacer más eficiente los procesos, esto llevará a que se reduzcan los desperdicios.
- Reducción de errores: Como las actividades se configuran con la precisión del ordenador se minimiza la intervención humana y por lo tanto la aparición de errores.
- Mejora la colaboración: Los equipos pueden obviar las tareas más repetitivas y concentrarse en la solución de conflictos dentro del proyecto.
- Gestión de la información: Ayuda a mejorar la interacción con modelos de información (modelos 3D y documentos) logrando una coordinación más eficiente.
Lenguajes de programación más usados
La programación, definida como la creación de instrucciones para que los ordenadores ejecuten tareas, se lleva a cabo a través de lenguajes de programación que interpretan dichas instrucciones. Actualmente, existen varios lenguajes ampliamente utilizados, cada uno desempeñando un papel fundamental en una amplia gama de aplicaciones.
- Python: Versátil y fácil de aprender, ampliamente utilizado en inteligencia artificial, análisis de datos y automatización de tareas.
- JavaScript: Fundamental para el desarrollo web, permite crear interfaces de usuario interactivas y aplicaciones dinámicas.
- C#: Usado en el desarrollo de aplicaciones de escritorio y videojuegos, así como en la programación de herramientas BIM.
- Java: Popular en el desarrollo de aplicaciones móviles, especialmente para Android.
- SQL: Utilizado para la gestión y consulta de bases de datos, crucial en la manipulación y análisis de grandes volúmenes de información.
Programación en BIM
Aunque las guías actuales y normas internacionales no han formalizado aún el papel del programador dentro del flujo de procesos BIM, su impacto es evidente. La programación en BIM permite automatizar tareas repetitivas y complejas, lo que resulta en una significativa reducción de tiempo y costos en los proyectos. En esencia, la programación BIM consiste en desarrollar códigos y aplicaciones que optimizan el manejo de datos, la generación de modelos y la coordinación de proyectos.
Los lenguajes de programación más usados en BIM se agrupan en dos tipos: programación visual y programación escrita. El uso de cada una dependerá del contexto y la dificultad de la tarea que se quiera automatizar. Generalmente, para una complejidad alta la programación escrita suele ser una mejor opción.
Programación visual
Este enfoque permite crear códigos o “rutinas” mediante la manipulación de objetos en vez de realizar código textual. Estos objetos suelen ser bloques o nodos, que representan diferentes funciones y que están enlazados por conectores. Entre los lenguajes más usados se encuentran: Dynamo de la mano de Autodesk y Grasshopper para su uso en Tekla y ArchiCAD.
Programación escrita
Este tipo de programación implica escribir código en un lenguaje de programación textual para crear aplicaciones y scripts. A diferencia de la programación visual, este enfoque ofrece un control más detallado y flexible sobre la lógica del programa y la manipulación de datos.
¿Por qué ser un programador BIM?
En la actualidad está creciendo la demanda de programadores especializados en lenguajes como Python y Dynamo (o Grasshopper en el caso de Tekla) sin embargo la oferta de personas aún es poca en comparación con otros roles como modeladores o coordinadores BIM. Esto genera que las remuneraciones sean bastante altas.
¿Cómo comenzar como programador BIM?
A continuación te presentamos cuáles son los pasos que debes seguir si quieres mejorar tu perfil profesional y empezar en el mundo de la programación con BIM.
1. Elige tu software
El primer paso será escoger uno de los programas que más utilices dentro de tus proyectos y conocer cuáles son los lenguajes que se manejan dentro del mismo para lograr automatizar tus procesos. En la siguiente imagen podrás conocer cuáles son los softwares más demandados dentro del sector y cuáles son los lenguajes de programación (visual y escrita) que interactúan con el mismo.
¿Qué son las API?
Una API (Interfaz de Programación de Aplicaciones) es un conjunto de reglas que permite que diferentes programas de software se conecten y compartan información. Programas como Revit, Tekla y demás presentan APIs y permiten a los profesionales crear herramientas y automatizaciones personalizadas que mejoran la funcionalidad del software.
2. Entiende los procesos
La importancia de escoger un programa que domines es que puedas conocer cuál es el flujo que se desarrolla dentro de tus proyectos. Normalmente este flujo se conoce al interactuar con el programa y al conocer el proceso constructivo que se está proyectando.
Por ejemplo, dentro de un proyecto se tienen una serie de niveles que deben ser asignados al programa que estemos usando. En la siguiente imagen vemos un flujo común al momento de crear niveles en Revit.
3. Aprende lenguajes de programación
Como vimos, dentro de los lenguajes para BIM, se tienen a los lenguajes visuales y a los textuales. Es importante comenzar por la programación visual puesto que ayuda a mejorar la lógica de los procesos y es más interactivo.
Para comenzar a programar dentro de Revit te recomendamos iniciar con Dynamo. Para ello debes conocer “Dynamo primer” que es un manual de uso para Dynamo que incorpora tanto las funciones en su interfaz hasta el manejo de los nodos y los códigos más utilizados. Por otro lado, Dynamo también es muy usado para el diseño paramétrico (modelos complejos) puesto que permite ver el resultado de la geometría en tiempo real.
Ahora, continuando el ejemplo anterior, veamos la siguiente imagen donde se muestra cómo se puede programar la creación de niveles dentro de Dynamo asignando niveles y una separación entre los mismos, acelerando así el proceso de modelado.
Por otro lado, Python también es un lenguaje muy empleado dentro de Revit. Sin embargo, para utilizar se requiere ingresar a la interfaz de Dynamo y podemos encontrar a Python como un nodo dentro de esta interfaz. Python se utiliza de la mano de la API de Revit, por lo que es fundamental conocer la lógica de esta API, es decir, qué códigos y funciones presenta para modificar algo dentro de Revit. Para esto te recomendamos visitar la página de “Revit API docs”, donde tendrás la documentación para comenzar a usar esta API.
Nota: En este ejemplo se muestra cómo el script de Python permite también crear los niveles pero utilizando solo un bloque de código además de las entradas.
Finalmente, tenemos al lenguaje de C#. Esta es una opción muy recomendada cuando ya se tiene conocimiento de los lenguajes anteriores. Su interfaz y sintaxis no es tan amigable como Python o Dynamo pero su estructura de códigos permite que se desarrollen scripts profesionales así como add-ins dentro de Revit. A diferencia de Python, C# no requiere contar con Dynamo ni una extensión adicional puesto que puede desarrollarse dentro del mismo Revit.
Nota: Para acceder a C# debemos dirigirnos a la ventana de “Gestionar” y luego a “Macros” y se abrirá la interfaz de SharpDevelop donde se desarrollan los códigos con C#.
Entonces ¿cuál debo usar?
Como vimos en los apartados anteriores, cada uno tiene sus peculiaridades y dependen mucho del contexto profesional. En el caso de Dynamo, es un lenguaje más atractivo para principiantes o desarrolladores de modelos 3D complejos que requieren constantemente ver la interfaz y el resultado.
Por otro lado Python va un nivel más allá y te permite acceder a herramientas que Dynamo por defecto no presenta. Así también puedes crear tus propios nodos personalizados y generar automatizaciones más eficientes con menos bloques, por lo que está orientado a un profesional con un uso más avanzado.
Sin embargo, si quieres saltar al mundo del desarrollo de add-ins (extensiones) no solo en Revit o Civil 3D, si no también en Tekla y demás, C# será tu mejor opción. Debes tener en cuenta que su lenguaje es muy estructurado y requiere de más tiempo para su aprendizaje, pero los beneficios profesionales también serán mayores.
Github es un repositorio de código que es muy usado por programadores de todo tipo. En el caso de desarrollar scripts y rutinas abiertas (es decir, que puedan ser usadas por otros profesionales), puedes compartir tu contenido dentro de esta plataforma. Así también podrás encontrar otros códigos para usar dentro de tus proyectos. Sin embargo, lo importante una vez que conozcas los lenguajes de programación y estos recursos es que puedas practicarlos muy seguido.
Nota: Se puede buscar códigos específicos de uso libre.
¿Quieres aprender más?
En Konstruedu, ofrecemos una especialización diseñada para proporcionarte los conocimientos y habilidades necesarios en programación BIM. Nuestra formación te permitirá dominar lenguajes como Dynamo, Python y C#, capacitando a automatizar flujos y procesos en Revit con fluidez y destreza. Con el apoyo de profesionales expertos y ejercicios interactivos, estarás preparado para destacar en el mundo de la programación BIM.
Recursos
¿Te interesó nuestro pequeño código con Dynamo y Python? A continuación te dejamos los recursos de Python y Dynamo para que puedas incorporar las líneas de código mostradas dentro de tus proyectos y probar las mejoras que ofrece la programación dentro de programas como Revit
import clr
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import System
from System import Array
from System.Collections.Generic import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
# Obtener el documento de Revit activo
doc = DocumentManager.Instance.CurrentDBDocument
# Parámetros de entrada
nivel_inicio = IN[0] # Elevación inicial
nivel_final = IN[1] # Elevación final
separacion = IN[2] # Separación entre niveles
niveles_creados = [] # Almacenar niveles
# Crear una lista de elevaciones en las que se crearán los niveles
elevaciones = list(range(nivel_inicio, nivel_final + separacion, separacion))
# Filtrar los niveles existentes en el documento
existing_levels = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements()
# Iniciar una transacción para crear los niveles
TransactionManager.Instance.EnsureInTransaction(doc)
for elevacion in elevaciones:
nuevo_nivel = Level.Create(doc, elevacion/0.3048)
nuevo_nivel.Name = "Nivel " + str(elevacion)
niveles_creados.append(nuevo_nivel)
TransactionManager.Instance.TransactionTaskDone()
OUT = niveles_creados
Referencias
[1] KeepCoding. (2024). Lenguajes de programación más usados. Recuperado de https://keepcoding.io/blog/lenguajes-de-programacion-mas-usados/
[2] Platzi. (2023). ¿Por qué estudiar programación? Conoce sus beneficios. Recuperado de https://platzi.com/tutoriales/3208-programacion-basica/24422-por-que-estudiar-programacion-conoce-sus-beneficios/
[3] Especialista 3D. (2024). Python en Revit y programación BIM. Recuperado de https://especialista3d.com/python-revit/programacion-bim/
[4] WSP. (2023). BIM Manager de edificación – Programación BIM. Recuperado de https://empleo.wsp.com/jobs/4798902-bim-manager-de-edificacion-programacion-bim
Escrito por Jorge Enrique Huaripata Ascate para KONSTRUEDU.COM