Interface COM no VBA | 4.1 Otimização de quadros

Artigo técnico

Este artigo foi traduzido pelo Google Tradutor Ver texto original

As secções 4.1 e 4.2 desta série de artigos descrevem a optimização de uma trama utilizando o módulo adicional RF- / STEEL EC3 . A quinta parte explica como ligar o módulo e obter as barras relevantes. Os elementos já explicados nas partes anteriores não são descritos novamente.

Figura 01 - Sistema
Dim crsc_desc As String
crsc_desc = "IPE 300"

'Obter todas as secções do RFEM
Dim crscs () Como RFEM5.CrossSection
crscs = iModelData.GetCrossSections

'Laço sobre todas as secções
Dim crsc_no As Long
crsc_no = -1
Dim eu As Long
Para i = 0 Para UBound (crscs, 1)
'Se a descrição da seção estiver correta, salve o número da seção
Se InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0 Então
crsc_no = crscs (i) .Não
Sair para
Terminar se
Próximo I

'Saia do programa se a secção desejada não foi encontrada
Se crsc_no = -1 Então
Err.Raise 513, "Obter número da seção", "Sem secção com" "" & crsc_desc & "" dentro da sua descrição encontrada! "
End If

A descrição da seção deve ser comparada o mais genericamente possível. Para tal, primeiro utilize "LCase" para definir a descrição da secção e a sequência a ser pesquisada em letras minúsculas e, em seguida, procure a sequência na descrição da secção. Se nenhuma seção adequada foi encontrada, o número da seção permanece em -1, que pode ser consultado e cancelado.

Após esta etapa, o número da seção é conhecido e as barras com esse número da seção podem ser pesquisadas. Apenas as barras com esta secção no início e no fim devem ser transferidas:

'Criar string para lista de membros e definido como zero
Dim mems_str As String
mems_str = vbanullstr

«Obter todos os membros do RFEM
Dim mems () Como RFEM5.Membro
mems = iModelData.GetMembers

'Laço sobre todos os membros
Para i = 0 Para UBound (mems, 1)
'Se uma barra tiver este número de secção no início e no fim,
'então seu número é transferido para a string
Se mems (i) .EndCrossSectionNo = crsc_no Então
Se mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNo Então
mems_str = mems_str & mems (i). Não & ","
Terminar se
Terminar se
Próximo I

'Finalize o programa se nenhum membro foi encontrado
Se mems_str = vbanullstr Então
Err.Raise 514, "Obter membros", "Nenhum elemento com secção" "" & crsc_desc & "" "encontrado!"
End If

Obter interface do módulo adicional

A ligação a um módulo é igual à ligação ao RFEM ou RSTAB. A única diferença é que não existe diferença entre abrir uma instância já aberta ou abrir uma nova instância porque sempre existe uma instância já aberta:

'Obter interface para o módulo
Dim iStec3 Como STEEL_EC3.Modules
Definir iStec3 = iModel.GetModule ("STEEL_EC3")

Em seguida, eliminamos todos os casos de módulos existentes:

'Obter o número de casos de módulos existentes
Dim contagem As Long
count = iStec3.moGetCaseCount

'Se existirem casos, elimine sempre o primeiro da tabela
Se contagem> 0 Então
Para i = 0 Para contagem - 1
iStec3.moDeleteCase i, AT_INDEX
Próximo I
End If

Em seguida, é possível criar o caso desejado e inserir as barras para o desenho usando a string criada anteriormente:

Caixa do módulo 'Criar' Otimização '
Dim iStec3Case Como STEEL_EC3.ICase
Definir iStec3Case = iStec3.moSetCase (1, "Otimização")

'Definir barras para dimensionamento
iStec3Case.moSetMemberList mems_str

Por fim, insira as combinações de casos de carga desejadas:

'Definir combinações de carga
Dim iStec3_uls_loads (0 Para 2) Como STEEL_EC3.ULS_LOAD

iStec3_uls_loads (0) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (0) .No = 1
iStec3_uls_loads (0) .Type = ILOAD_GROUP

iStec3_uls_loads (1) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (1) .No = 2
iStec3_uls_loads (1) .Type = ILOAD_GROUP

iStec3_uls_loads (2) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (2) .No = 3
iStec3_uls_loads (2) .Type = ILOAD_GROUP

iStec3Case.moSetULSLoads iStec3_uls_loads

Resumo e perspetiva

Os procedimentos mostrados aqui são representativos de todos os módulos que podem ser controlados com COM. O código fonte e o ficheiro Excel ajudam-no a compreender melhor o tópico. No próximo artigo, irei aprofundar e criar a conexão entre os elementos no módulo e no programa principal.

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 Estruturas de Aço
RF-STEEL EC3 5.xx

Módulo adicional

Dimensionamento de barras em aço de acordo com o Eurocódigo 3

Preço de primeira licença
1.480,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