Python para arquitectos: automatiza una decisión de diseño, no solo una tarea
Quince variantes nuevas para esta tarde y tres tablas que todavía hay que reconciliar. A la repetición la llamamos trabajo creativo cuando se sienta lo bastante cerca de un plano. Python puede quitar una parte de ese esfuerzo, siempre que sepamos qué comparación estamos haciendo y qué debe seguir decidiendo el proyectista. Hoy toca recorrer datos y aplicar reglas. Conservaré mi entusiasmo teatral mientras comprobamos que una opción bien puntuada también responde a la pregunta correcta.
Pongamos una escuela hipotética con seis aulas y varias distribuciones posibles. Queremos comparar superficies, proporciones y recorridos sin rehacer las cuentas cada vez que cambia una alternativa. Ese será el trabajo de Python para arquitectos en este artículo: recoger criterios, aplicarlos de forma consistente y devolver información que permita discutir el proyecto. Empezaremos por una regla pequeña y llegaremos hasta la decisión de conservar o retirar la herramienta. La calidad de la escuela tendrá que seguir dando explicaciones más completas que una puntuación verde.
Convierte una intención de diseño en preguntas calculables
La petición «busca una distribución equilibrada» parece comprensible hasta que intentas programarla. ¿Equilibrada por superficie, iluminación, proporción o distancia al acceso? ¿Debe permitir unir dos aulas? ¿Qué relación interesa mantener con el patio? Un equipo puede conversar sobre esas cuestiones porque comparte referencias y reconoce matices. El programa necesita que concretes la parte que vas a calcular. No es una limitación especialmente injusta: a los humanos también les vendría bien acordarla antes de comparar resultados.
Para empezar, el estudio podría revisar tres indicadores: intervalo de superficie por aula, proporción entre sus dimensiones y recorrido desde un acceso definido. Los límites pertenecerían al programa del proyecto; este ejemplo no establece mínimos normativos ni prescribe dimensiones adecuadas para una escuela. Orientación, acústica, estructura y calidad espacial quedarían pendientes de otras comprobaciones. Declarar ese alcance impide que una evaluación parcial acabe circulando como «validación del diseño».
A continuación hay que encontrar los datos. Las dimensiones y superficies pueden llegar de una hoja, de un modelo o de una medición preparada para el análisis. Cada aula necesita una identificación que permita volver a localizarla, además de unidades y procedencia. Si la tabla quedó desactualizada respecto de la planta, Python puede repetir el mismo error con una constancia impecable. La automatización no mejora por sí sola la relación entre el archivo y el proyecto que pretende describir.
Conviene distinguir lo que observamos de lo que interpretamos. Ancho y fondo podrían describir aproximadamente un aula rectangular, pero resultar insuficientes para otra irregular. Una distancia en línea recta tampoco equivale necesariamente al recorrido disponible. Elegir una medida cómoda exige explicar qué representa y cuándo deja de servir. Si la geometría necesita otra lectura, el sistema debería señalarlo en vez de fabricar una precisión decorativa.
Deja cada resultado ligado al aula y a la alternativa de origen. Cuando falte una dimensión o no se pueda determinar un acceso, conserva un estado «no evaluable» con su motivo. Sustituir el dato por cero hace que la suma termine, pero estropea la comparación. Un vacío reconocido permite pedir información; un cero inventado pasa por información y se instala en el informe con una seguridad envidiable.
Una función pequeña permite discutir la regla
La proporción es un buen primer ejercicio porque puedes comprobarla con ejemplos conocidos antes de conectar ningún modelo. Si ambas dimensiones son positivas, divide la mayor entre la menor: el resultado es el mismo aunque intercambies ancho y fondo. Un aula de 6 por 8 metros daría una relación de aproximadamente 1,33; otra de 4 por 12, una relación de 3. Esa cifra describe alargamiento bajo nuestra simplificación geométrica. No contiene una opinión sobre si el espacio funciona bien.
En Python, un diccionario permite reunir valores bajo nombres como «ancho» y «fondo», y una función concentra la operación que queremos repetir. El tutorial oficial de estructuras de datos explica diccionarios y listas, que bastan para empezar a representar las aulas del ejemplo. Aprender esos conceptos con un problema reconocible suele resultar más útil que memorizar sintaxis sin saber qué trabajo va a resolver.
La función que sigue admite dimensiones numéricas positivas y finitas; rechaza valores ausentes, texto, booleanos, cero, negativos e infinitos. La referencia de math.isfinite explica la comprobación de números finitos. Convertir cadenas de una hoja, interpretar comas decimales y unificar unidades correspondería a una etapa anterior y explícita. Mezclar esas decisiones dentro de la fórmula haría más difícil descubrir de dónde procede un resultado extraño.
La salida conserva un estado y un motivo cuando no puede calcular. Cuando sí puede, devuelve la proporción sin redondear para que una presentación posterior no altere comparaciones con umbrales. El fragmento no consulta Revit, no genera alternativas y no comprueba normativa: sirve para aislar una regla y entenderla. Se puede ejecutar con Python sin paquetes adicionales; la integración con un modelo sería otro trabajo.
Compara alternativas sin esconder sus compensaciones
Ahora podemos evaluar cada aula, pero una alternativa contiene seis y las decisiones afectan al conjunto. Imagina una opción A con proporciones compactas y recorridos largos, y otra B que acorta desplazamientos a costa de alargar dos aulas. Presentar los indicadores por separado permite discutir esa compensación. Una suma con pesos también puede ser útil si responde a un criterio acordado, aunque introduce decisiones nuevas que no deben desaparecer detrás del cálculo.
No aceptaría un ranking donde una proporción favorable compense una condición que el proyecto ha declarado obligatoria. Tampoco daría por resuelto un recorrido inconveniente porque la superficie se acerque mucho al objetivo. Antes de sumar puntos separaría los requisitos que descartan una opción, las preferencias que permiten compararla y las cuestiones que todavía necesitan valoración cualitativa. El programa debe mostrar esa distinción. Ordenar todas las alternativas en una sola columna es cómodo; decidir qué hemos permitido compensar es el trabajo que justifica la columna.
Una ficha por alternativa podría mostrar cuántas aulas son evaluables, qué condiciones cumplen y dónde aparece cada advertencia. Al lado, la planta permite interpretar las consecuencias espaciales. Si la opción B produce mejores valores y peores relaciones con el patio, tenemos una discrepancia útil que merece discusión. Resolverla quitando del informe lo que incomoda sería una forma bastante humana de estropear una herramienta que, por el momento, solo hacía cuentas.
La forma de medir también puede revisarse. Quizá ancho y fondo ya no representen bien la geometría o el recorrido requiera un análisis más detallado. Al mantener la regla separada de la lectura de datos puedes cambiarla sin reconstruir todas las conexiones. Cada modificación debe conservar su significado y permitir comparar qué ha cambiado en el resultado. Generar más variantes no compensa que nadie sepa explicar la métrica que las ordena.
En este punto, Python actúa como una libreta de cálculo que se ejecuta de manera repetible. El proyecto gana una explicación más clara de ciertas diferencias, y el equipo conserva la responsabilidad de interpretarlas. Si alguien presenta la primera alternativa del ranking como «la que ha elegido el algoritmo», conviene devolverle el plano y la lista de criterios. El algoritmo no ha asistido a todas las conversaciones que quedaron fuera de sus entradas.
Conecta con el modelo cuando la regla ya se entienda
Para seis aulas y una comparación puntual, una hoja bien preparada podría resolver el trabajo con menos esfuerzo. Python empieza a compensar cuando la evaluación se repite, crece el número de alternativas o necesitas combinar información de varias fuentes. Antes de montar la conexión, comprueba cuánto tiempo se dedica a preparar datos y cuánto a calcular. A veces el cuello de botella está en acordar nombres y unidades, una tarea que ningún lenguaje arregla por mera presencia.
Si trabajas en Dynamo o Grasshopper, puedes mantener relaciones geométricas a la vista y reservar Python para una evaluación que se exprese mejor con funciones. Si la información está en Revit, necesitas un entorno capaz de acceder a su API y respetar su contexto. Una entrega IFC puede consultarse fuera de la aplicación de autoría con herramientas adecuadas, aunque habrá que entender qué espacios y propiedades contiene la exportación. Son vías distintas de obtener datos, con dependencias y límites diferentes.
Empieza leyendo y produciendo una salida que se pueda contrastar. La comparación debería incluir identificación de alternativa y aula, valores de entrada, regla utilizada y avisos. Así puedes volver al modelo y comprobar una discrepancia concreta. Un PDF muy elegante que pierde las referencias originales deja al revisor buscando espacios a mano. El diseño del informe también forma parte de la automatización, aunque salga peor en las demostraciones de código.
Modificar el modelo añade otro alcance. Si más adelante decides escribir un resultado en un parámetro, tendrás que definir destino, unidades, permisos de edición y comportamiento al repetir. La evaluación geométrica y la escritura deben poder distinguirse para revisar una sin activar la otra. No hace falta resolver esa integración para aprender la regla pequeña del ejemplo, y es preferible reconocer la separación antes de copiar un fragmento que cambie elementos sin una propuesta visible.
Puedes usar una IA para pedir explicaciones, explorar pruebas o revisar un error, siempre que contrastes el código y sus supuestos. Una respuesta convincente puede mezclar entornos o inventar una propiedad que no existe. En nuestro ejercicio, la pregunta útil sería por qué una dimensión negativa debe rechazarse o cómo conservar el identificador del aula. «Hazme una herramienta que optimice la escuela» contiene demasiadas decisiones sin expresar para convertirse directamente en una instrucción fiable.
El prototipo termina cuando otra persona puede comprobarlo
Mientras ejecuta el script quien lo escribió, las columnas, las unidades y la ubicación del archivo parecen evidentes. Al compartirlo, esas certezas suelen desvanecerse simultáneamente. Prepara una entrada válida y varios casos que obliguen a explicar el comportamiento: dato ausente, dimensión negativa, texto inesperado y alternativa con un identificador repetido. Este último problema pertenece a la validación del conjunto, no a la fórmula de proporción; saber dónde comprobar cada cosa evita cargar una función con todo el proyecto.
Prueba también un resultado fácil de calcular a mano y conserva esa expectativa. La función del ejemplo permite comprobar por separado la relación entre dimensiones; un análisis completo necesitaría revisar además lectura, unidades, agrupación e informe. Que la función pase sus casos no demuestra que el modelo esté bien interpretado. Cada capa tiene una promesa distinta y debe aportar una evidencia acorde con ella.
La entrega puede seguir siendo modesta: instrucciones para preparar la entrada, versión de las reglas, un archivo de ejemplo y una explicación de avisos. Deja claro quién mantiene el proceso y qué hay que revisar al cambiar el programa o la fuente de datos. Si cada encargo añade excepciones que nunca vuelven a aparecer, quizá convenga separar configuraciones o retirar una parte de la herramienta. Un script no adquiere derecho a mantenimiento indefinido por haber ahorrado una tarde.
Aprender Python con este enfoque significa avanzar desde una decisión reconocible: recoger datos, expresar una regla, comprobar sus límites y devolver un resultado útil. Las bibliotecas y conexiones pueden llegar después, cuando respondan a una necesidad concreta. La escuela seguirá necesitando criterio arquitectónico; ahora al menos podremos discutir algunas alternativas sin rehacer las mismas cuentas cada vez.
Cuando puedas explicar por qué dos alternativas obtienen resultados distintos, tendrás una herramienta para explorar decisiones. Hasta entonces solo tendrás cifras con una sintaxis respetable. Cambia una condición del ejercicio y anticipa qué debería ocurrir antes de ejecutarlo: esa pequeña incomodidad enseña bastante más que generar veinte variantes y elegir la que quede mejor en la captura.
Respuestas