Come iniziare con API - Importare un modello ed eseguire un calcolo 03
Primi passi
Si consiglia di consultare il tutorial Come iniziare con l'API - Nozioni di base 01, che illustra l'API e come impostare l'ambiente.
File di connessione
Questo esempio si basa sui file creati nell'esercitazione Come iniziare con l'API - Importazione in batch di combinazioni 02.
Scaricare i file tutorial 02 with loads.ideaCon e tutorial 02.contemp sul proprio PC.
Client Python
Anche in questo caso, eseguire "IdeaStatiCa.ConnectionRestApi.exe" in CMD all'interno della cartella IDEA StatiCa appropriata e aprire lo strumento IDE di vostra scelta.
- Creare un nuovo file e importare 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 i pacchetti per la visualizzazione
import pandas as pd
## Collegamento con baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher
- Configurare il logging tramite la variabile"baseUrl", che richiamerà il proprio localhost. Nel secondo passo, accoppiare il percorso assoluto del file IDEA StatiCa Connection.
## Configurare il logging
baseUrl = "http://localhost:5000"
## Percorso assoluto della cartella con lo script python e il 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)
- Abbinare il client a un servizio già in esecuzione. Utilizzare 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, che è unico per ogni progetto IDEA StatiCa. Poi abbiamo bisogno di tutte le connessioni, memorizzate nel nostro file, poiché vogliamo applicare il modello solo alla prima. Come passo successivo, possiamo leggere il file del modello di mappatura predefinito e aggiungere un altro assieme di bulloni (M20 8.8) al database MPRL.
# Creare un client collegato a un servizio già in esecuzione
con connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
try:
# Aprire il progetto
uploadRes = api_client.project.open_project_from_filepath(project_file_path)
activeProjectId = api_client.project.active_project_id
# Ottenere l'elenco 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 modello per ottenere la mappatura predefinita (opzionale)
templateParam = ideastatica_connection_api.ConTemplateMappingGetParam()
#nome_file_template
template_file_name = r "C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 02.contemp"
con open(template_file_name, 'r', encoding='utf-16') come file:
templateParam.template = file.read()
# ottiene la mappatura predefinita per il template selezionato e la connessione
default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
print("Mappatura predefinita: ",default_mapping)
#aggiungere il nuovo assembly bolt 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 si desidera assegnare il nuovo assieme di bulloni all'operazione Piastra per piastra direttamente, occorre eseguire il comando BaseTemplateConversion() e aggiungerlo al modello di mappatura.
# aggiungere il nuovo assieme di bulloni al modello 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("Nuova mappatura: ", default_mapping)
# Applicare il modello modificato alla connessione
applyTemplateData = ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam | Modello 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)
# Impostare il nuovo assieme bolt 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 della connessione
# Ottenere i costi della connessione con il modello 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 memorizzare il file con un nuovo nome e vedere i risultati
# Eseguire l'analisi di sollecitazione-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("Riepilogo risultati: \n",CheckResSummary[1])
#Creare un nuovo file ideaCon e applicare il modello
updated_file_name = r'C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 03 con modello.ideaCon'
api_client.project.download_project(api_client.project.active_project_id, updated_file_name )
print("Nuovo progetto con modello ",updated_file_name)
except Exception as e:
print("Operazione fallita : %s\n" % e)
I risultati sono OK. Nel prossimo tutorial ci concentreremo sull'ottimizzazione di alcuni 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)