Interface COM no VBA | 2.1 Criando Membro

Artigo técnico

A primeira parte da série de artigos sobre a interface COM descreveu a abertura e criação de um modelo no RFEM. A segunda parte explica a criação e modificação de elementos em um exemplo de um membro. Os elementos descritos na Parte 1 não serão explicados aqui novamente.

Basics

Uma haste no RFEM consiste em vários elementos, que dependem mais ou menos uns dos outros. Se um desses elementos estiver faltando, a equipe não poderá ser criada. A seguinte hierarquia deve ser observada.

1 - Hierarquia de elementos de uma equipe

Para poder criar tal elemento, a interface (Inglês: Interface) para os dados estruturais (Inglês: Dados Estruturais) deve ser obtida:

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

Esta interface permite finalmente a transferência de dados para o RFEM.

O modo de edição

Assim que os dados tiverem de ser alterados ou criados no RFEM, o RFEM deve ser comutado para um modo de processamento. Neste modo, por exemplo, nenhum cálculo pode ser executado e os dados transferidos também estão disponíveis somente após a rescisão. Para mudar para o processamento, o método PrepareModification () deve ser usado e para deixar o FinishModification ():

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

Crie elementos

O objetivo é produzir uma haste com a seção IPE 100, aço estrutural S235, do ponto P0 (0,0,0) para o ponto P1 (1,0,0). Para isso, os nós devem primeiro ser criados. O exemplo a seguir usa uma matriz porque fornece a maior flexibilidade para outras alterações no programa:

' 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

Como mencionado anteriormente, a matriz de dados do nó é passada nos métodos PrepareModification () e FinishModification (). O seguinte fato é importante para a numeração: Se um novo elemento for transferido e o número especificado nele já existir, os elementos existentes não serão sobrescritos, mas o elemento será anexado ao final da lista. Ao inserir um zero, o elemento é automaticamente definido para a próxima vaga.

A criação das linhas é análoga à pequena diferença de que, naturalmente, os nós devem ser referenciados. A lista de nós é passada como uma string, assim como no 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

Alterar elementos

A criação da seção transversal primeiro requer a criação do material. Em um novo modelo RFEM, os materiais do último modelo criado são sempre usados primeiro. Para garantir que o material desejado seja usado, todos os materiais existentes devem ser primeiro excluídos ou alterados. A eliminação de todos os materiais existentes e a criação de um novo material é a maneira mais fácil. Em contraste com a criação de novos elementos, ao excluir ou alterar, a interface dos elementos individuais deve ser endereçada. Para fazer isso, proceda da seguinte maneira:

' 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

A interface de um material é recuperada por meio de seu número de material (AtNo) ou do índice na lista de todos os materiais. Ao contrário do número do material, o índice começa em zero e não tem lacunas.

Acabamento pessoal

Agora que todos os materiais foram excluídos, um novo material pode ser criado. Assim como no RFEM, o material também pode ser endereçado diretamente da biblioteca de materiais pelo seu nome. Para fazer isso, insira a cadeia de caracteres correspondente usando a propriedade TextID (para obter detalhes, consulte RF-COM-5.chm no 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

Tal como no RFEM, a especificação da secção transversal no início da barra é suficiente e a junta da extremidade da haste não precisa de ser criada, mas assume-se automaticamente como rígida.

otimização

Anteriormente, o modo de edição era chamado individualmente para cada lista de itens. Para aumentar a velocidade de processamento, você pode passar todos os elementos dentro de um modo de edição. As exceções são a exclusão dos materiais e a criação do novo material. Dois blocos separados devem ser usados aqui porque os elementos não podem ser excluídos e criados dentro de um bloco:

' 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

Resumo e Outlook

Os procedimentos apresentados formam a base para todos os elementos estruturais que podem ser abordados via COM. Uma exceção são as juntas de rótula não lineares ou rolamentos nodais, que contêm aninhamentos adicionais. Por esta razão, as próximas contribuições abordarão esses elementos.

Downloads

Ligações

Contacto

Contacto da Dlubal

Tem alguma questão ou necessita de ajuda? Então entre em contacto com a nossa equipa de apoio técnico gratuita por e-mail, chat ou no fórum, ou então consulte as perguntas mais frequentes (FAQ).

+49 9673 9203 0

(falamos português)

info@dlubal.com

RFEM Programa principal
RFEM 5.xx

Programa principal

Software de engenharia estrutural para análises de elementos finitos (AEF) de estruturas planas e espaciais constituídas por lajes, paredes, vigas, sólidos e elementos de contacto

Preço de primeira licença
3.540,00 USD
RFEM Outros
RF-COM 5.xx

Módulo adicional

Interface programável (API) com base na tecnologia COM

Preço de primeira licença
580,00 USD