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

Questo articolo è disponibile in:
Translated by AI from English
In questo tutorial, imparerai come importare un template, apportare alcune modifiche alle impostazioni predefinite e ottenere risultati insieme ai costi.

Primi passi

Consigliamo di seguire il tutorial Come iniziare con l'API - Nozioni di base 01, che ti insegna l'API e come configurare l'ambiente.

File di connessione 

Questo esempio è basato sui file creati nel tutorial Come iniziare con l'API - Importazione batch di combinazioni 02

Scarica i file tutorial 02 with loads.ideaCon e tutorial 02.contemp sul tuo PC.

Client Python

Ancora una volta, esegui "IdeaStatiCa.ConnectionRestApi.exe" in CMD nella cartella IDEA StatiCa appropriata e apri lo strumento IDE di tua scelta.

inline image in article
  • Crea un nuovo file e importa i pacchetti che consentiranno l'uso del calcolo e il collegamento con l'URL localhost. 

Codice sorgente:

## Importazione del pacchetto 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

#Importa pacchetti per la visualizzazione
import pandas as pd

## Collegamento con baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher

inline image in article
  • Configura il logging tramite la variabile "baseUrl," che richiamerà il tuo localhost. Nel secondo passaggio, abbina il percorso assoluto del tuo file IDEA StatiCa Connection.

## Configura logging
baseUrl = "http://localhost:5000"

## Percorso assoluto nella cartella con il tuo script python e modulo di connessione
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
  • Abbina il client con un servizio già in esecuzione. Usa il blocco try/except - poiché il blocco try genera un errore, verrà eseguito il blocco except. Nella prima fase, è necessario aprire il progetto e trovare l'ID del progetto del tuo progetto, che è unico per ogni progetto IDEA StatiCa. Poi abbiamo bisogno di tutte le connessioni, memorizzate nel nostro file, poiché vogliamo applicare il template solo alla prima.Come passo successivo, potremo leggere il file template di mappatura predefinito e aggiungere un altro assemblaggio bullone (M20 8.8) al database MPRL.

# Crea un client collegato a un servizio già in esecuzione
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
    try:
        # Apri progetto
        uploadRes = api_client.project.open_project_from_filepath(project_file_path)
        activeProjectId = api_client.project.active_project_id      
        # Ottieni lista di tutte le connessioni nel progetto
        connections_in_project = api_client.connection.get_connections(activeProjectId)

        # prima connessione nel progetto
        connection1 = connections_in_project[0]      

        # ConTemplateMappingGetParam | Dati del template per ottenere la mappatura predefinita (opzionale)
      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()

        # ottieni la mappatura predefinita per il template e la connessione selezionati  
        default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
        print("Default mapping: ",default_mapping)        

        #aggiungi nuovo assemblaggio bullone al database 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
  • Se vogliamo assegnare il nuovo assemblaggio bullone all'operazione Piastra a piastra direttamente, dobbiamo eseguire il comando BaseTemplateConversion() e aggiungerlo al template di mappatura..

       # aggiungi nuovo assemblaggio bullone al template di mappatura       
      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)       

       # Applica il template modificato alla connessione
       applyTemplateData =  ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam |       Template da applicare (opzionale)
        applyTemplateData.connection_template = templateParam.template
        applyTemplateData.mapping = default_mapping
        applyTemplateResult = api_client.template.apply_template(api_client.project.active_project_id, connection1.id, applyTemplateData)

        # Imposta il nuovo assemblaggio bullone alle operazioni nel file 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
  • Possiamo anche ottenere i costi per la connessione

       # Ottieni i costi della connessione con il template applicato
        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
  • Come ultimo passo, possiamo eseguire il calcolo, vedere i risultati, salvare il file con un nuovo nome e vedere i risultati

        # Esegui analisi tensione-deformazione per la connessione
        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])

        #Crea nuovo file ideaCon e applica il template
        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

I risultati sono OK.Nel tutorial seguente, ci concentreremo sull'ottimizzazione di alcuni dei componenti.

Download allegati

Articoli correlati