Hoe te beginnen met API - Importeer een sjabloon en voer berekening 03 uit

Dit artikel is ook beschikbaar in:
In deze tutorial leer je hoe je een sjabloon importeert, enkele wijzigingen aanbrengt in de standaardinstellingen en resultaten verkrijgt samen met kosten.

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.

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

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

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

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

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

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

inline image in article
inline image in article

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

Toegevoegde downloads

Gerelateerde artikelen