Interfejs COM w VBA | 2.1 Tworzenie członka

Artykuł o tematyce technicznej

Pierwsza część serii artykułów na temat interfejsu COM opisywała otwieranie i tworzenie modelu w programie RFEM. Druga część wyjaśnia tworzenie i modyfikowanie elementów na przykładzie członka. Elementy opisane w części 1 nie zostaną tu ponownie wyjaśnione.

Podstawy

Pręt w programie RFEM składa się z kilku elementów, które zależą mniej więcej od siebie. Jeśli brakuje jednego z tych elementów, nie można utworzyć personelu. Należy przestrzegać następującej hierarchii.

1 - Hierarchia elementów personelu

Aby móc utworzyć taki element, należy pobrać interfejs (angielski: interfejs) dla danych strukturalnych (angielski: dane strukturalne):

' Interface für Modelldaten holen.
Dim iModelData As iModelData
Set iModelData = iModel.GetModelData()

Interfejs ten w końcu umożliwia przesyłanie danych do programu RFEM.

Tryb edycji

Po zmianie danych lub utworzeniu ich w programie RFEM program RFEM musi zostać przełączony w tryb przetwarzania. W tym trybie na przykład nie można wykonać obliczeń, a przesłane dane są dostępne tylko po zakończeniu. Aby przełączyć się na przetwarzanie, należy użyć metody PrepareModification () i opuścić FinishModification ():

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
' ...
iModelData.FinishModification

Twórz elementy

Celem jest wytworzenie pręta o przekroju IPE 100, stali konstrukcyjnej S235, od punktu P0 (0,0,0) do punktu P1 (1,0,0). W tym celu najpierw należy utworzyć węzły. Poniższy przykład używa tablicy, ponieważ zapewnia największą elastyczność dla dalszych zmian programu:

' Knoten anlegen.
Dim nodeList(0 To 1) As RFEM5.Node
nodeList(0).RefObjectNo = 0
nodeList(0).No = 1
nodeList(0).X = 0#
nodeList(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 wcześniej, tablica danych węzłów jest następnie przekazywana za pomocą metod PrepareModification () i FinishModification (). Dla numerowania ważny jest następujący fakt: Jeśli nowy element jest przesyłany i liczba w nim określona już istnieje, to istniejące elementy nie są nadpisywane, ale element jest dołączany na końcu listy. Po wprowadzeniu zera element jest automatycznie ustawiany na następny wakat.

Tworzenie linii jest analogiczne z niewielką różnicą, że tutaj oczywiście należy odwoływać się do węzłów. Lista węzłów jest przekazywana jako ciąg znaków, tak jak w programie RFEM:

' Linien anlegen.
Dim lineList(0 To 0) As RFEM5.Line
lineList(0).nodeList = "1,2"
lineList(0).Type = LineType.PolylineType

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetLines lineList
iModelData.FinishModification

Zmień elementy

Utworzenie przekroju wymaga najpierw utworzenia materiału. W nowym modelu programu RFEM materiały z ostatnio utworzonego modelu są zawsze używane jako pierwsze. Aby upewnić się, że żądany materiał jest używany, wszystkie istniejące materiały muszą zostać najpierw usunięte lub zmienione. Usunięcie wszystkich istniejących materiałów i stworzenie nowego materiału jest najłatwiejszym sposobem. W przeciwieństwie do tworzenia nowych elementów, podczas usuwania lub zmiany należy zaadresować interfejs poszczególnych elementów. Aby to zrobić, wykonaj następujące czynności:

' Anzahl der vorhandenen Materialien holen.
Dim num As Integer
num = iModelData.GetMaterialCount

' Schleife über vorhandene Materialien.
iModelData.PrepareModification
DimAs Integer
For i = 0 To num - 1
' Schnittstelle zum Material holen.
Dim iMat As RFEM5.IMaterial
Set iMat = iModelData.GetMaterial(i, AtIndex)
' Material löschen.
iMat.Delete
Next i
iModelData.FinishModification

Interfejs materiału jest pobierany przez numer materiału (AtNo) lub przez indeks na liście wszystkich materiałów. W przeciwieństwie do numeru materiału indeks zaczyna się od zera i nie ma luk.

Finish staff

Po usunięciu wszystkich materiałów można utworzyć nowy materiał. Podobnie jak w programie RFEM, materiał można również zaadresować bezpośrednio z biblioteki materiałów według jego nazwy. Aby to zrobić, wprowadź odpowiedni ciąg znaków przy użyciu właściwości TextID (szczegółowe informacje zawiera sekcja RF-COM-5.chm w zestawie SDK):

' Neues Material aus Bibliothek anlegen.
Dim mats(0 To 0) As RFEM5.Material
mats(0).TextID = "NameID|Baustahl S 235@TypeID|STEEL@NormID|DIN EN 1993-1-1-10"
mats(0).No = 1

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetMaterials mats
iModelData.FinishModification
Ebenso wie das Material wird auch der Querschnitt angelegt. Zusätzlich wird noch die Materialnummer angegeben:
' Neuen Querschnitt aus Bibliothek anlegen.
Dim crs(0 To 0) As RFEM5.CrossSection
crs(0).TextID = "IPE 100"
crs(0).MaterialNo = 1
crs(0).No = 1

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Da nun alle Elemente für den Stab angelegt wurden, kann jetzt der Stab übergeben werden:
' Neuen Stab anlegen.
Dim mems(0 To 0) As RFEM5.Member
mems(0).LineNo = 1
mems(0).StartCrossSectionNo = 1
mems(0).No = 1

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification
iModelData.SetMembers mems
iModelData.FinishModification

Podobnie jak w programie RFEM, specyfikacja przekroju na początku pręta jest wystarczająca, a przegub końcówki pręta nie musi być tworzony, ale automatycznie zakłada się, że jest sztywny.

optymalizacja

Poprzednio tryb edycji był wywoływany indywidualnie dla każdej listy artykułów. Aby zwiększyć szybkość przetwarzania, możesz przekazać wszystkie elementy w trybie edycji. Wyjątkiem są usuwanie materiałów i tworzenie nowego materiału. Należy użyć dwóch oddzielnych bloków, ponieważ elementów nie można usunąć i utworzyć w bloku:

' Elemente im Bearbeitungsmodus löschen.
iModelData.PrepareModification
DimAs Integer
For i = 0 To num - 1
' Schnittstelle zum Material holen.
Dim iMat As RFEM5.IMaterial
Set iMat = iModelData.GetMaterial(i, AtIndex)
' Material löschen.
iMat.Delete
Next i
iModelData.FinishModification

' Elemente im Bearbeitungsmodus übergeben.
iModelData.PrepareModification

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

iModelData.FinishModification

Podsumowanie i Outlook

Przedstawione procedury stanowią podstawę wszystkich elementów strukturalnych, które można rozwiązać za pomocą COM. Wyjątkiem są nieliniowe połączenia przegubowe lub łożyska węzłowe, które zawierają dodatkowe gniazda. Z tego powodu nadchodzące uwagi będą dotyczyły tych elementów.

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

Moduł dodatkowy

Programowalny interfejs (API) w oparciu o technologię COM

Cena pierwszej licencji
580,00 USD