1029x
001571
2020-07-20

[PT] KB 001639 | Transformação de nervura em modelo de superfície com barra resultante utilizando VBA

Tema:
Transformação de nervura em modelo de superfície com barra resultante utilizando VBA

Notas:
Se uma nervura faz parte de um dimensionamento não linear ou está rigidamente ligada às paredes seguintes, deve ser utilizada uma superfície para a modelação em vez de uma barra. Para que a nervura ainda possa ser dimensionada como uma barra, é necessária uma barra resultante com a excentricidade correta, que transforma as forças internas da superfície em forças internas da barra.

Descrição:
Uma vez que a modelação de uma nervura com base na superfície com a barra de resultados é significativamente mais complicada do que criar uma barra do tipo nervura, o programa seguinte no EXCEL-VBA converterá a nervura com base em barra num modelo de superfície incluindo a barra de resultados.

Para transformar uma nervura num modelo de superfície, são necessários os seguintes passos:

1.
Ler parâmetros da nervura (secção, orientação etc.)
2.
Criar superfície de nervura
3.
criar uma barra de resultados
4.
Eliminar a barra de nervura

A seguir, mostraremos excertos do código fonte completo como exemplos. Pode fazer o download do código completo no final deste artigo.

Ler os parâmetros da nervura

Tem a opção de selecionar a nervura a ser transformada, selecionando-a na interface do programa. Para isso, é necessário trabalhar com a funçãoEnableSelections. EnquantoEnableSelections estiver ativado com verdadeiro, apenas os elementos selecionados são lidos do RFEM. A leitura da barra selecionada tem o seguinte aspeto.

' obter interface do modelo ativo
Set iMod = iApp.GetActiveModel

' obter interface dos dados do modelo (estrutural)
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData

' obter a barra selecionada
iModData.EnableSelections True

Dim mems() As RFEM5.Member
Dim selMem As RFEM5.Member
mems = iModData.GetMembers
selMem = mems(0)

iModData.EnableSelections Falso

São necessários os seguintes parâmetros para a modelação da nervura:

Secção da nervura, números de superfícies e larguras efetivas
Orientação da nervura
Material da nervura

No RFEM, uma nervura é um tipo de barra. Quando utiliza a programação através da interface COM, tem de obter os dados de uma nervura através de duas interfaces diferentes. Por um lado, existe a interface para a barra e, por outro lado, existe a interface para a nervura. A interface para uma nervura pode ser obtida através de IModelData.GetRib. GetRib espera o número da nervura contida na barra através de Member.RibNo.

' get parâmetros da nervura
' ###################
Dim iRb como RFEM5.IRib
Definir iRb = iModData.GetRib (selMem.RibNo, AtNo)

Dim selRb as RFEM5.Rib
selRb = iRb.GetData

Dim rbCrsc As RFEM5.RibCrossSection
rbCrsc = iRb.GetRibCrossSection

A interface com a nervura oferece dois elementos diferentes: os dados gerais da nervura através da estrutura da nervura e os dados da secção da nervura através da Nervura. Nervura contém os números da superfície, a posição da nervura e a largura efectiva. RibCrossSection contém a descrição e as dimensões da secção da nervura interna, que também é utilizada pelo RF-CONCRETE Members (ITCU).

Além disso, é necessária a orientação, que está disponível através do sistema de eixos local da barra. O sistema de eixos é acedido através da interface para a barra. A função IMemer.GetLocalCoordinateSystem devolve a estrutura CoordinateSystem.

Dim cosy As RFEM5.CoordinateSystem
CoordinateSystem(0#).GetData

GetLocalCoordinateSystem ainda espera a posição x da barra que foi definida como 0,0 ou o início aqui. Além dos parâmetros mencionados, também é necessário o material da barra, o qual pode ser obtido através da secção da barra.

Dim selCrsc As RFEM5.CrossSection
selCrsc = iModData.GetCrossSection (selMem.StartCrossSectionNo, AtNo).GetData

Criar superfície de nervura

O programa é criado inicialmente apenas para nervuras retas no lado positivo z. Uma vez que a nervura também pode estar em planos oblíquos, a superfície deve ser criada utilizando a orientação da barra. A variável cosy para o sistema de eixos local da barra inclui o vetor de direção para o eixo z local cosy.AxisZ com os seus três valores x, y e z. Este vetor é normalizado de modo que, multiplicado pela altura da nervura, represente a distância e a direção da borda inferior da nervura. Para as linhas de fronteira da superfície da nervura, este vector é multiplicado pela altura da nervura e adicionado aos nós inicial e final. Isto resulta nos dois nós de extremidade da linha de extremidade inferior da superfície da nervura. Note o seguinte: a altura da nervura também inclui metade da espessura da superfície da largura efetiva. Para simplificação, apenas é utilizada a espessura da superfície do primeiro lado (-y no sistema de eixos local) a partir da secção da nervura (UpperLeftFlange Thickness). Após os nós estarem disponíveis, pode ser gerada a borda...