Idea Statica
  • Acero
  • Hormigón
  • Enlaces BIM
  • Apoyo y aprendizaje
  • Precios
  • Nosotros
  • Panorama del acero
  • Diseño de conexiones
  • Diseño de miembros
  • Diseño paramétrico
  • Casos prácticos del acero
  • Resumen del hormigón
  • Diseño de muros y detalles
  • Diseño de anclaje
  • Miembros y secciones
  • Casos prácticos concretos
  • Visión general de BIM
  • Integraciones compatibles
  • Checkbot
  • Viewer
  • APIs
  • Centro de asistencia
  • Curso e-learning
  • Blog
  • Descargas y licencias
  • Planes
  • Herramienta comunitaria gratuita
  • Clientes empresariales
  • Estudiantes y Universidades
  • Calculadoras de valor
  • Quiénes somos
  • Contacto
  • Investigación y desarrollo
  • Distribuidores autorizados
  • Conozca a nuestros clientes
  • Acero
    Panorama del aceroDiseño de conexionesDiseño de miembrosDiseño paramétricoCasos prácticos del acero
  • Hormigón
    Resumen del hormigónDiseño de muros y detallesDiseño de anclajeMiembros y seccionesCasos prácticos concretos
  • Enlaces BIM
    Visión general de BIMIntegraciones compatiblesCheckbotViewerAPIs
  • Apoyo y aprendizaje
    Centro de asistenciaCurso e-learningBlogDescargas y licencias
  • Precios
    PlanesHerramienta comunitaria gratuitaClientes empresarialesEstudiantes y UniversidadesCalculadoras de valor
  • Nosotros
    Quiénes somosContactoInvestigación y desarrolloDistribuidores autorizadosConozca a nuestros clientes
Prueba de 14 días
Prueba de 14 días
  • Acero
  • Hormigón
  • Enlaces BIM
  • Apoyo y aprendizaje
  • Precios
  • Nosotros

Suscríbete a nuestro boletín

Empresa

  • Sobre nosotros
  • Asociaciones
  • Empleo
  • Tecnología patentada para ingenieros estructurales

Recursos

  • Proyectos de clientes
  • Casos de estudio
  • IDEA StatiCa Connection Library
  • Libros de verificación

Legal

  • EULA
  • Política de privacidad global
  • Términos de Servicio – IDEA StatiCa Viewer
  • Licencias

Ayuda

  • Contacto
  • Solicitud de cotización
  • Distribuidores
  • Descargas
FacebookInstagramLinkedInYouTube

© IDEA StatiCa 2009-2026

De confianza y utilizado en todo el mundo por ingenieros, fabricantes y consultores.

Centro de soporteTutorialesCómo empezar con la API - Importación por lotes de combinaciones 02
Cómo empezar con la API - Importación por lotes de combinaciones 02
SteelConnection designTutorialsConnectionIDEA Open Model (API)

Cómo empezar con la API - Importación por lotes de combinaciones 02

Este artículo también está disponible en
ENCZDEESFRITPTNLHUROKRPLTHTRVIZH
Traducido por IA del inglés

El objetivo del tutorial es importar varios casos de carga en una unión existente.

Primeros pasos

Recomendamos seguir el tutorial Cómo empezar con la API - Básicos 01, que le enseña sobre la API y cómo configurar el entorno.

Archivo de unión 

Primero, cree una junta de dos secciones transversales huecas RHS 300/200/8 y cambie los parámetros según las siguientes imágenes.

Ahora, vaya a la pestaña Developer y guárdelo como plantilla con el nombre tutorial 02.contemp.  Lo usaremos en el siguiente tutorial.

Vuelva a la pestaña Design, haga clic derecho en Operaciones  / Eliminar todo y guarde este archivo vacío como tutorial 02 - empty.ideaCon. 

Hoja Excel con combinaciones de carga

Como siguiente paso, prepare una hoja Excel con las cargas que queremos importar en el archivo .ideaCon. Puede descargarla al final de esta página.

Por favor, utilice los nombres exactos de las columnas tal como se usan en el script de Python.

Cliente Python

