API 시작하기 - 템플릿 가져오기 및 계산 실행 03
첫 번째 단계
API 및 환경 설정 방법을 안내하는 튜토리얼 API 시작하기 - 기초 01을 먼저 진행하시기 바랍니다.
Connection 파일
이 예제는 튜토리얼 API 시작하기 - 하중 조합 일괄 가져오기 02에서 생성된 파일을 기반으로 합니다.
파일 tutorial 02 with loads.ideaCon 및 tutorial 02.contemp를 PC에 다운로드하십시오.
Python 클라이언트
다시 한번, 적절한 IDEA StatiCa 폴더 내에서 CMD로 "IdeaStatiCa.ConnectionRestApi.exe"를 실행하고 원하는 IDE 도구를 여십시오.
- 새 파일을 만들고 계산 사용 및 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
- 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)
- 이미 실행 중인 서비스에 클라이언트를 연결합니다. 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)
- 새 볼트 어셈블리를 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)
- 연결의 비용도 확인할 수 있습니다
# 적용된 템플릿이 포함된 연결의 비용 가져오기
costs = api_client.connection.get_production_cost(api_client.project.active_project_id, connection1.id)
print("Costs: ",costs.total_estimated_cost)
- 마지막 단계로, 계산을 실행하고 결과를 확인한 후 새 이름으로 파일을 저장하고 결과를 확인할 수 있습니다
# 연결에 대한 응력-변형률 해석 실행
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)
결과는 정상입니다. 다음 튜토리얼에서는 일부 구성 요소의 최적화에 집중할 것입니다.
첨부 다운로드
- tutorial 02.contemp (CONTEMP, 34 kB)
- tutorial 03 - apply_a_template.py (PY, 5 kB)
- tutorial 03 with template.ideaCon (IDEACON, 14 kB)
- tutorial 02 with loads.ideaCon (IDEACON, 9 kB)