Cum să începi cu API - Importă un șablon și rulează calculul 03
Primii pași
Recomandăm să parcurgeți tutorialul Cum să începi cu API - Noțiuni de bază 01, care vă învață despre API și cum să configurați mediul.
Fișierul de conexiune
Acest exemplu se bazează pe fișierele create în cadrul tutorialului Cum să începi cu API - Import în lot de combinații 02.
Vă rugăm să descărcați fișierele tutorial 02 with loads.ideaCon și tutorial 02.contemp pe PC-ul dvs.
Clientul Python
Din nou, rulați "IdeaStatiCa.ConnectionRestApi.exe" în CMD în folderul corespunzător IDEA StatiCa și deschideți instrumentul IDE la alegere.
- Creați un fișier nou și importați pachetele care vor permite utilizarea calculului și legătura cu URL-ul localhost.
Codul sursă:
## Import of API package
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
#Import packages for visualisation
import pandas as pd
## Link with baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher
- Configurați logarea prin variabila "baseUrl", care va accesa localhost-ul dvs. În al doilea pas, asociați calea absolută a fișierului IDEA StatiCa Connection.
## Configure logging
baseUrl = "http://localhost:5000"
## Absolute path into folder with your python script and connection module
project_file_path = r"C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 02 with loads.ideaCon"
print("Opening project ",project_file_path)
- Asociați clientul cu un serviciu care rulează deja. Folosiți blocul try/except - deoarece blocul try ridică o eroare, blocul except va fi executat. În prima fază, este necesar să deschideți proiectul și să găsiți ID-ul proiectului dvs., care este unic pentru fiecare proiect IDEA StatiCa. Apoi avem nevoie de toate conexiunile, stocate în fișierul nostru, deoarece vrem să aplicăm șablonul doar la prima.Ca următorul pas, vom putea citi fișierul șablon de mapare implicit și să adăugăm o altă asamblare de șuruburi (M20 8.8) la baza de date MPRL.
# Create a client attached to an already running service
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
try:
# Open project
uploadRes = api_client.project.open_project_from_filepath(project_file_path)
activeProjectId = api_client.project.active_project_id
# Get list of all connections in the project
connections_in_project = api_client.connection.get_connections(activeProjectId)
# first connection in the project
connection1 = connections_in_project[0]
# ConTemplateMappingGetParam | Data of the template to get default mapping (optional)
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()
# get the default mapping for the selected template and connection
default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
print("Default mapping: ",default_mapping)
#add new bolt assembly to the MPRL database
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)
- Dacă vrem să atribuim noua asamblare de șuruburi operațiunii Plăci la plăci direct, trebuie să rulăm comanda BaseTemplateConversion() și să o adăugăm la șablonul de mapare.
# add new bolt assembly to mapping template
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)
# Apply the changed template to the connection
applyTemplateData = ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam | Template to apply (optional)
applyTemplateData.connection_template = templateParam.template
applyTemplateData.mapping = default_mapping
applyTemplateResult = api_client.template.apply_template(api_client.project.active_project_id, connection1.id, applyTemplateData)
# Set the new bolt assembly to the operations in the ideaCon file
commonProperties = ConOperationCommonProperties()
commonProperties.bolt_assembly_id = 2
api_client.operation.update_common_operation_properties(api_client.project.active_project_id, connection1.id,commonProperties)
- Putem obține de asemenea costurile pentru conexiune
# Get the costs of the connection with the applied template
costs = api_client.connection.get_production_cost(api_client.project.active_project_id, connection1.id)
print("Costs: ",costs.total_estimated_cost)
- Ca ultim pas, putem rula calculul, să vedem rezultatele, să stocăm fișierul sub un nume nou și să vedem rezultatele
# Run stress-strain analysis for the connection
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])
#Create new ideaCon file and apply the 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)
Rezultatele sunt OK.În următorul tutorial, ne vom concentra pe optimizarea unor componente.
Fișiere atașate
- 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)