Jak rozpocząć pracę z API - Importowanie szablonu i uruchamianie obliczeń 03

Ten artykuł jest również dostępny w:
Przetłumaczone przez AI z języka angielskiego
W tym samouczku dowiesz się, jak zaimportować szablon, wprowadzić zmiany w ustawieniach domyślnych i uzyskać wyniki wraz z kosztami.

Pierwsze kroki

Zalecamy zapoznanie się z samouczkiem Jak rozpocząć pracę z API - Podstawy 01, który wprowadza w zagadnienia API i konfigurację środowiska.

Plik Connection 

Ten przykład bazuje na plikach utworzonych w ramach samouczka Jak rozpocząć pracę z API - Wsadowy import kombinacji 02

Pobierz pliki tutorial 02 with loads.ideaCon oraz tutorial 02.contemp na swój komputer.

Klient Python

Ponownie uruchom "IdeaStatiCa.ConnectionRestApi.exe" w CMD w odpowiednim folderze IDEA StatiCa i otwórz wybrane narzędzie IDE.

inline image in article
  • Utwórz nowy plik i zaimportuj pakiety umożliwiające korzystanie z obliczeń oraz połączenie z adresem URL localhost. 

Kod źródłowy:

## Import pakietu API
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 pakietów do wizualizacji
import pandas as pd

## Połączenie z baseUrl
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher

inline image in article
  • Skonfiguruj logowanie za pomocą zmiennej "baseUrl", która wskaże Twój localhost. W drugim kroku podaj bezwzględną ścieżkę do pliku IDEA StatiCa Connection.

## Konfiguracja logowania
baseUrl = "http://localhost:5000"

## Bezwzględna ścieżka do folderu ze skryptem Python i modułem połączenia
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
  • Powiąż klienta z już uruchomioną usługą. Użyj bloku try/except – jeśli blok try zgłosi błąd, zostanie wykonany blok except. W pierwszej fazie należy otworzyć projekt i znaleźć identyfikator projektu, który jest unikalny dla każdego projektu IDEA StatiCa. Następnie pobieramy wszystkie połączenia zapisane w pliku, ponieważ chcemy zastosować szablon tylko do pierwszego z nich. W kolejnym kroku odczytujemy domyślny plik szablonu mapowania i dodajemy kolejny zestaw śrub (M20 8.8) do bazy danych MPRL.

# Tworzenie klienta podłączonego do już uruchomionej usługi
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
    try:
        # Otwórz projekt
        uploadRes = api_client.project.open_project_from_filepath(project_file_path)
        activeProjectId = api_client.project.active_project_id      
        # Pobierz listę wszystkich połączeń w projekcie
        connections_in_project = api_client.connection.get_connections(activeProjectId)

        # pierwsze połączenie w projekcie
        connection1 = connections_in_project[0]      

        # ConTemplateMappingGetParam | Dane szablonu do pobrania domyślnego mapowania (opcjonalnie)
      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()

        # pobierz domyślne mapowanie dla wybranego szablonu i połączenia  
        default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
        print("Default mapping: ",default_mapping)        

        #dodaj nowy zestaw śrub do bazy danych MPRL
       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
  • Jeśli chcemy przypisać nowy zestaw śrub bezpośrednio do operacji Płyta do płyty, musimy uruchomić polecenie BaseTemplateConversion() i dodać je do szablonu mapowania.

       # dodaj nowy zestaw śrub do szablonu mapowania       
      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)       

       # Zastosuj zmieniony szablon do połączenia
       applyTemplateData =  ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam |       Szablon do zastosowania (opcjonalnie)
        applyTemplateData.connection_template = templateParam.template
        applyTemplateData.mapping = default_mapping
        applyTemplateResult = api_client.template.apply_template(api_client.project.active_project_id, connection1.id, applyTemplateData)

        # Ustaw nowy zestaw śrub dla operacji w pliku ideaCon
       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
  • Możemy również pobrać koszty dla połączenia

       # Pobierz koszty połączenia z zastosowanym szablonem
        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
  • W ostatnim kroku możemy uruchomić obliczenia, zobaczyć wyniki, zapisać plik pod nową nazwą i przejrzeć wyniki

        # Uruchom analizę naprężenie-odkształcenie dla połączenia
        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])

        #Utwórz nowy plik ideaCon i zastosuj szablon
        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

Wyniki są prawidłowe. W kolejnym samouczku skupimy się na optymalizacji niektórych elementów.

Załączone pliki do pobrania

Powiązane artykuły