How to get started with API - Import a template and run calculation 03
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.
- 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
- 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)
- 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)
- 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)
- 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)
- 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)
I risultati sono OK.Nel tutorial seguente, ci concentreremo sull'ottimizzazione di alcuni dei componenti.
Download allegati
- tutorial 02.contemp (CONTEMP, 194 kB)
- tutorial 03 - apply_a_template.py (PY, 5 kB)
- tutorial 03 with template.ideaCon (IDEACON, 59 kB)
- tutorial 02 with loads.ideaCon (IDEACON, 9 kB)