2168x
001379
2016-12-20

Interfejs COM w VBA | 2.1 Tworzenie pręta

Im ersten Teil der Serie ging es um das Öffnen und Erstellen eines Modells in RFEM. Im zweiten Teil soll es am Beispiel eines Stabes um das Anlegen und Verändern von Elementen gehen. Die Elemente aus Teil 1 werden daher nicht erneut angesprochen.

Informacje ogólne

Pręt w programie RFEM składa się z kilku elementów, które są mniej lub bardziej od siebie zależne. W przypadku braku jednego z tych elementów nie można utworzyć pręta. Należy przestrzegać następującej struktury.

Aby móc utworzyć ten typ elementu, należy pozyskać interfejs dla danych konstrukcyjnych:

'Uzyskaj interfejs dla danych modelu.
Dim iModelData As iModelData

Ustawić iModelData = iModel.GetModelData ()

Interfejs ten umożliwia przeniesienie danych do programu RFEM.

Tryb edycji

Po zmodyfikowaniu lub utworzeniu danych w programie RFEM należy przełączyć program RFEM do trybu edycji. Przykładowo, w tym trybie nie można przeprowadzić żadnych obliczeń, a przesłane dane są dostępne dopiero po wyjściu z tego trybu. Aby przełączyć do trybu edycji, należy użyć metody PrepareModification (), a funkcji FinishModification () -

'Przenieść elementy do trybu edycji.
iModelData.PrepareModification
„...
iModelData.FinishModification

Tworzenie elementów

Celem jest utworzenie pręta o przekroju IPE 100 i stali konstrukcyjnej S235 od punktu P0 (0,0,0) do punktu P1 (1,0,0). Najpierw należy utworzyć węzły. W poniższym przykładzie użyta jest tablica, która zapewnia najwyższą elastyczność dla dalszych modyfikacji programu:

'Utworzyć węzły.
Dim węzłówList (0 To 1)As RFEM5.Node
nodeList (0) .RefObjectNo = 0
węzełLista (0) .No = 1
nodeList (0) .X = 0 #
węzełLista (0) .Y = 0 #
nodeList (0) .Z = 0 #

nodeList (1) .RefObjectNo = 0
nodeList (1) .No = 2
nodeList (1) .X = 1 #
nodeList (1) .Y = 0 #
nodeList (1) .Z = 0 #

iModelData.PrepareModification
iModelData.SetNodes nodeList
iModelData.FinishModification

Jak wspomniano powyżej, macierz wraz z danymi węzła jest przenoszona przy użyciu metod PrepareModification () oraz FinishModification (). W przypadku numeracji istotny jest następujący fakt: W przypadku, gdy ma zostać przeniesiony nowy element, który zawiera już numery referencyjne, istniejące elementy nie są nadpisywane, ale dodawany jest na końcu listy. Jeżeli wprowadzona zostanie wartość zero, element zostanie automatycznie ustawiony w następnej wolnej lokalizacji.

Proces tworzenia linii jest podobny, z tą różnicą, że oczywiście w odniesieniu do węzłów. Lista węzłów jest przenoszona jako ciąg znaków dokładnie tak, jak w programie RFEM:

'Utworzyć linie.
Dim lineList (0 To 0) As RFEM5.Line
lineList (0) .nodeList = „1,2”
lineList (0) .Type = LineType.PolylineType

'Przenieść elementy do trybu edycji.
iModelData.PrepareModification
iModelData.SetLines lineList
iModelData.FinishModification

Modyfikacja elementów

Aby utworzyć przekrój, należy najpierw utworzyć materiał. W nowym modelu programu RFEM materiały z utworzonego wcześniej modelu są zawsze wykorzystywane jako pierwsze. Aby zapewnić wykorzystanie odpowiedniego materiału, należy usunąć lub zmienić wszystkie istniejące materiały. W tym przypadku najłatwiej jest usunąć wszystkie istniejące materiały i utworzyć nowy materiał. W przeciwieństwie do tworzenia nowych elementów, interfejs poszczególnych elementów musi zostać aktywowany w przypadku usunięcia lub modyfikacji. Kroki są następujące:

„Uzyskaj liczbę istniejących materiałów.
Dim nr Jako liczba całkowita
num = iModelData.GetMaterialCount

