Interfejs COM w VBA | 4.1 Optymalizacja ramki

Artykuł o tematyce technicznej

Części 4.1 i 4.2 serii dotyczą optymalizacji ramki za pomocą dodatkowego modułu RF- / STEEL EC3. Piąta część dotyczy połączenia modułu i pobierania odpowiednich pasków. Elementy, które zostały już wyjaśnione w poprzednich częściach, nie będą ponownie omawiane.

Rys. 01 - System

Odfiltruj odpowiednie paski

Celem powinno być przejęcie tylko prętów o pewnym przekroju w wymiarowaniu modułu EC3. W poniższym przykładzie wszystkie pręty o przekroju „IPE 300” należy odfiltrować. W tym celu pobierane są najpierw wszystkie przekroje programu głównego:

' Zeichenkette des gewünschten Querschnitts anlegen
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Alle Querschnitte aus RFEM holen
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Schleife über alle Querschnitte
Dim crsc_no As Long
crsc_no = -1
DimAs Long
For i = 0 To UBound(crscs, 1)
' Wenn die Querschnittsbezeichung stimmt, Querschnittsnummer speichern
If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
crsc_no = crscs(i).No
Exit For
End If
Next i

' Programm beenden, wenn der gewünschte Querschnitt nicht gefunden wurde
If crsc_no = -1 Then
Err.Raise 513, "Get cross-section number" , "No cross-section with "" " & crsc_desc & " "" within its description found!"
End If

Dostosowanie oznaczenia przekroju poprzecznego powinno być możliwie jak najbardziej ogólne. W tym celu oznaczenie przekroju, jak również ciąg znaków, który ma być przeszukiwany, jest najpierw ustawiany na małe litery za pomocą „LCase”, a następnie wyszukiwany ciąg znaków w oznaczeniu przekroju poprzecznego. Jeśli nie znaleziono pasującego przekroju poprzecznego, liczba przekrojów pozostaje na poziomie -1, który można następnie sprawdzić i potwierdzić za pomocą przerwania.

Po tym kroku numer przekroju jest znany, a pręty z tym numerem przekroju mogą być przeszukiwane. Tylko pręty mają być przejęte, które mają ten przekrój na początku i na końcu:

' Zeichenkette für Stabliste anlegen und zu null setzen
Dim mems_str As String
mems_str = vbanullstr

' Alle Stäbe aus RFEM holen
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Schleife über alle Stäbe
For i = 0 To UBound(mems, 1)
' Wenn ein Stab diese Querschnittsnummer am Anfang und am Ende hat,
' dann wird dessen Nummer in die Zeichenkette übernommen
If mems(i).EndCrossSectionNo = crsc_no Then
If mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNo Then
mems_str = mems_str & mems(i).No & ","
End If
End If
Next i

' Programm beenden, wenn kein Stab gefunden wurde
If mems_str = vbanullstr Then
Err.Raise 514, "Get members" , "No member with cross-section "" " & crsc_desc & " "" found!"
End If

Uzyskaj interfejs dodatkowego modułu

Połączenie z modułem jest podobne do połączenia z programem RFEM lub RSTAB. Jedyną różnicą jest to, że nie ma rozróżnienia między otwarciem już otwartej instancji lub otwarciem nowej instancji, ponieważ zawsze istnieje już otwarta instancja:

' Interface für Modul holen
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule( "STEEL_EC3" )

Als nächstes werden alle vorhandenen Modulfälle gelöscht:

' Anzahl der vorhandenen Modulfälle holen
Dim count As Long
count = iStec3.moGetCaseCount

' Falls Fälle vorhanden sind, immer den ersten in der Tabelle löschen
If count > 0 Then
For i = 0 To count - 1
iStec3.moDeleteCase i, AT_INDEX
Next i
End If

Następnie można utworzyć żądany przypadek i wprowadzić pręty do projektu za pomocą wcześniej utworzonego ciągu:

' Modulfall "Optimization" anlegen
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization" )

' Stäbe für Bemessung setzen
iStec3Case.moSetMemberList mems_str

Na koniec dodaje się żądane kombinacje obciążeń:

' Lastkombinationen setzen
Dim iStec3_uls_loads(0 To 2) As STEEL_EC3.ULS_LOAD

iStec3_uls_loads(0).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(0).No = 1
iStec3_uls_loads(0).Type = ILOAD_GROUP

iStec3_uls_loads(1).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(1).No = 2
iStec3_uls_loads(1).Type = ILOAD_GROUP

iStec3_uls_loads(2).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(2).No = 3
iStec3_uls_loads(2).Type = ILOAD_GROUP

iStec3Case.moSetULSLoads iStec3_uls_loads

Podsumowanie i Outlook

Przedstawione tutaj procedury są reprezentatywne dla wszystkich modułów, które można kontrolować za pomocą COM. Kod źródłowy i plik Excel pomagają lepiej zrozumieć temat. W następnym artykule zajmiemy się głębiej i stworzymy połączenie między elementami w module iw programie głównym.

Do pobrania

Linki

Kontakt

Kontakt do Dlubal

Mają Państwo pytania lub potrzebują porady?
Zapraszamy do bezpłatnego kontaktu z nami drogą mailową, poprzez czat lub forum lub odwiedzenia naszej strony z FAQ z użytecznymi wskazówkami i rozwiązaniami.

+48 (32) 782 46 26

+48 730 358 225

info@dlubal.pl

RFEM Program główny
RFEM 5.xx

Program główny

Oprogramowanie do obliczeń płaskich i przestrzennych układów konstrukcyjnych, obejmujących płyty, ściany, powłoki, pręty (belki), bryły i elementy kontaktowe, z wykorzystaniem Metody Elementów Skończonych (MES)

Cena pierwszej licencji
3 540,00 USD
RFEM Konstrukcje stalowe i aluminiowe
RF-STEEL EC3 5.xx

Moduł dodatkowy

Wymiarowanie prętów stalowych wg EC 3

Cena pierwszej licencji
1 480,00 USD
RFEM Inne
RF-COM 5.xx

Moduł dodatkowy

Programowalny interfejs (API) w oparciu o technologię COM

Cena pierwszej licencji
580,00 USD