Hoe te beginnen met API - Importeer een sjabloon en voer berekening 03 uit
Eerste stappen
We raden aan om de tutorial Hoe te beginnen met API - Basics 01 door te nemen, die je leert over de API en hoe je de omgeving instelt.
Verbindingsbestand
Dit voorbeeld is gebaseerd op bestanden die zijn gemaakt binnen de tutorial Hoe te beginnen met API - Batch import van combinaties 02.
Download alsjeblieft de bestanden tutorial 02 with loads.ideaCon en tutorial 02.contemp naar je PC.
Python client
Voer opnieuw de "IdeaStatiCa.ConnectionRestApi.exe" uit in CMD binnen de juiste IDEA StatiCa map en open de IDE tool van je keuze.
- Maak een nieuw bestand aan en importeer de pakketten die het gebruik van berekening en link 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
#Import pakketten voor visualisatie
import pandas as pd
## Link met baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher
- Configureer de logging via de variabele "baseUrl," die je localhost zal ophalen. In de tweede stap, koppel het absolute pad van je IDEA StatiCa Connection bestand.
## Configureer logging
baseUrl = "http://localhost:5000"
## Absoluut pad naar map met je python script en 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)
- Koppel de client met een reeds draaiende service. Gebruik het try/except blok - omdat het try blok een fout genereert, wordt het except blok uitgevoerd. In de eerste fase is het nodig om het project te openen en de project ID van je project te vinden, die uniek is voor elk IDEA StatiCa project. Dan hebben we alle verbindingen nodig, die opgeslagen zijn in ons bestand, omdat we de sjabloon alleen op de eerste willen toepassen.Als volgende stap kunnen we het standaard mapping sjabloonbestand lezen en een andere boutassemblage (M20 8.8) toevoegen aan de MPRL database.
# Maak een client gekoppeld aan een reeds draaiende 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
# Krijg lijst 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 | Data van de sjabloon om standaard mapping te krijgen (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()
# krijg de standaard mapping voor de geselecteerde sjabloon en verbinding
default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
print("Standaard mapping: ",default_mapping)
#voeg nieuwe boutassemblage toe aan de MPRL database
mprlElement = ConMprlElement()
print(mprlElement)
mprlElement.mprl_name = "M20 8.8"
api_client.material.add_bolt_assembly(activeProjectId, mprlElement)
print("Nieuwe boutassemblage toegevoegd", mprlElement.mprl_name)
boltsInProject = api_client.material.get_bolt_assemblies(activeProjectId)
- Als we de nieuwe boutassemblage direct willen toewijzen aan de operatie Plaat tot plaat, moeten we het commando BaseTemplateConversion() uitvoeren en het toevoegen aan de mapping sjabloon.
# voeg nieuwe boutassemblage toe aan mapping sjabloon
boltConversion = BaseTemplateConversion()
boltConversion.original_value = 'M16 8.8'
boltConversion.original_template_id = '1'
boltConversion.new_value = 'M20 8.8'
boltConversion.description = 'Bout Assemblage'
boltConversion.new_template_id = '2'
default_mapping.conversions.append(boltConversion)
print("Nieuwe mapping: ", default_mapping)
# Pas de gewijzigde sjabloon toe op de verbinding
applyTemplateData = ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam | Sjabloon 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 boutassemblage in voor de operaties 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 krijgen
# Krijg de kosten van de verbinding met de toegepaste sjabloon
costs = api_client.connection.get_production_cost(api_client.project.active_project_id, connection1.id)
print("Kosten: ",costs.total_estimated_cost)
- Als laatste stap kunnen we de berekening uitvoeren, de resultaten bekijken, het bestand onder een nieuwe naam opslaan, en de resultaten bekijken
# Voer spanning-rek analyse uit voor de verbinding
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("Resultaten samenvatting: \n",CheckResSummary[1])
#Maak nieuw ideaCon bestand en pas de sjabloon 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("Nieuw project met sjabloon ",updated_file_name)
except Exception as e:
print("Operatie mislukt : %s\n" % e)
De resultaten zijn OK.In de volgende tutorial zullen we ons richten op het optimaliseren van enkele van de componenten.
Toegevoegde downloads
- 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)