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 przekrojucrsc_desc =„IPE 300”
' Pobranie wszystkich przekrojów z programu RFEMDim crscs ()As RFEM5.Cross Sectioncrscs = iModelData.GetCrossSections
' Pętla po wszystkich przekrojachDim crsc_nrJak długocrsc_no = -1Dim iJak długoJeżeli chcesz zadać krótkie pytanie techniczne, i = 0To UBound(crscs, 1) ' Jeżeli opis przekroju jest poprawny, należy zapisać numer przekrojuIf InStr(LCase(crsc(i).Description), LCase(crsc_desc)) > 0Wtedy crsc_no = crscs(i).No Wyjdź poEnd IfNastępny i
' Zamykanie programu, jeżeli nie znaleziono żądanego przekrojuIf crsc_no = -1WtedyErr.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 zeroDim mems_strJako ciągmems_str = vbanullstr
' Pozyskaj wszystkie pręty z RFEMDim mem ()As RFEM5.Membermems = iModelData.GetMembers
' Pętla nad wszystkimi prętamiJeż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ńcuchuIf mems(i).EndCrossSectionNo = crsc_noWtedyIf mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNoWtedy mems_str = mems_str & mems (i).No & ","End IfEnd IfNastępny i
' Zakończ program, jeżeli nie znaleziono prętaIf mems_str = vbanullstrWtedyErr.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łuDim iStec3As STEEL_EC3.ModuleUstawić iStec3 = iModel.GetModule ("STEEL_EC3")
Następnie usuwane są wszystkie istniejące przypadki modułów:
' Uzyskaj liczbę istniejących przypadków modułówDim liczyćJak długoCount = iStec3.moGetCaseCount
'Jeżeli występują przypadki, w tabeli należy usuwać zawsze pierwszyIf liczba > 0WtedyJeżeli chcesz zadać krótkie pytanie techniczne, i = 0To ilość - 1 iStec3.moDeleteCase i, AT_INDEXNastępny iEnd 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.ICaseUstawić 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_FUNDAMENTALiStec3_uls_loads (0) .No = 1iStec3_uls_loads (0). Typ = ILOAD_GROUP
iStec3_uls_loads (1) .DesignSituation = DS_FUNDAMENTALiStec3_uls_loads (1) .No = 2iStec3_uls_loads (1) .Type = ILOAD_GROUP
iStec3_uls_loads(2) .DesignSituation = DS_FUNDAMENTALiStec3_uls_loads (2) .No = 3iStec3_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.