Filtrowanie odpowiednich prętów
Celem jest przeniesienie tylko prętów o określonym przekroju do obliczeń RF-/STEEL EC3. W poniższym przykładzie należy filtrować wszystkie pręty o przekroju IPE 300. W tym celu należy najpierw pobrać wszystkie przekroje z programu głównego:
' Utworzyć ciąg o żądanym przekroju
crsc_desc =„IPE 300”
' Pobranie wszystkich przekrojów z programu RFEM
Dim crscs ()As RFEM5.Cross Section
crscs = iModelData.GetCrossSections
' Pętla po wszystkich przekrojach
Dim crsc_nrJak długo
crsc_no = -1
Dim iJak długo
Jeżeli chcesz zadać krótkie pytanie techniczne, i = 0To UBound(crscs, 1)
' Jeżeli opis przekroju jest poprawny, należy zapisać numer przekroju
If InStr(LCase(crsc(i).Description), LCase(crsc_desc)) > 0Wtedy
crsc_no = crscs(i).No
Wyjdź po
End If
Następny i
' Zamykanie programu, jeżeli nie znaleziono żądanego przekroju
If crsc_no = -1Wtedy
Err.Raise 513, "Uzyskaj numer przekroju",„Brak przekroju z „” ” & crsc_desc &„ „”Znaleziono w opisie!”
End If
Opis przekroju powinien być zsynchronizowany w sposób jak najbardziej ogólny. W tym celu najpierw w opisie przekroju oraz w wyszukiwanym tekście zostają zapisane małe litery za pomocą „LCase”, a następnie wyszukiwany jest ciąg znaków w opisie przekroju. Jeżeli nie zostanie znaleziony odpowiedni przekrój, numer przekroju pozostaje -1, co można potwierdzić poprzez przerwanie.
Po tym kroku znany jest numer przekroju i można było rozpocząć wyszukiwanie prętów o tym numerze przekroju. Na początku i na końcu pręta należy przyjąć tylko pręt o takim przekroju:
' Utworzyć ciąg dla listy prętów i ustawić go na zero
Dim mems_strJako ciąg
mems_str = vbanullstr
' Pozyskaj wszystkie pręty z RFEM
Dim mem ()As RFEM5.Member
mems = iModelData.GetMembers
' Pętla nad wszystkimi prętami
Jeżeli chcesz zadać krótkie pytanie techniczne, i = 0To UBound(mems, 1)
'Jeżeli pręt ma na początku i na końcu numer przekroju,
', a następnie weź tę liczbę w łańcuchu
If mems(i).EndCrossSectionNo = crsc_noWtedy
If mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNoWtedy
mems_str = mems_str & mems (i).No & ","
End If
End If
Następny i
' Zakończ program, jeżeli nie znaleziono pręta
If mems_str = vbanullstrWtedy
Err.Raise 514, "Pobierz członków",„Brak pręta o przekroju” ” & crsc_desc &„„Znalezione!
End If
Pobieranie interfejsu modułu dodatkowego
Połączenie z modułem jest dokładnie takie samo, jak połączenie z programem RFEM lub RSTAB. Jedyna różnica polega na tym, że nie ma różnicy pomiędzy otwarciem już otwartej instancji a otwarciem nowej, ponieważ zawsze otwarta jest jedna instancja:
' Pobranie interfejsu dla modułu
Dim iStec3As STEEL_EC3.Module
Ustawić iStec3 = iModel.GetModule ("STEEL_EC3")
Następnie usuwane są wszystkie istniejące przypadki modułów:
' Uzyskaj liczbę istniejących przypadków modułów
Dim liczyćJak długo
Count = iStec3.moGetCaseCount
'Jeżeli występują przypadki, w tabeli należy usuwać zawsze pierwszy
If liczba > 0Wtedy
Jeżeli chcesz zadać krótkie pytanie techniczne, i = 0To ilość - 1
iStec3.moDeleteCase i, AT_INDEX
Następny i
End If
Teraz można utworzyć żądany przypadek i wprowadzić pręt, który ma zostać wymiarowany, przy użyciu wcześniej utworzonego łańcucha.
' Utworzyć przypadek modułu 'Optymalizacja'
Dim iStec3CaseAs STEEL_EC3.ICase
Ustawić iStec3Case = iStec3.moSetCase (1,„Optymalizacja”)
' Ustawić pręty do obliczeń
iStec3Case.moSetMemberList mems_str
Na koniec można wprowadzić żądane kombinacje obciążeń:
' Ustawić kombinacje obciążeń
Dim iStec3_uls_loads (0To 2) As STEEL_EC3.ULS_LOAD
iStec3_uls_loads (0) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (0) .No = 1
iStec3_uls_loads (0). Typ = 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). Typ = ILOAD_GROUP
iStec3Case.moSetULSLoads iStec3_uls_loads
Podsumowanie i potencjał rozwoju
Procedury opisane w tym artykule można stosować w przypadku wszystkich modułów, które mogą być kontrolowane przez COM. Pomocny jest kod źródłowy i plik Excel, dzięki któremu można lepiej zrozumieć temat. W następnym artykule chciałbym pogłębić tę kwestię i wyjaśnić powiązanie między elementami w module a programem głównym.