En resumen
- En Revit, categoría, Family, FamilySymbol y FamilyInstance representan distintos niveles de clasificación.
- Con la API se puede crear una habitación en una ubicación y un nivel determinados.
- Los límites de las habitaciones dependen de una región cerrada y del estado Room Bounding de los elementos circundantes.
- El curso introductorio de Autodesk University aborda herramientas como RevitPythonShell, Revit Lookup y pyRevit.
¿Qué aprenderás en esta guía?
Esta guía está pensada para quienes quieren comprender los conceptos de categoría y habitación en Revit API, y evaluar en el contexto adecuado los ejemplos de la documentación para desarrolladores de Autodesk. Primero veremos cómo se clasifican los elementos de Revit por categoría, familia, tipo e instancia. Después explicaremos dos maneras de crear habitaciones con la API y las condiciones que conviene comprobar al consultar sus límites.
El objetivo no es ofrecer un complemento listo para funcionar directamente en cualquier proyecto. Los ejemplos de código muestran con qué objetos y condiciones del proyecto trabaja la API. Los ejemplos de las fuentes están escritos en C#, por lo que no es correcto pegarlos en una herramienta de Python como si fueran código Python.
Requisitos y alcance
El curso introductorio de Autodesk University utiliza Revit, RevitPythonShell, Revit Lookup y pyRevit. Se indica que el curso requiere conocimientos básicos de Revit y conocimientos de Python de nivel inicial. Esto no significa que los ejemplos de API empleados en las explicaciones siguientes también estén escritos en Python: los fragmentos de código de la documentación de Autodesk sobre habitaciones y categorías están en C#.
Una de las referencias a la documentación para desarrolladores corresponde a Revit 2018 y otra a la página de documentación de Revit 2024. Las fuentes no explican la compatibilidad de estos ejemplos con distintas versiones de Revit. Por eso, antes de utilizar un ejemplo en un proyecto real, consulta la documentación de la API correspondiente a la versión de destino. Las fuentes proporcionadas no detallan los requisitos de cuenta, las versiones actuales de las herramientas ni sus condiciones de licencia.
1. Distingue la estructura de categorías y familias
La categoría clasifica el tipo general de un elemento y determina cómo lo trata Revit. Los muros, las puertas y las habitaciones son ejemplos de categorías distintas. Las categorías se relacionan con funciones como la creación de tablas de planificación, la organización de parámetros y el control de la visibilidad o la representación gráfica.
La estructura de familias es más específica. Family representa la familia completa, FamilySymbol representa un tipo concreto de esa familia y FamilyInstance representa una instancia individual colocada en el proyecto. Por ejemplo, una familia de puertas puede incluir varios tipos, y cada puerta colocada en el proyecto se considera una instancia. En la API, respetar esta distinción es importante para no confundir la categoría general de un elemento con un tipo concreto.
El ejemplo de categorías de Autodesk muestra cómo acceder a la colección de categorías del documento abierto y seleccionar una categoría integrada. La documentación también advierte que los nombres de las categorías pueden variar según el idioma de la interfaz de Revit. Para evitar depender de las diferencias de idioma, conviene utilizar identificadores de categoría integrados, como BuiltInCategory, en lugar de basarse en el texto del nombre.
2. Elige cómo crear la habitación
La documentación de la API describe dos escenarios distintos para crear una habitación. En el primero, se crea una habitación indicando un nivel y una ubicación. El ejemplo expresa la ubicación con un valor de tipo UV y comprueba si el resultado de la creación es válido. La idea principal es que la llamada para crear una habitación depende no solo del objeto habitación, sino también de la información sobre el nivel y la ubicación donde debe situarse.
En el segundo escenario, primero se crea una habitación en la tabla de planificación asociándola a una fase del proyecto y, después, se añade a un Plan Circuit. La condición clave es que la habitación que se va a añadir al plano solo figure en la tabla de planificación y aún no esté presente en ninguna vista de plano. El Plan Circuit se obtiene mediante la topología del plano del nivel correspondiente. Si la colocación se realiza correctamente, se crea en la vista donde está el Plan Circuit una habitación del modelo con el mismo nombre y número.
Antes de aplicar cualquiera de estos métodos, determina qué resultado necesitas: ¿crear una habitación en un punto concreto o colocar en un Plan Circuit una habitación que está pendiente en la tabla de planificación? En el segundo flujo, omitir la condición de que la habitación figure en la tabla puede impedir que la operación funcione con las entradas esperadas.
3. Revisa los límites de las habitaciones y sus actualizaciones
Los límites de las habitaciones dependen de los elementos del modelo que forman una región cerrada. En la documentación de Autodesk, entre los ejemplos de elementos relacionados con los límites se incluyen muros, líneas de modelo, pilares y cubiertas. Para leer los segmentos de límite se utiliza el método SpatialElement.GetBoundarySegments(). Los datos devueltos pueden contener una o varias regiones y los segmentos de cada región, organizados en listas anidadas.
No siempre se devuelven datos de límites. Si la habitación no está en una región cerrada o solo figura en la tabla de planificación, el método puede devolver null. Por eso, si no se obtienen resultados, comprueba no solo la llamada a la API, sino también si el modelo forma una habitación cerrada y si esta está presente en una vista de plano.
La opción Room Bounding es importante para que elementos como muros, pilares y cubiertas formen parte de los límites de la habitación. Las líneas de separación de habitaciones también pueden definir límites. Al añadir mediante la API un elemento como un muro, los límites de la habitación pueden cambiar; por ello, no des por vigentes, después de la modificación, los datos de límites obtenidos antes de realizarla. El ejemplo de Autodesk muestra cómo volver a leer los límites después de completar la creación del elemento dentro de una transacción.
También es posible quitar primero la habitación de su ubicación actual para cambiarla de sitio. La documentación explica que el método Room.Unplace() permite desubicarla, aunque la habitación permanece disponible en el proyecto. Esto requiere entender la diferencia entre eliminar el objeto del proyecto y cambiar su ubicación.
4. Efectos en los flujos de trabajo de arquitectura y visualización
Comprender las relaciones entre categorías y límites de habitaciones puede ayudar a equipos de arquitectura e interiorismo que trabajan con datos de habitaciones, clasifican elementos del modelo o evalúan la automatización de tareas repetitivas. Como los límites dependen de los elementos circundantes y de su configuración, antes de iniciar la automatización hay que verificar que el modelo establezca correctamente estas relaciones.
Estas fuentes no describen directamente ajustes de render o visualización. Sin embargo, la coherencia del modelo es importante en los procesos BIM que utilizan datos de habitaciones y categorías. Antes de aplicar lo aprendido, revisa la versión de Revit utilizada, el estado de colocación de la habitación, las opciones Room Bounding pertinentes y la fase del proyecto. Para estudiantes, un pequeño modelo de prueba es un buen punto de partida para observar cómo cambian los datos de límites cuando se modifica un muro u otro elemento circundante.
Errores frecuentes
Dar por sentado que los nombres de las categorías son iguales en todas las versiones lingüísticas de Revit. Autodesk recomienda utilizar identificadores de categoría integrados para evitar diferencias de idioma.
Esperar un segmento de límite cuando la habitación no está en una región cerrada. Según la documentación, en este caso el método puede devolver null.
Colocar primero en una vista de plano la habitación que se va a añadir al Plan Circuit. La entrada solo debe figurar en la tabla de planificación de habitaciones.
Pasar por alto el estado Room Bounding de los elementos circundantes. Esta opción determina si el elemento participa en los límites de la habitación.
Seguir utilizando datos de límites antiguos después de crear un elemento nuevo del modelo. Vuelve a obtener los datos de límites una vez completada la modificación.
Tratar los ejemplos de C# como código Python. Aunque las fuentes mencionan herramientas de Python, los ejemplos de API sobre habitaciones y categorías están escritos en C#.
Próximos pasos
Empieza por consultar las explicaciones de Autodesk sobre las categorías y observa en un proyecto existente la diferencia entre categoría, familia, tipo e instancia. Después, compara en un documento de prueba los dos escenarios para crear habitaciones: creación mediante información de ubicación y colocación desde la tabla de planificación en un Plan Circuit. Anota en qué vista aparece la habitación en cada paso.
Por último, modifica los elementos circundantes de una región cerrada y vuelve a comprobar los datos de límites. Este ejercicio ayuda a no considerar el valor devuelto por la API al margen del estado del modelo. Al pasar a automatizaciones más amplias, considera también los filtros de elementos, las transacciones y los temas de interfaz de usuario tratados en el curso introductorio de Autodesk University.
Fuentes y licencia
Esta guía se ha elaborado con nuestras propias palabras a partir de los temas sobre habitaciones de la documentación para desarrolladores de Autodesk Revit API (K1), la clasificación de categorías y familias (K2) y el curso introductorio de Autodesk University sobre Revit API (K4). Las fuentes se indican como licencia=libre; como los textos proporcionados no especifican una licencia concreta, aquí no se atribuye ningún tipo de licencia en particular.
Fuentes
3 fuentesNo republicamos los textos de las fuentes; las citas breves van marcadas y el resto es resumen y comentario propios.
Las categorías y los límites de las habitaciones ofrecen un punto de partida útil para las oficinas que quieren conectar los datos del modelo de Revit con la automatización. La ventaja más práctica es aprender a evaluar el resultado de una llamada a la API teniendo en cuenta no solo el código, sino también si la habitación está en una tabla de planificación o en un plano, y cómo son los elementos circundantes.
Para las oficinas y estudiantes de Turquía, este enfoque debería probarse en un pequeño proyecto piloto antes de llevarlo al modelo real. Como las fuentes no especifican la compatibilidad actual de las herramientas, los costos de licencia ni los requisitos de hardware, conviene comprobar esos aspectos antes de tomar una decisión de inversión. Tampoco se pueden extraer de estos documentos afirmaciones sobre el rendimiento del render.
Preguntas frecuentes
¿Cómo se leen los límites de las habitaciones con Revit API?
La documentación de Autodesk indica que los segmentos de límite se pueden obtener con el método SpatialElement.GetBoundarySegments(). Si la habitación no está en una región cerrada o solo figura en la tabla de planificación, el método puede devolver null.
¿Cómo se añade una habitación desde la tabla de planificación a un plano con Revit API?
La documentación indica que primero se crea una habitación en la tabla de planificación asociándola a una fase del proyecto y luego se coloca en el plano mediante PlanCircuit. La habitación debe figurar únicamente en la tabla y no estar presente en ninguna vista de plano.
¿Los nombres de las categorías de Revit API varían según el idioma?
Autodesk indica que Category.Name puede variar según el idioma de Revit. Se recomienda utilizar BuiltInCategory para evitar diferencias lingüísticas.



