INTERCAMBIO DE INFORMACION - PYTHON+DYNAMO+EXCEL+REVIT
Después de durar desde las 10:00 a.m. hasta las 11:30 p.m., finalmente se logró.
Tenemos en nuestro poder el
desarrollo del script de intercambio de información entre Revit y
Excel.
Sabemos de la existencia de DiRootS, pero después de que lo pusieron como "Free-mium", pues no es igual. Porque desde nuestro punto de vista. La herramienta más poderosa es la que vemos en la imagen.
Llamada Sheetlink, que nos permite vincular cualquier tipo de información, que si bien es muy poderosa pues en temas de estructuración de archivos dentro del entorno de Excel, pues no es tan factible porque no nos da la generación de tablas correctas, sino que lo estructura con rango de datos y nombrados de columnas, lo cual para el que sabe trabajar en excel es una desventaja porque nos quita mucho tiempo de trabajo y no es beneficiosa al tener presupuestos inteligentes realizados en Excel u otro programa.
Podriamos decir que tenemos la herramienta también llamada X-Link que es gratis desarrollada por el Ingeniero Estructural - Nick Lancaster que tambien es bastante poderosa, pero que al menos nosotros tomabamos un poco para comprender el uso y no era tan estable ya que a veces nos daba errores que eran dificiles o incompresibles aunque leyeramos el Help me del plugin - Teniamos el mismo problema de el formato correcto dentro de Excel. (Sin embargo les invitamos a probarla es muy poderosa por algunos aditamentos extra y por Naviswork)
Por eso decidimos crear nuestra propia herramienta de importación tomando las fortalezas de las 2 herramientas más la idea de un archivo de Excel bien estructurado como lo haría un especialista en Excel.
Y de esta idea sale el siguiente script de Dynamo combinado con algunos scripts de Python. (Versión beta, pero bastante estable).
Este es el resultado.
Una tabla estructurada de manera correcta dentro del entorno de Excel. Sabemos que es una tabla porque tenemos habilitada la pestaña de diseño de tabla.
Esto nos permite tener una plantilla de Excel por proyecto, que todo se maneje desde un solo libre, tener vinculados de manera temprana, Tablas Dinámicas o Pivot Tables. Gráficos Dinámicos Preconfigurados, Segmentaciones de Datos, Dashboards, Vinculaciones directas con Power BI solamente porque lo tenemos estructurado como una tabla real y no solo un rango de datos con asignación de nombres en columnas.
Obviamente, si cambiamos un valor determinado dentro de Excel, pues lo volvemos a vincular y modifica los elementos de Revit sin problemas.
¿Cómo funciona nuestro Script?
Exportas una tabla de Revit a un documento o plantilla de Excel vacia, la conviertes en una tabla bonita (azul, filtros, ancho automático), editas lo que necesites y luego importas esos cambios de vuelta a Revit usando UniqueId como llave maestra.
1. Flujo de Exportación
A. Preparación en Revit
- Identifica la vista/schedule que quieres trabajar (p. ej., tabla de planificación de masas).
- Verifica que el proyecto tenga creados estos parámetros (para guardar las llaves):
- NVL_ELEMENT ID (Este es un parámetro personalizado y se puede cambiar)
- NVL_UNIQUE ID (Este es un parámetro personalizado y se puede cambiar)
B. Dynamo – “Pone los Elements y Unique IDs”
Este bloque es la base del sistema.
✅ Lo importante:
- NO necesitas tener la vista abierta.
- Solo escribes el nombre exacto en el primer nodo de la izquierda (Nombre de Vista), y el script:
- Encuentra la vista por nombre,
- Recolecta sus elementos,
- & escribe automáticamente
NVL_ELEMENT IDyNVL_UNIQUE IDen cada elemento.
🚫 Regla: el nombre debe coincidir exactamente (errores tipográficos o espacios raros → lista vacía).
C. Dynamo – “Exporta Tabla”
Aquí se exporta el schedule a Excel.
Recomendaciones para que no falle:
writeAsString = True(para evitar que Excel dañe IDs)- Usa
startRow/startColumncon espacio suficiente para que quede limpio (ej. 6 y 2)
🚫 Evita:
-
Exportar encima con el Excel abierto (puede salir PermissionError)
D. Dynamo – “Tabla Bonita” (Formateo en Excel)
Este script deja el archivo listo para trabajar:
- Detecta la fila real de headers automáticamente
- Elimina headers duplicados dentro de la tabla
- Crea la tabla azul con filtros
- Ajusta anchos de columnas
- Quita inmovilización (sin freeze panes)
✅ Resultado: un Excel que se ve pro y que se importa mejor.
2) Flujo de Importación
A. Preparación en Excel
- Abre el Excel exportado (ya formateado como tabla).
- Edita solo lo que necesitas (ej.
Tipo,Comentarios, u otros parámetros reales). - Guarda.
Reglas para que funcione:
- No cambies headers
- No borres
NVL_UNIQUE ID - No alteres el UniqueId
- Importa con
readAsStrings = True
B. Dynamo – “Importa Tabla”
Data.ImportExcel lee la tablaEl Python importador:
- Detecta headers
- Reconoce
NVL_UNIQUE IDcomo UniqueId - Encuentra el elemento en Revit
- Aplica cambios a parámetros (instancia primero, tipo si aplica)
3) Cómo funciona internamente (en simple)
- Cada fila de Excel representa un elemento de Revit.
- La columna
NVL_UNIQUE IDes la “placa” única del elemento. - El importador lee esa placa, encuentra el elemento y escribe los valores.
✅ Por eso el sistema es estable: no depende de “buscar por nombre”, sino de identificar el elemento correctamente.
Recomendación pro: Excel plantilla del proyecto
Lo más recomendable es tener una plantilla de Excel personalizada y actualizada por proyecto, para que el script solo tenga que “apuntar” a un Excel validado.
Con esto puedes estandarizar y controlar:
- BEPs (plantillas actualizadas y verificables)
- EIR (plantillas actualizadas)
- Nomenclaturas y codificación controladas por QA/QC
- Plantillas COBie limpias y consistentes
- Catálogos de parámetros, validaciones por disciplina y más
Esto convierte Excel en tu “archivo de control BIM”.
Roadmap: actualizaciones futuras (lo que viene)
Esta beta ya funciona, pero esto es lo que se viene para volverlo “industrial”:
1) Modificación multi-tablas (Multi-Schedule / Multi-Sheet)
- Exportar e importar varias tablas a la vez
- Un solo Excel con:
- múltiples hojas (una por schedule)
- o múltiples tablas dentro de una hoja
- Importación selectiva: “solo hoja X”, “solo tabla Y”
2) Reconocimiento de campos modificables / no modificables por colores
El sistema marcará por color, directamente en Excel:
- 🟩 Editable: se puede escribir y Revit lo aceptará
- 🟥 No editable: es solo lectura, no existe, o está bloqueado (sistema / fórmula / control)
- (opcional futuro) 🟦 Tipo vs 🟨 Instancia para que sepas dónde está actuando
Esto evita perder tiempo editando campos que nunca van a aplicar.
Mejoras básicas y primordiales (para subir de nivel)
- Columna
RowMapped: YES/NO + razón por fila - Log de cambios (qué cambió, cuánto y dónde)
- Modo “Dry Run” (simular sin escribir)
- Validación previa (headers, UniqueId corrupto, columnas críticas).
Cierre
Ya permite algo que en producción vale oro:
Trabajar Revit como si fuera una base de datos editable desde Excel, con control y trazabilidad.
Exportas → formateas → editas → importas.
Llave maestra: NVL_UNIQUE ID + readAsStrings = True.
Comentarios
Publicar un comentario
Agradecemos tu opinión.