Ejecute "IdeaStatiCa.ConnectionRestApi.exe" en CMD dentro de la carpeta correcta de IDEA StatiCa y abra la herramienta IDE de su elección.

  • Cree un nuevo archivo e importe los paquetes que permitirán el uso del cálculo y la conexión con la URL del localhost. 

Código fuente:

## Importación del paquete API
from enum import member # Librería Python para mejorar la legibilidad del código reemplazando cadenas con nombres significativos
from openpyxl import load_workbook # Librería Python para leer/escribir Excel
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher
from ideastatica_connection_api.models.con_load_effect import ConLoadEffect
from ideastatica_connection_api.models.con_load_effect_member_load import ConLoadEffectMemberLoad
from ideastatica_connection_api.models.con_load_effect_position_enum import ConLoadEffectPositionEnum
from ideastatica_connection_api.models.con_load_effect_section_load import ConLoadEffectSectionLoad

  • Configure el registro mediante la variable "baseUrl", que abrirá su localhost. En el segundo paso, vincule la ruta absoluta de su archivo de IDEA StatiCa Connection.

Código fuente:

## Configurar el registro
baseUrl = "http://localhost:5000"
## Ruta absoluta a la carpeta con su script de Python y el módulo de unión
project_file_path = r"C:\Users\*username*\Documents\IDEA\API\Tutorial 02\tutorial 02 - empty.ideaCon"

  • Vincule el cliente con un servicio ya en ejecución. Use el bloque try/except - dado que el bloque try genera un error, se ejecutará el bloque except. En la primera fase, es necesario abrir el proyecto y encontrar el ID del proyecto, que es único para cada proyecto de IDEA StatiCa. Si ejecuta el script, puede leer la ruta impresa, el ID único(1), el número de elementos adjuntos(2) y el número actual de cargas(3).

Código fuente:

# Crear un cliente adjunto a un servicio ya en ejecución
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:

    try:

       ## Abrir el proyecto
       print("Opening project %s" % project_file_path)
       #api_client.project.active_project_id  - ID del proyecto abierto
       openedProject = api_client.project.open_project_from_filepath(project_file_path)
       #openedProject.connections = [  {Con1}, {Con2}, {Con3} ....      ]
       firstConId = openedProject.connections[0].id
       activeProjectId = api_client.project.active_project_id
       print("Active project ID: %s" % activeProjectId, firstConId)
       #obtener elementos en el proyecto
       members = api_client.member.get_members(activeProjectId, firstConId)
       sum= len(members)
       print("Number of members in the project:", sum)
       #obtener el número de efectos de carga actuales en la junta
       loads = api_client.load_effect.get_load_effects(activeProjectId, firstConId)
       nr = len(loads)
       print("Number of current loads in the project:", loads[nr-1].id)

  • Abra la hoja Excel y lea el número de filas con cargas. 

