Automatizar Planos de Estructuras en FreeCAD con IA y Python

Automatizar Planos de Estructuras en FreeCAD con IA y Python

La documentación y delineación de planos estructurales en ingeniería civil y edificación representa históricamente una de las fases con mayor consumo de horas-hombre y mayor susceptibilidad a desalineaciones respecto a las memorias de cálculo. En los flujos convencionales, los ingenieros deben trasladar manualmente las dimensiones de vigas, columnas y distribuciones de armaduras hacia programas de CAD bidimensionales.

Contenido relacionado:  FreeCAD vs Revit: Comparativa Completa para Arquitectura y BIM

La combinación de FreeCAD 1.0 —el modelador paramétrico de código abierto más potente de la actualidad— junto con modelos de lenguaje de Inteligencia Artificial (LLMs) y su robusta API de Python, permite transformar este flujo tedioso en un proceso automatizado. Mediante scripts especializados y el módulo TechDraw, es posible convertir modelos 3D y especificaciones de armado en láminas ejecutivas de obra completas en cuestión de segundos, sin depender de costosas licencias comerciales.


Flujo de Trabajo: De Modelado Estructural a Lámina TechDraw

El proceso de automatización estructural con Inteligencia Artificial sigue una arquitectura desacoplada y predecible:

  1. Definición Geométrica y Estructural: Los elementos portantes (pórticos, zapatas, losas y refuerzos de acero) se instancian en FreeCAD utilizando los módulos BIM, Arch o mediante geometrías paramétricas de Part.
  2. Generación Asistida por IA: Mediante un prompt estructurado (Prompt Engineering), se le suministran a la IA los esquemas de clases de FreeCAD para que formule el script en Python responsable de proyectar la escena.
  3. Compilación en TechDraw: El script crea una página técnica (formato A1 o A2), genera proyecciones ortogonales (DrawViewPart), crea secciones de corte transversales (DrawViewSection) y anota cotas automáticas basadas en vértices paramétricos.
Etapa del ProcesoFlujo Tradicional CADFlujo Automatizado FreeCAD + IA
Creación de Vistas 2DDelineación manual línea por línea (3-4 horas)Proyección asociativa instantánea (15 segundos)
Actualización por CambiosRedibujar cotas y vistas manualmenteRecálculo paramétrico automático al regenerar página
Despiece de ArmadurasConteo manual de barras y estribosExtracción directa de parámetros de la armadura 3D
Costo en Licencias1,800 – 3,500 USD anuales por usuario$0 USD (100% Software Libre y Open Source)

Script Python: Generador Automático de Láminas Estructurales en FreeCAD

El siguiente script en Python es compatible con la API de FreeCAD (ejecutable desde la consola integrada de macros o en modo Headless). Automatiza la creación de una página técnica en TechDraw, inserta un membrete normativo y proyecta las vistas y cortes de los elementos estructurales existentes:

"""
Generador Automático de Láminas y Planos Estructurales para FreeCAD.
Crea páginas TechDraw, proyecciones ortogonales y cotas de vigas/columnas.
Ejecutar dentro de la consola de FreeCAD o mediante macro (.FCMacro).
"""

import math
import os
import sys


