Interfaz COM en VBA | 4.1 Optimización de estructuras

Artículo técnico

Las partes 4.1 y 4.2 de esta serie de artículos describen la optimización de una estructura utilizando el módulo adicional RF-/STEEL EC3. La quinta parte explica cómo vincular el módulo y obtener las barras correspondientes. Los elementos ya explicados en las partes anteriores no se describen de nuevo.

Figura 01 - Sistema

Filtrado de las barras relevantes

El objetivo es transferir únicamente las barras de una determinada sección al cálculo de RF-/STEEL EC3. En el ejemplo siguiente, se deben filtrar todas las barras con la sección de IPE 300. Para ello, primero es necesario obtener todas las secciones del programa principal:

' Create a string of a desired cross‑section
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Get all cross-sections from RFEM
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Lopp over all cross-sections
Dim crsc_no As Long
crsc_no = -1
Dim i As Long
For i = 0 To UBound(crscs, 1)
 ' If the cross-section description is right, save the cross-section number
 If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
  crsc_no = crscs(i).No
  Exit For
 End If
Next i

' Quit the program if the desired cross-section was not found
If crsc_no = -1 Then
 Err.Raise 513, "Get cross-section number", "No cross-section with "" " & crsc_desc & " "" within its description found!"
End If

La descripción de la sección se debe sincronizar de la forma más general posible. Para ello, la descripción de la sección así como la cadena que se buscará se establece primero en letras minúsculas mediante 'LCase', y luego se busca la cadena en la descripción de la sección. Si no se encuentra una sección adecuada, el número de la sección permanece en -1, que luego se puede solicitar y confirmar mediante una anulación.

Después de este paso, se conoce el número de sección y se pueden buscar las barras con este número de sección. Sólo se debe adoptar la barra con esta sección al inicio y el final de la misma:

' Create string for the list of members and set it to zero
Dim mems_str As String
mems_str = vbanullstr

' Get all members from RFEM
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Lopp over all members
For i = 0 To UBound(mems, 1)
 ' If a member has this cross-section number at the start and the end,
 ' then take this number in the string
 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

' Quit the program if no member was found
If mems_str = vbanullstr Then
 Err.Raise 514, "Get members", "No member with cross-section "" " & crsc_desc & " "" found!"
End If

Obtención de la interfaz del módulo adicional

El enlace a un módulo es exactamente el mismo que el enlace a RFEM o RSTAB. La única diferencia es que no hay diferencia entre abrir una instancia ya abierta o abrir una instancia nueva, debido a que siempre hay una instancia ya abierta:

' Get interface for the module
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule("STEEL_EC3")

A continuación, se eliminan todos los casos de módulo existentes:

' Get number of existing module cases
Dim count As Long
count = iStec3.moGetCaseCount

' If there are any cases, always delete the first one in the table
If count > 0 Then
 For i = 0 To count - 1
  iStec3.moDeleteCase i, AT_INDEX
 Next i
End If

Ahora puede crear el caso deseado e introducir la barra que desea calcular utilizando la cadena creada anteriormente.

' Create the 'Optimization' module case
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization")

' Set members for design
iStec3Case.moSetMemberList mems_str

Last but not least, you can enter the desired load combinations:

' Set load combinations
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

Resumen y descripción general

Los procedimientos descritos en este artículo se pueden usar para todos los módulos que se pueden controlar mediante COM. El código fuente y el archivo Excel son útiles para que pueda comprender mejor el tema en cuestión. En nuestro próximo artículo, nos gustaría profundizar en este asunto y explicar el vínculo entre los elementos en el módulo y en el programa principal.

Descargas

Enlaces

Contacte con nosotros

Contacte con Dlubal Software

¿Tiene preguntas o necesita asesoramiento?
Contacte con nosotros a través de nuestro servicio de asistencia gratuito por correo electrónico, chat o fórum, o encuentre varias soluciones sugeridas y consejos útiles en nuestra página de preguntas más frecuentes (FAQ).

+34 911 438 160

info@dlubal.com

RFEM Programa principal
RFEM 5.xx

Programa principal

Software de ingeniería estructural de análisis por elementos finitos (AEF) para sistemas estructurales planos o espaciales compuestos de barras, placas, muros, láminas, sólidos y elementos de contacto

Precio de la primera licencia
3.540,00 USD
RFEM Estructuras de acero y aluminio
RF-STEEL EC3 5.xx

Módulo adicional

Cálculo de barras de barras de acero según Eurocódigo 3

Precio de la primera licencia
1.480,00 USD
RFEM Otros
RF-COM 5.xx

Módulo adicional

Interfaz programable (API) basada en tecnología COM

Precio de la primera licencia
580,00 USD