Hoe te beginnen met API - Een template importeren en berekening uitvoeren 03

Dit artikel is ook beschikbaar in:
Vertaald door AI vanuit het Engels
In deze tutorial leert u hoe u een template importeert, enkele wijzigingen aanbrengt in de standaardinstellingen en resultaten samen met kosten ophaalt.

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.

inline image in article
  • 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

inline image in article
  • 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)

inline image in article
  • 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) 

inline image in article
  • 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)

inline image in article
  • 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)

inline image in article
  • 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)

inline image in article
inline image in article

De resultaten zijn in orde. In de volgende tutorial richten we ons op het optimaliseren van enkele componenten.

Toegevoegde downloads

Gerelateerde artikelen