How to get started with API - Import a template and run calculation 03

Este artículo también está disponible en:
Translated by AI from English
En este tutorial, aprenderás cómo importar una plantilla, hacer algunos cambios en la configuración predeterminada y obtener resultados junto con los costos.

Primeros pasos

Recomendamos revisar el tutorial Cómo empezar con API - Conceptos básicos 01, que te enseña sobre la API y cómo configurar el entorno.

Archivo de conexión 

Este ejemplo se basa en archivos creados dentro del tutorial Cómo empezar con API - Importación por lotes de combinaciones 02

Por favor descarga los archivos tutorial 02 with loads.ideaCon y tutorial 02.contemp a tu PC.

Cliente Python

Nuevamente, ejecuta el "IdeaStatiCa.ConnectionRestApi.exe" en CMD dentro de la carpeta apropiada de IDEA StatiCa y abre la herramienta IDE de tu elección.

inline image in article
  • Crea un nuevo archivo e importa los paquetes que habilitarán el uso del cálculo y el enlace con la URL localhost. 

Código fuente:

## Importación del paquete API
import ideastatica_connection_api
from ideastatica_connection_api.models.base_template_conversion import BaseTemplateConversion
from ideastatica_connection_api.models.con_mprl_element import ConMprlElement
from ideastatica_connection_api.models.con_operation_common_properties import ConOperationCommonProperties

#Importar paquetes para visualización
import pandas as pd

## Enlace con baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher

inline image in article
  • Configura el registro a través de la variable "baseUrl," que activará tu localhost. En el segundo paso, empareja la ruta absoluta de tu archivo IDEA StatiCa Connection.

## Configurar registro
baseUrl = "http://localhost:5000"

## Ruta absoluta a la carpeta con tu script python y módulo de conexión
project_file_path = r"C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 02 with loads.ideaCon"
print("Opening project ",project_file_path)

inline image in article
  • Empareja el cliente con un servicio que ya esté ejecutándose. Usa 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 de tu proyecto, que es único para cada proyecto de IDEA StatiCa. Luego necesitamos todas las conexiones, almacenadas en nuestro archivo, ya que queremos aplicar la plantilla solo a la primera.Como siguiente paso, podremos leer el archivo de plantilla de mapeo predeterminado y agregar otro ensamblaje de perno (M20 8.8) a la base de datos MPRL.

# Crear un cliente conectado a un servicio que ya esté ejecutándose
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
    try:
        # Abrir proyecto
        uploadRes = api_client.project.open_project_from_filepath(project_file_path)
        activeProjectId = api_client.project.active_project_id      
        # Obtener lista de todas las conexiones en el proyecto
        connections_in_project = api_client.connection.get_connections(activeProjectId)

        # primera conexión en el proyecto
        connection1 = connections_in_project[0]      

        # ConTemplateMappingGetParam | Datos de la plantilla para obtener mapeo predeterminado (opcional)
      templateParam =  ideastatica_connection_api.ConTemplateMappingGetParam() 

        #template_file_name
        template_file_name = r"C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 02.contemp"        

        with open(template_file_name, 'r', encoding='utf-16') as file:
            templateParam.template = file.read()

        # obtener el mapeo predeterminado para la plantilla y conexión seleccionadas  
        default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
        print("Default mapping: ",default_mapping)        

        #agregar nuevo ensamblaje de perno a la base de datos MPRL
       mprlElement = ConMprlElement()
        print(mprlElement)
        mprlElement.mprl_name = "M20 8.8"
        api_client.material.add_bolt_assembly(activeProjectId, mprlElement)
        print("New bolt assembly added", mprlElement.mprl_name)
        boltsInProject = api_client.material.get_bolt_assemblies(activeProjectId) 

inline image in article
  • Si queremos asignar el nuevo ensamblaje de perno a la operación Placa a placa directamente, tenemos que ejecutar el comando BaseTemplateConversion() y agregarlo a la plantilla de mapeo..

       # agregar nuevo ensamblaje de perno a la plantilla de mapeo       
      boltConversion = BaseTemplateConversion()
       boltConversion.original_value = 'M16 8.8'
       boltConversion.original_template_id = '1'
       boltConversion.new_value =  'M20 8.8'
       boltConversion.description = 'Bolt Assembly'
       boltConversion.new_template_id = '2'     

       default_mapping.conversions.append(boltConversion)
      print("New mapping: ", default_mapping)       

       # Aplicar la plantilla modificada a la conexión
       applyTemplateData =  ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam |       Plantilla a aplicar (opcional)
        applyTemplateData.connection_template = templateParam.template
        applyTemplateData.mapping = default_mapping
        applyTemplateResult = api_client.template.apply_template(api_client.project.active_project_id, connection1.id, applyTemplateData)

        # Establecer el nuevo ensamblaje de perno a las operaciones en el archivo ideaCon
       commonProperties = ConOperationCommonProperties()
        commonProperties.bolt_assembly_id = 2

        api_client.operation.update_common_operation_properties(api_client.project.active_project_id, connection1.id,commonProperties)

inline image in article
  • También podemos obtener los costos para la conexión

       # Obtener los costos de la conexión con la plantilla aplicada
        costs = api_client.connection.get_production_cost(api_client.project.active_project_id, connection1.id)
        print("Costs: ",costs.total_estimated_cost)

inline image in article
  • Como último paso, podemos ejecutar el cálculo, ver los resultados, almacenar el archivo bajo un nuevo nombre y ver los resultados

        # Ejecutar análisis de tensión-deformación para la conexión
        con1_cbfem_results1 = api_client.calculation.calculate(api_client.project.active_project_id, calcParams)
        results = api_client.calculation.get_results(api_client.project.active_project_id, calcParams)
        CheckResSummary = pd.DataFrame(results[0].check_res_summary)
        print("Results summary: \n",CheckResSummary[1])

        #Crear nuevo archivo ideaCon y aplicar la plantilla
        updated_file_name = r'C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 03 with template.ideaCon'
        api_client.project.download_project(api_client.project.active_project_id, updated_file_name )
        print("New project with template ",updated_file_name)

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

inline image in article
inline image in article

Los resultados están bien.En el siguiente tutorial, nos enfocaremos en optimizar algunos de los componentes.

Descargas archivos adjuntos

Artículos relacionados