API 시작하기 - 템플릿 가져오기 및 계산 실행 03

이 기사는 다음 언어로도 제공됩니다:
영어에서 AI로 번역됨
이 튜토리얼에서는 템플릿을 가져오고, 기본 설정을 일부 변경하며, 결과와 비용을 함께 얻는 방법을 배웁니다.

첫 번째 단계

API 및 환경 설정 방법을 안내하는 튜토리얼 API 시작하기 - 기초 01을 먼저 진행하시기 바랍니다.

Connection 파일 

이 예제는 튜토리얼 API 시작하기 - 하중 조합 일괄 가져오기 02에서 생성된 파일을 기반으로 합니다. 

파일 tutorial 02 with loads.ideaCon 및 tutorial 02.contemp를 PC에 다운로드하십시오.

Python 클라이언트

다시 한번, 적절한 IDEA StatiCa 폴더 내에서 CMD로 "IdeaStatiCa.ConnectionRestApi.exe"를 실행하고 원하는 IDE 도구를 여십시오.

inline image in article
  • 새 파일을 만들고 계산 사용 및 localhost URL 연결을 가능하게 하는 패키지를 가져옵니다. 

소스 코드:

## 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 pandas as pd

## baseUrl과 연결
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher

inline image in article
  • localhost를 불러올 변수 "baseUrl"을 통해 로깅을 구성합니다. 두 번째 단계에서는 IDEA StatiCa Connection 파일의 절대 경로를 연결합니다.

## 로깅 구성
baseUrl = "http://localhost:5000"

## Python 스크립트 및 연결 모듈이 있는 폴더의 절대 경로
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
  • 이미 실행 중인 서비스에 클라이언트를 연결합니다. try/except 블록을 사용하십시오 - try 블록에서 오류가 발생하면 except 블록이 실행됩니다. 첫 번째 단계에서는 프로젝트를 열고 모든 IDEA StatiCa 프로젝트에 고유한 프로젝트 ID를 찾아야 합니다. 그런 다음 파일에 저장된 모든 연결을 가져와야 합니다. 첫 번째 연결에만 템플릿을 적용하려고 하기 때문입니다. 다음 단계로, 기본 매핑 템플릿 파일을 읽고 MPRL 데이터베이스에 볼트 어셈블리 (M20 8.8)를 추가할 수 있습니다.

# 이미 실행 중인 서비스에 연결된 클라이언트 생성
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
    try:
        # 프로젝트 열기
        uploadRes = api_client.project.open_project_from_filepath(project_file_path)
        activeProjectId = api_client.project.active_project_id      
        # 프로젝트의 모든 연결 목록 가져오기
        connections_in_project = api_client.connection.get_connections(activeProjectId)

        # 프로젝트의 첫 번째 연결
        connection1 = connections_in_project[0]      

        # ConTemplateMappingGetParam | 기본 매핑을 가져올 템플릿 데이터 (선택 사항)
      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()

        # 선택한 템플릿 및 연결에 대한 기본 매핑 가져오기  
        default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
        print("Default mapping: ",default_mapping)        

        #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
  • 새 볼트 어셈블리를 Plate to plate 작업에 직접 할당하려면 BaseTemplateConversion() 명령을 실행하고 매핑 템플릿에 추가해야 합니다.

       # 매핑 템플릿에 새 볼트 어셈블리 추가       
      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)       

       # 변경된 템플릿을 연결에 적용
       applyTemplateData =  ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam |       적용할 템플릿 (선택 사항)
        applyTemplateData.connection_template = templateParam.template
        applyTemplateData.mapping = default_mapping
        applyTemplateResult = api_client.template.apply_template(api_client.project.active_project_id, connection1.id, applyTemplateData)

        # 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
  • 연결의 비용도 확인할 수 있습니다

       # 적용된 템플릿이 포함된 연결의 비용 가져오기
        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
  • 마지막 단계로, 계산을 실행하고 결과를 확인한 후 새 이름으로 파일을 저장하고 결과를 확인할 수 있습니다

        # 연결에 대한 응력-변형률 해석 실행
        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])

        #새 ideaCon 파일 생성 및 템플릿 적용
        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

결과는 정상입니다. 다음 튜토리얼에서는 일부 구성 요소의 최적화에 집중할 것입니다.

첨부 다운로드

관련 기사