def crear_lamina_estructural(nombre_doc=None, escala=0.02):
    """Genera una lamina TechDraw con vistas ortogonales y membrete."""
    try:
        import FreeCAD as App
        import FreeCADGui as Gui
        import TechDraw
    except ImportError:
        print("[MODO SIMULACION] FreeCAD no detectado en el entorno local.")
        print("[INFO] Este script esta diseñado para ejecutarse dentro de FreeCAD.")
        return False

    doc = App.ActiveDocument if nombre_doc is None else App.getDocument(nombre_doc)
    if not doc:
        doc = App.newDocument("Proyecto_Estructural_IA")
        print("[OK] Nuevo documento estructural creado.")

    # 1. Crear la Pagina TechDraw
    pagina = doc.addObject("TechDraw::DrawPage", "Plano_Estructural_01")
    plantilla = doc.addObject("TechDraw::DrawSVGTemplate", "Plantilla_A1")

    # Asignar ruta de plantilla SVG estandar de FreeCAD
    ruta_recursos = App.getResourceDir()
    ruta_svg = os.path.join(ruta_recursos, "Mod", "TechDraw", "Templates", "A1_Landscape_ISO7200TD.svg")

    if os.path.exists(ruta_svg):
        plantilla.Template = ruta_svg
    pagina.Template = plantilla

    # 2. Identificar elementos estructurales en el modelo
    elementos = [obj for obj in doc.Objects if hasattr(obj, "Shape") and obj != pagina and obj != plantilla]
    if not elementos:
        # Crear viga estructural de ejemplo si la escena esta vacia
        import Part
        caja = doc.addObject("Part::Box", "Viga_Concreto_40x25")
        caja.Length = 4000.0  # 4 metros
        caja.Width = 250.0    # 25 cm
        caja.Height = 400.0   # 40 cm
        doc.recompute()
        elementos = [caja]
        print("[OK] Viga parametrica de muestra creada exitosamente.")

    # 3. Insertar Vista Superior (Planta)
    vista_planta = doc.addObject("TechDraw::DrawViewPart", "Vista_Planta")
    vista_planta.Source = elementos
    vista_planta.Direction = (0.0, 0.0, 1.0)
    vista_planta.Scale = escala
    vista_planta.X = 250.0
    vista_planta.Y = 400.0
    pagina.addView(vista_planta)

    # 4. Insertar Vista Frontal (Elevacion Longitud)
    vista_elevacion = doc.addObject("TechDraw::DrawViewPart", "Vista_Elevacion")
    vista_elevacion.Source = elementos
    vista_elevacion.Direction = (0.0, -1.0, 0.0)
    vista_elevacion.Scale = escala
    vista_elevacion.X = 250.0
    vista_elevacion.Y = 220.0
    pagina.addView(vista_elevacion)

    # 5. Insertar Corte Transversal (Seccion)
    corte_seccion = doc.addObject("TechDraw::DrawViewSection", "Corte_Transversal")
    corte_seccion.Source = elementos
    corte_seccion.BaseView = vista_elevacion
    corte_seccion.SectionNormal = (1.0, 0.0, 0.0)
    corte_seccion.SectionOrigin = (2000.0, 0.0, 0.0)
    corte_seccion.Scale = escala * 2.0  # Escala de detalle
    corte_seccion.X = 550.0
    corte_seccion.Y = 220.0
    pagina.addView(corte_seccion)

    doc.recompute()
    print("[OK] Lamina estructural generada exitosamente con planta, elevacion y corte.")
    return True


if __name__ == "__main__":
    crear_lamina_estructural()

Prompt Engineering: Cómo Instruir a la IA para Modelar Estructuras

Para obtener código Python confiable y sin alucinaciones de métodos inexistentes al trabajar con la API de FreeCAD, utiliza el siguiente System Prompt estructurado:

Eres un ingeniero estructural senior y desarrollador experto en la API de Python de FreeCAD (módulos Part, Draft, Arch, Reinforcement y TechDraw).
Tu objetivo es escribir scripts limpios y ejecutables que:
1. Siempre verifiquen si existe un ActiveDocument antes de crear uno nuevo.
2. Utilicen objetos estándar como 'TechDraw::DrawViewPart' y 'TechDraw::DrawViewSection'.
3. Calculen posiciones relativas para vistas evitando superposición en láminas A1 (841 x 594 mm).
4. No importen librerías externas fuera de la instalación nativa de FreeCAD.
5. Incluyan manejo de excepciones para geometrías con aristas complejas.

🏛️ Ú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.

Contenido relacionado:  Cómo Extraer Metrados Automáticamente de Planos en FreeCAD con Python

👉 Acceder al Ecosistema Maestro


Preguntas Frecuentes (FAQ)

¿FreeCAD puede generar planos con nivel de detalle para construcción (LOD 350+)?
▼
Sí. Utilizando el banco de trabajo Reinforcement junto con TechDraw, es posible modelar el acero de refuerzo con sus radios de doblado reales y generar vistas de corte acotadas aptas para obra civil.
¿Qué modelos de IA son los más recomendados para escribir scripts de FreeCAD?
▼
Modelos avanzados como Claude 3.5 Sonnet y GPT-4o destacan notablemente debido a su comprensión de la jerarquía de objetos y sintaxis de la API de Open CASCADE utilizada por FreeCAD.
¿Se pueden exportar los planos generados a formato DWG o DXF para clientes?
▼
Completamente. Las páginas de TechDraw se pueden exportar de forma nativa a DXF, SVG y PDF vectorial de alta resolución, facilitando el intercambio con clientes que utilicen AutoCAD.


Deja un comentario

CONSTRUYE MEJOR - Herramientas Digitales para construcción
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.