2162x
001379
2016-12-20

Interface COM em VBA | 2.1 Criar uma barra

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.

Noções básicas

Uma barra no RFEM é constituída por vários elementos que são mais ou menos dependentes um do outro. Se um desses elementos estiver faltando, a barra não pode ser criada. A seguinte estrutura tem de ser respeitada.

Para poder criar este tipo de elemento, tem de obter a interface para os dados estruturais:

'Obter interface para os dados do modelo.
Escuro iModelData As iModelData

Definir iModelData = iModel.GetModelData ()

Esta interface permite-lhe transferir finalmente os dados para o RFEM.

Modo de edição

Assim que os dados no RFEM tiverem de ser alterados ou criados, o RFEM tem de ser alterado para o modo de edição. Por exemplo, é impossível realizar cálculos neste modo e os dados transferidos apenas estão disponíveis após sair do modo. É necessário utilizar o método PrepareModification () para alternar para o modo de edição e FinishModification () para sair do modo:

'Transfere elementos para o modo de edição.
iModelData.PrepareModification
'...
iModelData.FinishModification

Criar elementos

O objetivo é criar uma barra com a secção IPE 100 e aço estrutural S235 do ponto P0 (0,0,0) ao ponto P1 (1,0,0). Primeiro, é necessário criar nós. No exemplo seguinte, é utilizada uma matriz, uma vez que representa a maior flexibilidade para novas alterações do programa:

'Criar nós.
Escuro 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

Conforme mencionado acima, a matriz incluindo os dados do nó é transferida utilizando os métodos PrepareModification () e FinishModification (). Para numeração, é importante o seguinte fato: Quando é necessário transferir um novo elemento que já inclui os números de referência, os elementos existentes não são substituídos, mas o elemento é adicionado no final da lista. Se introduzir um zero, o elemento é definido automaticamente para a próxima localização livre.

O processo de criação de linhas é semelhante, com a pequena diferença de referir -se aos nós, é claro. A lista de nós é transferida como uma string exatamente como no RFEM:

'Criar linhas.
Escuro lineList (0 To 0) As RFEM5.Line
lineList (0) .nodeList = "1,2"
lineList (0) .Type = LineType.PolylineType

'Transfere elementos para o modo de edição.
iModelData.PrepareModification
iModelData.SetLines lineList
iModelData.FinishModification

Elementos de modificação

Para criar uma secção, é necessário criar primeiro um material. Num novo modelo do RFEM, os materiais do modelo criado anteriormente são sempre utilizados primeiro. Para garantir a utilização do material relevante, é necessário eliminar ou alterar todos os materiais existentes. Eliminar todos os materiais existentes e criar um novo material é a forma mais fácil, neste caso. Em contraste com a criação de novos elementos, a interface dos elementos individuais tem de ser ativada no caso de uma eliminação ou alteração. Os passos são os seguintes:

'Obter número de materiais existentes.
Escuro num Como Inteiro
num = iModelData.GetMaterialCount

'Laço sobre os materiais existentes.
iModelData.PrepareModification
Escuro iComo Inteiro
Para i = 0 To num - 1
'Obter interface para o material.
Escuro iMat As RFEM5.IMaterial
Definir iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Next i
iModelData.FinishModification

Pode obter a interface de um material através do número do material relevante (AtNo) ou através do índice na lista de todos os materiais. Ao contrário do número do material, o índice inicia no zero e não tem espaços.

Conclusão da barra

Após eliminar todos os materiais, pode criar um novo material. Tal como no RFEM, também aqui é possível transferir o material diretamente da biblioteca de materiais utilizando o seu nome. Para tal, é introduzida a string correspondente utilizando a propriedade TextID (para mais detalhes, ver RF -COM 5.chm no SDK):

'Criar novo material a partir da biblioteca de materiais.
Escuro tapetes (0 To 0) As RFEM5.Material
tapetes (0) .TextID = "NomeID | Aço S 235 @ TypeID | STEEL @ StandardID | DIN EN 1993-1-1-10"
tapetes (0) .No = 1

'Transfere elementos para o modo de edição.
iModelData.PrepareModification
iModelData.SetMaterials tapetes
iModelData.FinishModification
É criada uma secção da mesma forma que o material. Além disso, o número do material é especificado:
'Criar nova secção a partir da biblioteca.
Escuro crs (0 To 0) As RFEM5.CrossSection
crs (0) .TextID = "IPE 100"
crs (0) .MaterialNo = 1
crs (0) .No = 1

'Transfere elementos para o modo de edição.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Uma vez que todos os elementos da barra foram criados, a barra pode ser transferida agora:
'Criar nova barra.
Escuro mems (0 To 0) As Membro do RFEM5.
mems (0) .LineNo = 1
mems (0) .StartCrossSectionNo = 1
mems (0) .No = 1

'Transfere elementos para o modo de edição.
iModelData.PrepareModification
iModelData.SetMembers mems
iModelData.FinishModification

Tal como no RFEM, também é suficiente especificar aqui a secção no início da barra. Não é necessário criar uma libertação de extremidade da barra, uma vez que é assumida automaticamente como rígida.

Otimização

Até agora, o modo de edição foi recuperado para cada elemento individualmente. Para aumentar a velocidade do processamento de dados, pode transferir todos os elementos para um modo de edição, As exceções são a eliminação de materiais e a criação de novos materiais. Neste caso, tem de utilizar dois blocos separados, uma vez que é impossível eliminar e criar elementos dentro de um bloco:

'Eliminar elementos no modo de edição.
iModelData.PrepareModification
Escuro iComo Inteiro
Para i = 0 To num - 1
'Obter interface para o material.
Escuro iMat As RFEM5.IMaterial
Definir iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Next i
iModelData.FinishModification

'Transfere elementos para o modo de edição.
iModelData.PrepareModification

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

iModelData.FinishModification

Resumo e perspetiva

Os procedimentos explicados neste artigo constituem a base para todos os elementos estruturais que podem ser transferidos através de COM. As libertações de barra não lineares ou apoios nodais, que incluem aninhamento adicional, são exceções. Esses elementos serão explicados nos seguintes artigos desta série.


Autor

O Eng. Günthel opera na área do apoio técnico para clientes.

Ligações
Downloads


;