„Pętla nad istniejącymi materiałami.
iModelData.PrepareModification
Dim iJako liczba całkowita
Dla i = 0 To liczba - 1
'Interfejs z materiałem.
Dim iMat As RFEM5.IMaterial
Ustawić iMat = iModelData.GetMaterial (i, AtIndex)
„Usunąć materiał.
iMat.Delete
Następny i
iModelData.FinishModification

Interfejs materiału można uzyskać za pomocą odpowiedniego numeru materiału (AtNo) lub za pomocą indeksu na liście wszystkich materiałów. W przeciwieństwie do numeru materiału, indeks rozpoczyna się od zera i nie ma przerw.

Ukończenie pręta

Po usunięciu wszystkich materiałów można utworzyć nowy materiał. Podobnie jak w programie RFEM, istnieje również możliwość przeniesienia materiału bezpośrednio z biblioteki materiałów przy użyciu jego nazwy. W tym celu należy wprowadzić odpowiedni ciąg znaków za pomocą właściwości TextID (więcej informacji można znaleźć w RF ‑ COM 5.chm w SDK):

'Utworzyć nowy materiał z biblioteki materiałów.
Dim maty (0 To 0) As RFEM5. Materiał
maty (0) .TextID = "NazwaID | Stal S 235 @ TypeID | STEEL @ StandardID | DIN EN 1993-1-1-10"
maty (0). nr = 1

'Przenieść elementy do trybu edycji.
iModelData.PrepareModification
iModelData.SetMaterials maty
iModelData.FinishModification
Przekrój jest tworzony w taki sam sposób, jak w przypadku materiału. Dodatkowo określa się numer materiału:
'Utworzyć nowy przekrój z biblioteki.
Dim crs (0 To 0) As RFEM5.CrossSection
crs (0) .TextID = „IPE 100”
crs (0) .MaterialNo = 1
crs (0) .No = 1

'Przenieść elementy do trybu edycji.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Ponieważ wszystkie elementy pręta zostały utworzone, pręt można teraz przenieść:
'Utworzyć nowy pręt.
Dim mem (0 To 0) As RFEM5.Member
mems (0) .Linia nr = 1
mems (0) .StartCrossSectionNo = 1
mem (0). nr = 1

'Przenieść elementy do trybu edycji.
iModelData.PrepareModification
iModelData.SetMembers mems
iModelData.FinishModification

Podobnie jak w programie RFEM, tutaj również wystarczy określić przekrój na początku pręta. Nie ma potrzeby tworzenia zwolnienia na końcu pręta, ponieważ automatycznie zakłada się, że jest ono sztywne.

Optymalizacja

Do tej pory dla każdego elementu pobierany był tryb edycji osobno. Aby zwiększyć szybkość przetwarzania danych, można przenieść wszystkie elementy w jednym trybie edycji, Wyjątkami są usuwanie materiałów i tworzenie nowych materiałów. W takim przypadku należy użyć dwóch oddzielnych bloków, ponieważ nie można usuwać i tworzyć elementów w jednym bloku:

'Usunąć elementy w trybie edycji.
iModelData.PrepareModification
Dim iJako liczba całkowita
Dla i = 0 To liczba - 1
'Interfejs z materiałem.
Dim iMat As RFEM5.IMaterial
Ustawić iMat = iModelData.GetMaterial (i, AtIndex)
„Usunąć materiał.
iMat.Delete
Następny i
iModelData.FinishModification

'Przenieść elementy do trybu edycji.
iModelData.PrepareModification

iModelData.SetNodes nodeList
iModelData.SetLines lineList
iModelData.SetMaterials maty
iModelData.SetCrossSections crs
iModelData.SetMembers mems

iModelData.FinishModification

Podsumowanie i przegląd

Procedury wyjaśnione w tym artykule stanowią podstawę dla wszystkich elementów konstrukcyjnych, które mogą być przenoszone przez COM. Wyjątek stanowią nieliniowe zwolnienia prętów lub podpory węzłowe, które obejmują dodatkowe zagnieżdżenie. Elementy te zostaną wyjaśnione w kolejnych artykułach z tej serii.


Autor

Pan Günthel zapewnia wsparcie techniczne klientom firmy Dlubal Software i zajmuje się ich zapytaniami.

Odnośniki
Pobrane


;