API'ye Nasıl Başlanır - Şablon İçe Aktarma ve Hesaplama Çalıştırma 03
İlk adımlar
API hakkında bilgi edinmek ve ortamı nasıl kuracağınızı öğrenmek için API'ye Nasıl Başlanır - Temel Bilgiler 01 eğitimini incelemenizi öneririz.
Connection dosyası
Bu örnek, API'ye Nasıl Başlanır - Kombinasyonların Toplu İçe Aktarımı 02 eğitiminde oluşturulan dosyalara dayanmaktadır.
Lütfen tutorial 02 with loads.ideaCon ve tutorial 02.contemp dosyalarını bilgisayarınıza indirin.
Python istemcisi
Yine, uygun IDEA StatiCa klasöründe CMD içinde "IdeaStatiCa.ConnectionRestApi.exe" dosyasını çalıştırın ve tercih ettiğiniz IDE aracını açın.
- Yeni bir dosya oluşturun ve hesaplama kullanımını etkinleştirecek ve localhost URL'si ile bağlantı kuracak paketleri içe aktarın.
Kaynak kodu:
## API paketinin içe aktarımı
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
#Görselleştirme için paketleri içe aktar
import pandas as pd
## baseUrl ile bağlantı
import ideastatica_connection_api.connection_api_service_attacher as connection_api_service_attacher
- Localhost'unuzu çekecek olan "baseUrl" değişkeni aracılığıyla günlük kaydını yapılandırın. İkinci adımda, IDEA StatiCa Connection dosyanızın mutlak yolunu eşleştirin.
## Günlük kaydını yapılandır
baseUrl = "http://localhost:5000"
## Python betiğinizin ve connection modülünüzün bulunduğu klasörün mutlak yolu
project_file_path = r"C:\Users\AlexanderSzotkowski\Documents\IDEA\API\Tutorial 03\tutorial 02 with loads.ideaCon"
print("Opening project ",project_file_path)
- İstemciyi zaten çalışan bir servis ile eşleştirin. try/except bloğunu kullanın - try bloğu bir hata oluşturduğunda except bloğu çalıştırılacaktır. İlk aşamada, projeyi açmak ve her IDEA StatiCa projesi için benzersiz olan proje kimliğini bulmak gereklidir. Ardından, şablonu yalnızca ilk birleşime uygulamak istediğimizden, dosyamızda depolanan tüm birleşimlere ihtiyacımız vardır. Sonraki adım olarak, varsayılan eşleme şablon dosyasını okuyabilir ve MPRL veritabanına başka bir cıvata takımı (M20 8.8) ekleyebiliriz.
# Zaten çalışan bir servise bağlı bir istemci oluştur
with connection_api_service_attacher.ConnectionApiServiceAttacher(baseUrl).create_api_client() as api_client:
try:
# Projeyi aç
uploadRes = api_client.project.open_project_from_filepath(project_file_path)
activeProjectId = api_client.project.active_project_id
# Projedeki tüm birleşimlerin listesini al
connections_in_project = api_client.connection.get_connections(activeProjectId)
# Projedeki ilk birleşim
connection1 = connections_in_project[0]
# ConTemplateMappingGetParam | Varsayılan eşlemeyi almak için şablon verisi (isteğe bağlı)
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()
# Seçilen şablon ve birleşim için varsayılan eşlemeyi al
default_mapping = api_client.template.get_default_template_mapping(api_client.project.active_project_id, connection1.id, templateParam)
print("Default mapping: ",default_mapping)
#MPRL veritabanına yeni cıvata takımı ekle
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)
- Yeni cıvata takımını doğrudan Plakadan plakaya işlemine atamak istiyorsak, BaseTemplateConversion() komutunu çalıştırmalı ve bunu eşleme şablonuna eklememiz gerekir.
# Eşleme şablonuna yeni cıvata takımı ekle
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)
# Değiştirilen şablonu birleşime uygula
applyTemplateData = ideastatica_connection_api.ConTemplateApplyParam() # ConTemplateApplyParam | Uygulanacak şablon (isteğe bağlı)
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 dosyasındaki işlemlere yeni cıvata takımını ata
commonProperties = ConOperationCommonProperties()
commonProperties.bolt_assembly_id = 2
api_client.operation.update_common_operation_properties(api_client.project.active_project_id, connection1.id, commonProperties)
- Birleşimin maliyetlerini de alabiliriz
# Uygulanan şablonla birleşimin maliyetlerini al
costs = api_client.connection.get_production_cost(api_client.project.active_project_id, connection1.id)
print("Costs: ",costs.total_estimated_cost)
- Son adım olarak, hesaplamayı çalıştırabilir, sonuçları görebilir, dosyayı yeni bir adla kaydedebilir ve sonuçları inceleyebiliriz
# Birleşim için gerilme-gerinim analizi çalıştır
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])
#Yeni ideaCon dosyası oluştur ve şablonu uygula
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)
Sonuçlar kabul edilebilir düzeydedir. Bir sonraki eğitimde, bazı bileşenlerin optimizasyonuna odaklanacağız.
Ekli İndirmeler
- tutorial 02.contemp (CONTEMP, 34 kB)
- tutorial 03 - apply_a_template.py (PY, 5 kB)
- tutorial 03 with template.ideaCon (İDEACON, 14 kB)
- tutorial 02 with loads.ideaCon (İDEACON, 9 kB)