Hoe te beginnen met API - Een template importeren en berekening uitvoeren 03
Eerste stappen
We raden aan de tutorial Hoe te beginnen met API - Basis 01 te doorlopen, waarin u leert over de API en hoe u de omgeving instelt.
Verbindingsbestand
Dit voorbeeld is gebaseerd op bestanden die zijn aangemaakt in de tutorial Hoe te beginnen met API - Batch import van combinaties 02.
Download de bestanden tutorial 02 with loads.ideaCon en tutorial 02.contemp naar uw pc.
Python client
Start opnieuw de "IdeaStatiCa.ConnectionRestApi.exe" in CMD vanuit de juiste IDEA StatiCa map en open de IDE tool naar keuze.
- Maak een nieuw bestand aan en importeer de pakketten die het gebruik van berekeningen en de koppeling met de localhost URL mogelijk maken.
Broncode:
## Import van API-pakket
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
#Importeer pakketten voor visualisatie
import pandas as pd
## Koppeling met baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher
- Configureer de logging via de variabele "baseUrl," die uw localhost ophaalt. Koppel in de tweede stap het absolute pad van uw IDEA StatiCa Connection bestand.
## Configureer logging
baseUrl = "http://localhost:5000"
## Absoluut pad naar de map met uw python-script en verbindingsmodule
project_file_path = r"C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 02 with loads.ideaCon"
print("Opening project ",project_file_path)
- Koppel de client aan een reeds actieve service. Gebruik het try/except-blok - wanneer het try-blok een fout genereert, wordt het except-blok uitgevoerd. In de eerste fase is het noodzakelijk het project te openen en de project-ID van uw project te vinden, die uniek is voor elk IDEA StatiCa project. Vervolgens hebben we alle verbindingen nodig die in ons bestand zijn opgeslagen, omdat we de template alleen op de eerste willen toepassen. Als volgende stap kunnen we het standaard mapping-templatebestand inlezen en een extra boutsamenstelling (M20 8.8) toevoegen aan de MPRL-database.
# Maak een client aan gekoppeld aan een reeds actieve 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
# Haal lijst op van alle verbindingen in het project
connections_in_project = api_client.connection.get_connections(activeProjectId)
# eerste verbinding in het project
connection1 = connections_in_project[0]
# ConTemplateMappingGetParam | Gegevens van de template om standaard mapping op te halen (optioneel)
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()
# haal de standaard mapping op voor de geselecteerde template en verbinding
default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
print("Default mapping: ",default_mapping)
#voeg nieuwe boutsamenstelling toe aan de 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)
- Als we de nieuwe boutsamenstelling direct willen toewijzen aan de bewerking Plaat aan plaat, moeten we de opdracht BaseTemplateConversion() uitvoeren en deze toevoegen aan de mapping-template.
# voeg nieuwe boutsamenstelling toe aan 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)
# Pas de gewijzigde template toe op de verbinding
applyTemplateData = ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam | Template om toe te passen (optioneel)
applyTemplateData.connection_template = templateParam.template
applyTemplateData.mapping = default_mapping
applyTemplateResult = api_client.template.apply_template(api_client.project.active_project_id, connection1.id, applyTemplateData)
# Stel de nieuwe boutsamenstelling in voor de bewerkingen in het ideaCon-bestand
commonProperties = ConOperationCommonProperties()
commonProperties.bolt_assembly_id = 2
api_client.operation.update_common_operation_properties(api_client.project.active_project_id, connection1.id, commonProperties)
- We kunnen ook de kosten voor de verbinding opvragen
# Haal de kosten op van de verbinding met de toegepaste template
costs = api_client.connection.get_production_cost(api_client.project.active_project_id, connection1.id)
print("Costs: ",costs.total_estimated_cost)
- Als laatste stap kunnen we de berekening uitvoeren, de resultaten bekijken, het bestand opslaan onder een nieuwe naam en de resultaten inzien
# Voer spanning-rek analyse uit voor de verbinding
con1_cbfem_results1 = api_client.calculation.calculate(api_client.project.active_project_id, [connection1.id])
results = api_client.calculation.get_results(api_client.project.active_project_id, [connection1.id])
CheckResSummary = pd.DataFrame(results[0].check_res_summary)
print("Results summary: \n",CheckResSummary[1])
#Maak nieuw ideaCon-bestand aan en pas de template toe
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)
De resultaten zijn in orde. In de volgende tutorial richten we ons op het optimaliseren van enkele componenten.
Toegevoegde downloads
- tutorial 02.contemp (CONTEMP, 34 kB)
- tutorial 03 - apply_a_template.py (PY, 5 kB)
- tutorial 03 with template.ideaCon (IDEACON, 14 kB)
- tutorial 02 with loads.ideaCon (IDEACON, 9 kB)