COM-интерфейс в VBA | 2.1 Создание члена

Техническая статья

В первой части серии статей об интерфейсе COM рассказывалось об открытии и создании модели в RFEM. Вторая часть объясняет создание и изменение элементов на примере члена. Элементы, описанные в части 1, не будут объяснены здесь снова.

основы

Стержень в RFEM состоит из нескольких элементов, которые более или менее зависят друг от друга. Если один из этих элементов отсутствует, персонал не может быть создан. Следующая иерархия должна соблюдаться.

1 - элементная иерархия персонала

Чтобы иметь возможность создавать такой элемент, интерфейс (англ .: Interface) для структурных данных (англ .: Structural Data) должен быть выбран:

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

Этот интерфейс, наконец, позволяет передавать данные в RFEM.

Режим редактирования

Как только данные будут изменены или созданы в RFEM, RFEM должен быть переключен в режим обработки. В этом режиме, например, никакие вычисления не могут быть выполнены, и перенесенные данные также доступны только после завершения. Чтобы переключиться на обработку, необходимо использовать метод PrepareModification (), а для выхода из FinishModification ():

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

Создать элементы

Целью является изготовление стержня с сечением IPE 100, из конструкционной стали S235, из точки P0 (0,0,0) в точку P1 (1,0,0). Для этого необходимо сначала создать узлы. В следующем примере используется массив, поскольку он обеспечивает наибольшую гибкость для дальнейших изменений программы:

' 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

Как упоминалось ранее, массив данных узла затем передается в методах PrepareModification () и FinishModification (). Для нумерации важен следующий факт: если передан новый элемент и номер, указанный в нем, уже существует, то существующие элементы не перезаписываются, а элемент добавляется в конец списка. При вводе нуля элемент автоматически устанавливается на следующую вакансию.

Создание линий аналогично небольшой разнице в том, что здесь, конечно, на узлы следует ссылаться. Список узлов передается в виде строки, как в 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

Изменить элементы

Создание поперечного сечения в первую очередь требует создания материала. В новой модели RFEM материалы из последней созданной модели всегда используются первыми. Чтобы убедиться, что используется нужный материал, все существующие материалы должны быть сначала удалены или изменены. Удаление всех существующих материалов и создание нового материала - самый простой способ. В отличие от создания новых элементов, при удалении или изменении необходимо учитывать интерфейс отдельных элементов. Для этого выполните следующие действия:

' 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

Интерфейс материала извлекается либо по номеру материала (AtNo), либо по индексу в списке всех материалов. В отличие от номера материала, индекс начинается с нуля и не имеет пробелов.

Отделка персонала

Теперь, когда все материалы удалены, можно создать новый материал. Как и в RFEM, материал может быть адресован непосредственно из библиотеки материалов по имени. Для этого введите соответствующую символьную строку, используя свойство TextID (подробнее см. RF-COM-5.chm в 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

Как и в случае RFEM, спецификации поперечного сечения в начале стержня достаточно, и концевое соединение стержня не нужно создавать, но оно автоматически считается жестким.

оптимизация

Ранее режим редактирования вызывался для каждого списка элементов в отдельности. Чтобы увеличить скорость обработки, вы можете передать все элементы в режиме редактирования. Исключением являются удаление материалов и создание нового материала. Здесь необходимо использовать два отдельных блока, потому что элементы не могут быть удалены и созданы внутри блока:

' 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

Резюме и перспективы

Представленные процедуры формируют основу для всех структурных элементов, которые могут быть решены с помощью COM. Исключение составляют нелинейные концевые соединения стержней или узловые подшипники, которые содержат дополнительные вложения. По этой причине в будущих статьях будут рассмотрены эти элементы.

Загрузки

Ссылки

Контакты

Свяжитесь с Dlubal

У вас есть какие-либо вопросы или необходим совет?
Свяжитесь с нами через бесплатную поддержку по электронной почте, в чате или на форуме или найдите различные предлагаемые решения и полезные советы на страницах часто задаваемых вопросов.

+49 9673 9203 0

info@dlubal.com

RFEM Основная программа
RFEM 5.xx

Основная программа

Программное обеспечение для расчета конструкций методом конечных элементов (МКЭ) плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек, стержней (балок), тел и контактных элементов

Цена первой лицензии
3 540,00 USD
RFEM Прочие
RF-COM 5.xx

Дополнительный модуль

Программируемый интерфейс (API), основанный на технологии COM

Цена первой лицензии
580,00 USD