Interfejs COM w VBA | 2.1 Tworzenie pręta

Artykuł o tematyce technicznej

Artykuł został przetłumaczony przez Google Translator

Podgląd oryginalnego tekstu

Pierwsza część serii artykułów poświęcona interfejsowi COM opisała otwieranie i tworzenie modelu w programie RFEM. W drugiej części objaśniono tworzenie i modyfikowanie elementów na przykładzie pręta. Elementy opisane w części 1 nie będą tutaj ponownie omawiane.

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.

Rysunek 01 - Element Hierarchia pręta

Aby możliwe było utworzenie takiego elementu, należy uzyskać interfejs dla danych konstrukcyjnych:

'Uzyskaj interfejs dla danych modelu.
Dim iModelData Jak 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 w tryb edycji. Na przykład w tym trybie nie można przeprowadzać ż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 Do 1)Jak 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, tablica zawierająca dane węzła jest przesyłana za pomocą metod PrepareModification () i FinishModification (). W przypadku numeracji istotny jest następujący fakt: W przypadku przenoszenia nowego elementu, który zawiera już numery referencyjne, istniejące elementy nie są nadpisywane, ale element jest dodawany 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 niewielką różnicą 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 Do 0) Jak 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łatwiejszym sposobem jest usunięcie wszystkich istniejących materiałów i utworzenie nowego materiału. W przeciwieństwie do tworzenia nowych elementów, w przypadku usunięcia lub modyfikacji należy aktywować interfejs poszczególnych elementów. 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 Do liczba - 1
'Interfejs z materiałem.
Dim iMat Jak 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 poprzez indeks na liście wszystkich materiałów. W przeciwieństwie do numeru materiału, indeks rozpoczyna się od zera i nie ma przerw.

Pręt wykończeniowy

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

'Utworzyć nowy materiał z biblioteki materiałów.
Dim maty (0 Do 0) Jak 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 Do 0) Jak 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 Do 0) Jak 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 w tym przypadku wystarczy określić przekrój na początku pręta. Nie jest konieczne tworzenie zwolnienia końcowego pręta, ponieważ automatycznie przyjmuje 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ątek stanowią usuwanie materiałów i tworzenie nowych materiałów. W takim przypadku należy użyć dwóch oddzielnych bloków, ponieważ nie można usunąć i utworzyć elementów w jednym bloku:

'Usunąć elementy w trybie edycji.
iModelData.PrepareModification
Dim IJako liczba całkowita
Dla i = 0 Do liczba - 1
'Interfejs z materiałem.
Dim iMat Jak 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ę wszystkich elementów konstrukcyjnych, które mogą być przenoszone przez COM. Wyjątkiem są nieliniowe zwolnienia prętowe lub podpory węzłowe, które zawierają dodatkowe zagnieżdżenie. Elementy te zostaną wyjaśnione w kolejnych artykułach z tej serii.

Do pobrania

Linki

Kontakt

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 Inne
RF-COM 5.xx

Moduł dodatkowy

Programowalny interfejs (API) w oparciu o technologię COM

Cena pierwszej licencji
580,00 USD