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

Artigo técnico

As partes 4.1 e 4.2 da série tratam da otimização de um quadro com a ajuda do módulo adicional RF- / STEEL EC3. A quinta parte abrange a conexão do módulo e a recuperação de barras relevantes. Os elementos que já foram explicados nas partes anteriores não serão discutidos novamente.

Fig. 01 - Sistema

Filtrar as barras relevantes

O objetivo deve ser que apenas hastes de uma certa seção transversal sejam tomadas no dimensionamento do módulo EC3. Para o exemplo a seguir, todas as barras com a seção "IPE 300" devem ser filtradas. Para este propósito, primeiro todas as seções transversais do programa principal são buscadas:

' Zeichenkette des gewünschten Querschnitts anlegen
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Alle Querschnitte aus RFEM holen
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Schleife über alle Querschnitte
Dim crsc_no As Long
crsc_no = -1
DimAs Long
For i = 0 To UBound(crscs, 1)
' Wenn die Querschnittsbezeichung stimmt, Querschnittsnummer speichern
If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
crsc_no = crscs(i).No
Exit For
End If
Next i

' Programm beenden, wenn der gewünschte Querschnitt nicht gefunden wurde
If crsc_no = -1 Then
Err.Raise 513, "Get cross-section number" , "No cross-section with "" " & crsc_desc & " "" within its description found!"
End If

O ajuste da designação transversal deve ser o mais geral possível. Para este propósito, a designação da seção cruzada, bem como a cadeia de caracteres a ser pesquisada, é primeiro definida como letras minúsculas via "LCase" e, em seguida, pesquisada a sequência de caracteres na designação da seção transversal. Se nenhuma seção cruzada correspondente foi encontrada, o número da seção cruzada permanece em -1, o que pode ser consultado e confirmado com uma interrupção.

Após este passo, o número da seção transversal é conhecido e as barras com este número de seção transversal podem ser pesquisadas. Apenas as barras devem ser tomadas, as quais têm essa seção transversal no início e no final:

' Zeichenkette für Stabliste anlegen und zu null setzen
Dim mems_str As String
mems_str = vbanullstr

' Alle Stäbe aus RFEM holen
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Schleife über alle Stäbe
For i = 0 To UBound(mems, 1)
' Wenn ein Stab diese Querschnittsnummer am Anfang und am Ende hat,
' dann wird dessen Nummer in die Zeichenkette übernommen
If mems(i).EndCrossSectionNo = crsc_no Then
If mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNo Then
mems_str = mems_str & mems(i).No & ","
End If
End If
Next i

' Programm beenden, wenn kein Stab gefunden wurde
If mems_str = vbanullstr Then
Err.Raise 514, "Get members" , "No member with cross-section "" " & crsc_desc & " "" found!"
End If

Obtenha a interface do módulo adicional

A ligação a um módulo é como a ligação ao RFEM ou ao RSTAB. A única diferença é que não há distinção entre abrir uma instância já aberta ou abrir uma nova instância, pois há sempre uma instância já aberta:

' Interface für Modul holen
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule( "STEEL_EC3" )

Als nächstes werden alle vorhandenen Modulfälle gelöscht:

' Anzahl der vorhandenen Modulfälle holen
Dim count As Long
count = iStec3.moGetCaseCount

' Falls Fälle vorhanden sind, immer den ersten in der Tabelle löschen
If count > 0 Then
For i = 0 To count - 1
iStec3.moDeleteCase i, AT_INDEX
Next i
End If

Em seguida, o caso desejado pode ser criado e as barras do desenho podem ser inseridas por meio da string criada anteriormente:

' Modulfall "Optimization" anlegen
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization" )

' Stäbe für Bemessung setzen
iStec3Case.moSetMemberList mems_str

Finalmente, as combinações de carga desejadas são adicionadas:

' Lastkombinationen setzen
Dim iStec3_uls_loads(0 To 2) As 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 Outlook

Os procedimentos apresentados aqui são representativos de todos os módulos que podem ser controlados com COM. O código-fonte e o arquivo do Excel ajudam a entender melhor o assunto. No próximo artigo, iremos aprofundar e criar o link 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