Mi primer programa en Python fue una calculadora de la cortante basal. Diez líneas de código. Nada impresionante. Pero cuando le mostré los resultados a mi jefe, me preguntó: "¿Esto lo hiciste tú?" Le dije que sí. Me dijo: "Haz uno que calcule los metrados de acero."
Ese fue mi primer proyecto real de automatización. Y me abrió los ojos a algo que nadie me había dicho en la universidad: saber programar te da una ventaja brutal sobre ingenieros que no saben.
Aquí te muestro exactamente cómo escribir tu primer script útil, no un "Hola Mundo" que no te sirve para nada.
Nota personal: Empecé a programar porque me cansé de repetir los mismos cálculos en Excel cada semana, arrastrando fórmulas rotas de planillas antiguas. Aprender Python fue la decisión más rentable de mi carrera como ingeniero.
Cómo un ingeniero civil puede comenzar a programar en Python
Un ingeniero civil puede escribir su primer script funcional en Python en 30 minutos instalando Python, aprendiendo las 5 operaciones básicas y creando un calculador de momento flector para una viga simplemente apoyada.
No necesitas saber matemáticas avanzadas de programación. Necesitas saber cálculo estructural — que ya sabes.
Por qué elegir Python sobre Excel
Excel es la herramienta del ingeniero por defecto, y está bien para muchos casos. Pero tiene límites concretos:
- Velocidad: Python procesa 50,000 combinaciones de carga en segundos. Excel se congela.
- Reproducibilidad: Un script Python corre igual en tu PC y en la de tu cliente. Una hoja Excel complicada a veces no.
- Integración: Python se conecta con Revit (via pyRevit), AutoCAD, SAP2000, y bases de datos. Excel no.
- Versión: Con Git puedes rastrear todos los cambios a tu script. Con Excel, tienes "versión_final_v3_BUENA_esta.xlsx".
Instalación en 5 minutos
Paso 1: Descarga Python desde python.org (versión 3.11 o superior). Marca "Add Python to PATH" durante la instalación.
Paso 2: Instala VS Code desde code.visualstudio.com. Instala la extensión de Python.
Paso 3: Abre VS Code, crea un archivo viga.py y escribe:
print("Hola ingeniero")
Presiona F5. Si ves el mensaje, Python está listo.
Los 5 conceptos que necesitas (y nada más por ahora)
L = 6.0
w = 2.5
P = 10.0
import math
resultado = math.sqrt(16)
def momento_maximo_viga(w, L):
"""Momento máximo para viga con carga uniforme"""
return (w * L**2) / 8
posiciones = [0, 1, 2, 3, 4, 5, 6]
for x in posiciones:
<blockquote><strong>⚠️ Ojo en obra:</strong> Si estás en Lima, verifica que las especificaciones técnicas citen explícitamente la norma E.060 vigente. Hay proyectos que aún usan versiones desactualizadas sin saberlo.</blockquote>
M = (w * x * (L - x)) / 2
print(f"x={{x}}m → M={{M:.2f}} t·m")
El script completo: Diagrama de momentos flectores
Este script calcula y grafica el diagrama de momentos para una viga simplemente apoyada con carga distribuida:
import numpy as np
import matplotlib.pyplot as plt
L = 6.0
w = 2.0
Ra = Rb = w * L / 2
print(f"Reacción A: {{Ra:.2f}} t")
print(f"Reacción B: {{Rb:.2f}} t")
x = np.linspace(0, L, 200)
M = Ra * x - (w * x**2) / 2
M_max = Ra * (L/2) - (w * (L/2)**2) / 2
print(f"Momento máximo (en L/2): {{M_max:.2f}} t·m")
plt.figure(figsize=(10, 4))
plt.plot(x, M, color='#2E75B6', linewidth=2)
plt.fill_between(x, M, alpha=0.3, color='#2E75B6')
plt.axhline(y=0, color='black', linewidth=0.5)
plt.xlabel('Posición x (m)')
plt.ylabel('Momento flector M (t·m)')
plt.title(f'Diagrama de Momentos Flectores\nViga L={{L}}m, w={{w}} t/m')
plt.grid(True, alpha=0.3)
plt.annotate(f'Mmáx = {{M_max:.2f}} t·m',
xy=(L/2, M_max),
xytext=(L/2 + 0.5, M_max * 0.8),
arrowprops=dict(arrowstyle='->'))
plt.tight_layout()
plt.savefig('diagrama_momentos.png', dpi=150)
plt.show()
Para ejecutarlo necesitas: pip install numpy matplotlib
¿Para qué más puedes usar Python?
| Aplicación | Descripción |
|---|
| Análisis de suelos | Procesar ensayos SPT masivos |
| Metrados automáticos | Calcular volúmenes desde geometría |
| Reportes automáticos | Generar PDFs con resultados |
| pyRevit | Automatizar tareas en Revit con Python |
| Dynamo | Nodos Python en Dynamo de Revit |
| SAP2000 API | Controlar SAP2000 desde Python |
Conclusión
Python no es solo para programadores. Es para ingenieros que quieren multiplicar su productividad. El primer script siempre es el más difícil. Después de eso, cada script nuevo es más fácil que el anterior.
Empieza con algo que ya calculas manualmente. Automatízalo en Python. Eso es todo lo que necesitas para empezar.
📚 Fuentes y Referencias
Tu primer script: Calculadora de cortante basal
Este script calcula la cortante basal según la norma E.030 con solo ingresar los datos del edificio.
"""
Calcula la cortante basal según Norma E.030
"""
def cortante_basal(Z, U, C, S, R, P):
"""V = (Z * U * C * S / R) * P"""
return (Z * U * C * S / R) * P
Z = 0.45
U = 1.5
C = 2.5
S = 1.0
R = 8
P = 500
V = cortante_basal(Z, U, C, S, R, P)
print(f"Cortante Basal: {V:.2f} ton")
print(f"ZUCS/R = {Z*U*C*S/R:.4f}")
Resultado: Cortante Basal: 42.19 ton | ZUCS/R = 0.0844
Siguientes pasos
- Agrega una función para calcular el período T automáticamente
- Crea una interfaz gráfica con tkinter
- Exporta los resultados a Excel con openpyxl
Librerías Python recomendadas por tarea
| Tarea | Librería | Función |
|---|
| Cálculos matriciales | NumPy | Resolver sistemas de ecuaciones |
| Análisis de datos | Pandas | Procesar tablas de metrados |
| Gráficos | Matplotlib | Visualizar resultados |
| Excel | OpenPyXL | Generar reportes |
| PDF | ReportLab | Crear memorias |
| Revit API | pyRevit | Automatizar Revit |
| APIs REST | Requests | Conectar con BIM 360 |
Ejemplo: Tabla de metrados con Pandas
import pandas as pd
datos = {
'Elemento': ['Columnas', 'Vigas', 'Losas'],
'Volumen_m3': [45.2, 68.5, 102.3],
'Acero_kg': [1200, 1850, 2100]
}
df = pd.DataFrame(datos)
print(df)
df.to_excel('metrados.xlsx', index=False)
Preguntas frecuentes
📚 Artículos relacionados que te pueden interesar:
¿Necesito saber programar para empezar?
No. Python es uno de los lenguajes más amigables para principiantes.
¿Python puede hacer cálculos estructurales?
Sí. Con NumPy y SciPy puedes resolver sistemas de ecuaciones y optimizar diseños.