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

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

첨부 다운로드

관련 기사