Interface COM no VBA | 2.1 Criando barra

Artigo técnico

Este artigo foi traduzido pelo Google Tradutor Ver texto original

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 num exemplo de uma barra. Os elementos descritos na Parte 1 não serão explicados aqui novamente.

Noções básicas

Uma barra no RFEM é composta por vários elementos que são mais ou menos dependentes entre si. Se um desses elementos estiver ausente, o membro não pode ser criado. A seguinte hierarquia deve ser observada.

Figura 01 - 1 - Estrutura do elemento do membro
Dim iModelData Como iModelData
Definir iModelData = iModel.GetModelData ()

Finalmente, esta interface permite transferir dados para o RFEM.

O modo de edição

Assim que os dados forem alterados ou criados no RFEM, o RFEM deve ser alterado para um modo de edição. Neste modo, por exemplo, não é possível realizar um cálculo e os dados transferidos apenas estão disponíveis após a saída. Para mudar para o processamento, utilize o método PrepareModification () e para sair de FinishModification ():

'Transferir elementos no modo de edição.
iModelData.PrepareModification
'...
iModelData.FinishModification

Criando elementos

O objetivo é criar uma barra com a seção IPE 100, aço macio S235, do ponto P0 (0,0,0) ao ponto P1 (1,0,0). Para isso, os nós devem ser criados primeiro. No exemplo a seguir, uma matriz é usada porque representa a maior flexibilidade para alterações adicionais do programa:

'Criar nó.
Dim nodeList (0 Para 1) Como 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 já mencionado acima, a matriz com os dados do nó é transferida nos métodos PrepareModification () e FinishModification (). O seguinte fato é importante para a numeração: Se um novo elemento é transferido e o número especificado já existe, os elementos existentes não são substituídos, mas os elementos são adicionados ao final da lista. Ao inserir um zero, o elemento é automaticamente movido para a próxima posição livre.

As linhas são criadas da mesma maneira, com a pequena diferença de que os nós precisam ser referenciados. Tal como no RFEM, a lista de nós é transferida como uma cadeia:

'Criar linhas.
Dim lineList (0 Para 0) Como RFEM5.Line
lineList (0) .nodeList = "1.2"
lineList (0) .Type = LineType.PolylineType

'Transferir elementos no modo de edição.
iModelData.PrepareModification
iModelData.SetLines lineList
iModelData.FinishModification

Modificar elementos

Criar primeiro a seção requer a criação do material. Num novo modelo do RFEM, os materiais do último modelo criado são sempre utilizados primeiro. Para garantir que o material desejado seja utilizado, é necessário primeiro excluir ou alterar todos os materiais existentes. Excluir todos os materiais existentes e criar um novo material é a maneira mais fácil. Ao contrário da criação de novos elementos, a interface dos elementos individuais deve ser abordada ao excluir ou modificar. Para o fazer, proceda da seguinte forma:

'Obter o número de materiais disponíveis.
Dim num Como Inteiro
num = iModelData.GetMaterialCount

'Laço sobre os materiais existentes.
iModelData.PrepareModification
Dim eu Como Inteiro
Para i = 0 Para num - 1
'Obter interface para o material.
Dim IMAT Como RFEM5.IMaterial
Definir iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Próximo I
iModelData.FinishModification

Para obter a interface de um material, use o número do material (AtNo) ou o í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 intervalos.

Terminar a barra

Agora que todos os materiais foram eliminados, pode ser criado um novo material. Assim como no RFEM, você pode acessar o material diretamente da biblioteca de materiais pelo seu nome. Para fazer isso, insira a string correspondente usando a propriedade TextID (para obter detalhes, consulte RF-COM-5.chm no SDK):

'Criar novo material a partir da biblioteca.
Dim tapetes (0 Para 0) Como RFEM5.Material
tapetes (0) .TextID = "NameID | Aço estrutural S 235 @ TypeID | STEEL @ NormID | DIN EN 1993-1-1-10"
tapetes (0) .No = 1

'Transferir elementos no modo de edição.
iModelData.PrepareModification
Tapetes de iModelData.SetMaterials
iModelData.FinishModification
Como o material, a seção também é criada. Além disso, o número do material também é especificado:
'Criar nova seção a partir da biblioteca.
Dim crs (0 Para 0) Como RFEM5.CrossSection
crs (0) .TextID = "IPE 100"
crs (0) .MaterialNo = 1
crs (0) .No = 1

'Transferir elementos no modo de edição.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Como todos os elementos foram criados para o membro, agora você pode transferir o membro:
'Criar novo membro.
Dim mems (0 Para 0) Como RFEM5.Membro
mems (0) .LineNo = 1
mems (0) .StartCrossSectionNo = 1
mems (0) .No = 1

'Transferir elementos no modo de edição.
iModelData.PrepareModification
iModelData.SetMembers mems
iModelData.FinishModification

Tal como no RFEM, é suficiente especificar a secção no início da barra e a articulação da barra não tem de ser criada, mas é assumida automaticamente como rígida.

Otimização

Anteriormente, o modo de edição era aberto individualmente para cada lista de elementos. Para aumentar a velocidade de processamento, pode transferir todos os elementos dentro de um modo de edição. Exceções são a eliminação de materiais e a criação de novos materiais. Aqui, tem de utilizar dois blocos separados porque os elementos não podem ser eliminados e criados dentro de um bloco:

'Eliminar elementos no modo de edição.
iModelData.PrepareModification
Dim eu Como Inteiro
Para i = 0 Para num - 1
'Obter interface para o material.
Dim IMAT Como RFEM5.IMaterial
Definir iMat = iModelData.GetMaterial (i, AtIndex)
'Eliminar material.
iMat.Delete
Próximo I
iModelData.FinishModification

'Transferir elementos no modo de edição.
iModelData.PrepareModification

iModelData.SetNodes nodeList
iModelData.SetLines lineList
Tapetes de iModelData.SetMaterials
iModelData.SetCrossSections crs
iModelData.SetMembers mems

iModelData.FinishModification

Resumo e perspetiva

Os procedimentos apresentados formam a base para todos os elementos estruturais que podem ser tratados através de COM. Uma exceção são as libertações das extremidades das barras não lineares ou os apoios nodais, que contêm aninhamento adicional. Por esse motivo, esses elementos serão discutidos em artigos futuros.

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