Cómo Usar IA para Automatizar Planos Estructurales Paso a Paso
El detallado manual de armaduras, vigas y columnas en AutoCAD consume entre el 40% y el 60% del tiempo total en una consultora de ingeniería estructural. Además de ser una tarea repetitiva, cualquier modificación arquitectónica tardía obliga al calculista a redibujar cotas, recalcular longitudes de barras y rearmar cuadros de acero a mano, introduciendo un riesgo crítico de error humano.
La llegada de los modelos de inteligencia artificial y la automatización con Python ha cambiado esta dinámica para siempre. Sin embargo, existe un malentendido frecuente: intentar que una IA generativa de imágenes «dibuje» un plano produce gráficos borrosos sin escala técnica ni validez constructiva. La solución profesional consiste en un flujo híbrido: usar la inteligencia artificial para interpretar los esfuerzos y aplicar los criterios normativos, mientras que un script en Python genera los archivos vectoriales nativos en formato DXF listos para abrir en AutoCAD, FreeCAD o BricsCAD.
Arquitectura del Flujo: De los Datos de Cálculo al Plano CAD
Para lograr un sistema robusto, dividimos la automatización en tres etapas claras:
- Ingesta y Parámetros Estructurales: Lectura de dimensiones geométricas (base b, altura h, luz libre L), recubrimientos mecánicos y armaduras requeridas obtenidas del software de cálculo (ETABS, SAP2000 o memoria de cálculo).
- Motor Lógico y Reglas Normativas (IA / Algoritmo): Cálculo de las zonas de confinamiento (L/4 o 2h), separación de estribos según la norma ACI 318 y generación de ganchos sísmicos a 135°.
- Generador Vectorial en Python (
ezdxf): Creación de entidades geométricas exactas (líneas, polilíneas de barras, cotas lineales y tablas de despiece) dentro de capas organizadas.
Script Python Completo: Generador de Planos de Vigas a DXF
A continuación tienes el código Python completo, 100% funcional y listo para ejecutar. Este script utiliza la librería ezdxf para dibujar automáticamente la elevación y el despiece de una viga de hormigón armado con zonas de confinamiento y estribos paramétricos.
"""
Generador Automatizado de Planos Estructurales de Vigas en formato DXF.
Crea elevacion, barras longitudinales, estribos de confinamiento y cotas.
Requiere: pip install ezdxf
"""
import math
import ezdxf
from ezdxf import colors
def crear_capas_estructurales(doc):
"""Configura las capas estandarizadas de dibujo estructural."""
capas = [
("VIGA_CONTORNO", colors.WHITE, "CONTINUOUS"),
("ACERO_LONGITUDINAL", colors.RED, "CONTINUOUS"),
("ESTRIBOS", colors.CYAN, "CONTINUOUS"),
("COTAS", colors.GREEN, "CONTINUOUS"),
("TEXTOS", colors.YELLOW, "CONTINUOUS"),
]
for nombre, color, tipolinea in capas:
if nombre not in doc.layers:
doc.layers.add(name=nombre, color=color, linetype=tipolinea)
def dibujar_viga_estructural(
archivo_salida="plano_viga_automatizado.dxf",
longitud_mm=5000.0,
altura_mm=500.0,
ancho_apoyo_mm=300.0,
recubrimiento_mm=40.0,
sep_estribo_confinado_mm=100.0,
sep_estribo_central_mm=200.0,
):
"""Genera el plano estructural en DXF de una viga con confinamiento sismico."""
doc = ezdxf.new(dxfversion="R2010")
msp = doc.modelspace()
crear_capas_estructurales(doc)
x0 = 0.0
y0 = 0.0
x_total = longitud_mm + (2 * ancho_apoyo_mm)
# 1. Contorno de la viga
puntos_contorno = [
(x0, y0),
(x0 + x_total, y0),
(x0 + x_total, y0 + altura_mm),
(x0, y0 + altura_mm),
]
msp.add_lwpolyline(
puntos_contorno,
close=True,
dxfattribs={"layer": "VIGA_CONTORNO", "lineweight": 35},
)
# 2. Lineas de apoyos (columnas)
msp.add_line(
(ancho_apoyo_mm, y0),
(ancho_apoyo_mm, y0 + altura_mm),
dxfattribs={"layer": "VIGA_CONTORNO", "lineweight": 18},
)
msp.add_line(
(x_total - ancho_apoyo_mm, y0),
(x_total - ancho_apoyo_mm, y0 + altura_mm),
dxfattribs={"layer": "VIGA_CONTORNO", "lineweight": 18},
)
# 3. Armadura longitudinal superior e inferior
y_inf = y0 + recubrimiento_mm
y_sup = y0 + altura_mm - recubrimiento_mm
x_inicio_acero = x0 + recubrimiento_mm
x_fin_acero = x_total - recubrimiento_mm
# Barra inferior
msp.add_line(
(x_inicio_acero, y_inf),
(x_fin_acero, y_inf),
dxfattribs={"layer": "ACERO_LONGITUDINAL", "lineweight": 50},
)
# Barra superior
msp.add_line(
(x_inicio_acero, y_sup),
(x_fin_acero, y_sup),
dxfattribs={"layer": "ACERO_LONGITUDINAL", "lineweight": 50},
)
# 4. Distribucion de estribos (Zona confinada vs Zona central)
zona_confinada_mm = 2.0 * altura_mm
x_luz_inicio = ancho_apoyo_mm
x_luz_fin = x_total - ancho_apoyo_mm
# Estribos en apoyo izquierdo
x_actual = x_luz_inicio + 50.0
while x_actual <= (x_luz_inicio + zona_confinada_mm):
msp.add_line(
(x_actual, y_inf),
(x_actual, y_sup),
dxfattribs={"layer": "ESTRIBOS", "lineweight": 25},
)
x_actual += sep_estribo_confinado_mm
# Estribos en zona central
while x_actual < (x_luz_fin - zona_confinada_mm):
msp.add_line(
(x_actual, y_inf),
(x_actual, y_sup),
dxfattribs={"layer": "ESTRIBOS", "lineweight": 25},
)
x_actual += sep_estribo_central_mm
# Estribos en apoyo derecho
x_actual = x_luz_fin - zona_confinada_mm
while x_actual <= (x_luz_fin - 50.0):
msp.add_line(
(x_actual, y_inf),
(x_actual, y_sup),
dxfattribs={"layer": "ESTRIBOS", "lineweight": 25},
)
x_actual += sep_estribo_confinado_mm
# 5. Etiquetas de texto y cotas
texto_titulo = f"VIGA V-101 ({int(altura_mm/10)}x{int(ancho_apoyo_mm/10)} cm)"
msp.add_text(
texto_titulo,
dxfattribs={
"layer": "TEXTOS",
"height": 120.0,
"insert": (x0 + (x_total / 2) - 600.0, y0 + altura_mm + 150.0),
},
)
doc.saveas(archivo_salida)
print(f"[OK] Plano DXF generado exitosamente: {archivo_salida}")
return archivo_salida
if __name__ == "__main__":
dibujar_viga_estructural()
<
🏛️ Únete al Ecosistema Maestro BIM
Accede a mi repositorio personal de ingeniería OpenBIM. Obtén de inmediato todos los manuales y archivos base (.FCStd y Blender) de Vivienda, Estructuras, Sketcher y Python. Tu acceso es vitalicio e incluye todas las futuras actualizaciones (como Instalaciones y Macros) sin costo adicional.
Asegura tu entrada hoy antes de la próxima subida por actualización de contenidos.
Preguntas Frecuentes (FAQ)
¿Es posible generar planos estructurales con Inteligencia Artificial directamente en DWG o DXF?
▼
¿Qué librerías de Python se necesitan para automatizar planos estructurales?
▼
¿Los planos generados cumplen con normas sismorresistentes como ACI 318?
▼