API'ye Nasıl Başlanır - Şablon İçe Aktarma ve Hesaplama Çalıştırma 03

Bu makale aynı zamanda şu dillerde de mevcuttur:
İngilizceden yapay zeka tarafından çevrildi
Bu eğitimde, bir şablonu nasıl içe aktaracağınızı, varsayılan ayarlarda bazı değişiklikler yapacağınızı ve sonuçları maliyetlerle birlikte nasıl elde edeceğinizi öğreneceksiniz.

İ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.

inline image in article
  • 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

inline image in article
  • 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)

inline image in article
  • İ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) 

inline image in article
  • 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)

inline image in article
  • 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)

inline image in article
  • 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)

inline image in article
inline image in article

Sonuçlar kabul edilebilir düzeydedir. Bir sonraki eğitimde, bazı bileşenlerin optimizasyonuna odaklanacağız.

Ekli İndirmeler

İlgili makaleler