Código fuente:   

 #abrir hoja Excel
       excel_file = r"C:\Users\*username*\Documents\IDEA\API\Tutorial 02\tutorial 02 - loads.xlsx"
       workbook = load_workbook(excel_file)
       sheet = workbook.active
       #obtener el número de filas en la hoja Excel
       rowCount = sheet.max_row
       print("Number of new rows with loads:", rowCount-1)

  •  Inicie un bucle para detectar las filas con el mismo nombre de combinación de carga(1). Dentro de este bucle, se inicia otro bucle que añade cargas a cada elemento(2). Después de cada bucle, se añade una línea con las cargas(3).

       #Establecer el nombre inicial de la carga
       newLoadEffect = ConLoadEffect()
       newLoadEffect.name = "initial"
 
       #lectura de filas según los nombres de los efectos de carga
       newLoadEffect_name_previous = None
       for i in range(2, rowCount+1):
        #print("Checking load effect", sheet[i][0].value)  
        if sheet[i][0].value != newLoadEffect_name_previous:
            #condición para omitir la primera fila   
            if newLoadEffect.name != "initial":
                api_client.load_effect.add_load_effect(activeProjectId, firstConId, newLoadEffect)
                nr = nr +1
            # Creación del efecto de carga
            newLoadEffect_name_previous = newLoadEffect.name
            newLoadEffect = ConLoadEffect()
            newLoadEffect.name = sheet[i][0].value
            newLoadEffect.id = nr
            newLoadEffect.active = True
            newLoadEffect.is_percentage = False
            newLoadEffect.member_loadings = []

        print("Reading load effect:",newLoadEffect.name )    
        newLoadEffect_name_previous = newLoadEffect.name 

        #leer Id del elemento          
        for member in members:
            loaded_member_id = member.id
            loaded_member_name = member.name
            #hacer coincidir el nombre del elemento con el Id
            if member.name != sheet[i][1].value:
                #el nombre del elemento y el Id no coinciden
                continue
            else:
                #leer cargas para el elemento dado
                cell_value = ConLoadEffectSectionLoad()
                cell_value_position = sheet[i][2].value
                cell_value.n = sheet[i][3].value*1000    
                cell_value.vy = sheet[i][4].value*1000    
                cell_value.vz = sheet[i][5].value*1000    
                cell_value.mx = sheet[i][6].value*1000
                cell_value.my = sheet[i][7].value*1000                
                cell_value.mz = sheet[i][8].value*1000      

            # Carga del elemento
            newLoad = ConLoadEffectMemberLoad()
            newLoad.member_id = loaded_member_id
            newLoad.position = ConLoadEffectPositionEnum(cell_value_position)
            newLoad.section_load = cell_value

            #añadir ConLoadEffectMemberLoad al efecto de carga
            newLoadEffect.member_loadings.append(newLoad)    

  • Cree un nuevo archivo y guarde el proyecto actualizado con las combinaciones recién añadidas. Se añade una nota sobre la verificación del equilibrio.

Código fuente:

#Crear nuevo archivo ideaCon y añadir nuevas cargas
updated_file_name = r'C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 02\tutorial 02 with loads.ideaCon'
      #Añadir la última iteración del efecto de carga (Comb3)
       api_client.load_effect.add_load_effect(activeProjectId, firstConId, newLoadEffect)
       # Guardar el proyecto actualizado
       api_client.project.download_project(activeProjectId, updated_file_name )  
       print("New project with loads ",updated_file_name)
       print('!!! Please check the equilibrium for loaded combinations in IDEA Connection.')

    except Exception as e:
       print("Operation failed : %s\n" % e)   

Ahora puede comprobar el nuevo archivo para ver si tuvo éxito.

Descargas adjuntas

  • tutorial 02 - loads from excel.py (PY, 5.4 KB)

  • tutorial 02 - empty.ideaCon (IDEACON, 38.4 KB)

  • tutorial 02 - loads.xlsx (XLSX, 9.1 KB)

Artículos relacionados

Sitio web de documentación para API/desarrolladores
  • Acero
  • Concreto
  • IDEA Open Model (API)
  • v25.1
  • v23.1
  • +5
  • Acero
  • Concreto
  • IDEA Open Model (API)
  • v25.1
  • v23.1

Knowledge base

Sitio web de documentación para API/desarrolladores

Leer más
Cómo empezar con la API - Conceptos básicos 01
  • Acero
  • Connection
  • IDEA Open Model (API)
  • +3
  • Acero
  • Connection
  • IDEA Open Model (API)

Tutorials

Cómo empezar con la API - Conceptos básicos 01

Leer más
Diseño paramétrico en IDEA StatiCa Connection - Conceptos básicos (01)
  • Acero
  • Connection
  • Connection Library
  • Parametric design
  • IDEA Open Model (API)
  • +5
  • Acero
  • Connection
  • Connection Library
  • Parametric design
  • IDEA Open Model (API)

Tutorials

Diseño paramétrico en IDEA StatiCa Connection - Conceptos básicos (01)

Leer más
Enlace a la API de Grasshopper - cómo crear un archivo IOM de IDEA StatiCa para importaciones (01)
  • Acero
  • Connection
  • IDEA Open Model (API)
  • Grasshopper
  • +4
  • Acero
  • Connection
  • IDEA Open Model (API)
  • Grasshopper

Tutorials

Enlace a la API de Grasshopper - cómo crear un archivo IOM de IDEA StatiCa para importaciones (01)

Leer más